多媒体交互应用基础(8)

问题一:如何加载外部图片

Flash 制作多媒体的时候,经常要使用到外部加载图片,swf文件等这些都是一些常用性的需要我们去解决的问题。Adobe flash as 为我们提供了一个Loader 类帮助我们解决这些相关的问题;

 

Loader 类可用于加载 SWF 文件或图像(JPGPNG GIF)文件。

LoaderInfo 类可提供有关已加载的 SWF 文件或图像文件(JPEGGIF PNG)的信息。

 

  1. package 
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.events.*;
  5.     import flash.display.Loader;
  6.     import flash.net.URLRequest;
  7.     public class Example extends MovieClip
  8.     {
  9.         public function Example()
  10.         {
  11.             init();
  12.         }
  13.         private function init():void
  14.         {
  15.             var _loader:Loader=new Loader();
  16.             addChild(_loader);
  17.             _loader.load(new URLRequest("1.jpg"));
  18.             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
  19.             _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
  20.         }
  21.         private function loadhander(e:Event):void
  22.         {
  23.             trace("加载成功");
  24.         }
  25.         private function Iohander(e:IOErrorEvent):void
  26.         {
  27.             trace("加载错误");
  28.         }
  29.     }
  30. }

加载完之后,我们尝试看看增加多一个跟踪事件

trace(e.target.content);

 

输出的结果是:

加载成功

[object Bitmap]

 

显然返回一个位图对象

 

修改一下代码看看结果如何:

 

  1. private function init():void
  2.         {
  3.             var _loader:Loader=new Loader();
  4.             _loader.load(new URLRequest("1.jpg"));
  5.             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
  6.             _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
  7.         }
  8.         private function loadhander(e:Event):void
  9.         {
  10.             trace("加载成功");
  11.             trace(e.target.content);
  12.             var image:Bitmap= e.currentTarget.content as Bitmap;
  13.             //var bitmap:BitmapData=image.bitmapData;
  14.             addChild(image);
  15.              
  16.             
  17.             
  18.         }

同样显示出图片。只是加载后返回的信息是一个位图,这样我们就可以对位图进行一些操作和交互效果

问题二:被加载的对象如何进行交互?

看看位图类的继承关系:Bitmap 》DisplayObjectEventDispatcherObject

这里Bitmap对象是不支持鼠标事件,因此要将其转换成我们支持的对象。因此需要我们进行一些设置。我们新建MovieClip对象,将我们所需要的对象加人显示清单,并将其添加到mc对象的子级显示列表里面。

 

InteractiveObject 类是用户可以使用鼠标和键盘与之交互的所有显示对象的抽象基类。

  1. package 
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.events.*;
  5.     import flash.display.Loader;
  6.     import flash.net.URLRequest;
  7.     import flash.display.Bitmap;
  8.     public class Example extends MovieClip
  9.     {
  10.         public function Example()
  11.         {
  12.             init();
  13.         }
  14.         private function init():void
  15.         {
  16.             var _loader:Loader=new Loader();
  17.             _loader.load(new URLRequest("1.jpg"));
  18.             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
  19.             _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
  20.         }
  21.         private function loadhander(e:Event):void
  22.         {
  23.             trace("加载成功");
  24.             trace(e.target.content);
  25.             var image:Bitmap= e.currentTarget.content as Bitmap;
  26.             //var bitmap:BitmapData=image.bitmapData;
  27.             var mc:MovieClip=new MovieClip();
  28.             mc.addChild(image);
  29.             addChild(mc);
  30.             mc.addEventListener(MouseEvent.CLICK,onClick);
  31.              
  32.         }
  33.         private function Iohander(e:IOErrorEvent):void
  34.         {
  35.             trace("加载错误");
  36.         }
  37.         private function onClick(e:MouseEvent):void
  38.         {
  39.             trace("你点击了我");
  40.         }
  41.     }
  42. }

这里就是一些简单的交互效果,通过鼠标或者键盘进行更加丰富的交互效果

 

转载于:https://www.cnblogs.com/guoyiqi/archive/2009/01/04/2069449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值