·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

as2中加载图片控制(异步加载)

时间:2011-08-23 17:43CuPlayer.com
很多人出现flash加载外部图片而不能控制显示大小的问题,导致这样问题的原因其实是因为flash在加载图片是采用渐进式的方式,在图片没有加载完成的时候,flash是不知道你的图片的大小的和尺寸的属性的

  很多人出现flash加载外部图片而不能控制显示大小的问题,导致这样问题的原因其实是因为flash在加载图片是采用渐进式的方式,在图片没有加载完成的时候,flash是不知道你的图片的大小的和尺寸的属性的。所以你在程序中即时加入控制大小的代码也无法控制图片。因为代码往往在图片还没有加载完之前就执行了,也就是说你的代码是找不到执行的对象的。所以使用_width和_height代码是无效的。而_xscale和_yscale可以执行但是因为是按照百分比计算的,所以也不能控制不同大小的图片最后显示同样大小的尺寸。

  解决办法:
  loadClip代码,我想你应该也是知道的, loadClip代码就是解决这个问题的最佳人选了。loadMovie属于初级代码,它没有侦听器这样的属性,因此无法捕捉到文件的属性(大小,尺寸)。因此我们不推荐使用这个代码,如果你的flash只是用于本机播放的,不存在网络延迟那么也就无所谓的了,但是如果你要控制加载图片的大小,那么还是需要用loadClip即时你的flash是本地播放的,因为即时加载本地的图片,加载图片的时间肯定也是滞后于代码执行的,因此我们选用 loadClip代码,作为加载外部文件的最佳代码。

  我们看以下它侦听器的各项属性:(我这里就讲一个了)

  onLoadInit
  属性是用于检测文件状态属性的
  这个属性非常的重要,因为它能告诉你图片的各项属性,也就是只有这个时候你才能知道文件的尺寸大小。你可以试一下trace(MC._width)是不是就是图片的大小。如果是,就证明图片已经加载完毕,并且你可以通过程序去控制它的大小了。
 

  1. onLoadInitfunction(target_mc:MovieClip){  
  2. target_mc._width=100;  
  3. target_mc._height=100;  

  看看是不是加载近来的图片就是100像素*100像素的显示了,你可以通过程序自由控制加载近来的图片大小了。

  延伸代码,如何让你的图片可以宽是100像素而高是等比缩放的呢?
 

  1. onLoadInit = function(target_mc:MovieClip){  
  2. target_mc._height=(100*target_mc._height)/target_mc._width;  
  3. target_mc._width=100;   


  target_mc._height=(100*target_mc._height)/target_mc._width;
  放在上面很重要的哦,千万不要这样放:
 

  1. target_mc._width=100;  
  2. target_mc._height=(100*target_mc._height)/target_mc._width; 

  这样你的高肯定不是等比率的。

  通过以上讲解是不是可以啦!

  参考flash帮助文档,我弄了个简单的实验效果,大家可以直接复制粘贴
 

  1. this.createEmptyMovieClip("image_mc", this.getNextHighestDepth());  
  2. var mclListener:Object = new Object();  
  3. mclListener.onLoadInit = function(target_mc:MovieClip) {  
  4. target_mc._width = 100;  
  5. target_mc._height = 100 
  6. };  
  7. var image_mcl:MovieClipLoader = new MovieClipLoader();  
  8. image_mcl.addListener(mclListener);  
  9. image_mcl.loadClip("http://www.cuplayer.com/flash/images/image1.jpg", image_mc); 

  可以测试代码效果
 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器