问题一:如何加载外部图片
Flash 制作多媒体的时候,经常要使用到外部加载图片,swf文件等这些都是一些常用性的需要我们去解决的问题。Adobe flash as 为我们提供了一个Loader 类帮助我们解决这些相关的问题;
Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件。
LoaderInfo 类可提供有关已加载的 SWF 文件或图像文件(JPEG、GIF 或 PNG)的信息。
- package
- {
- import flash.display.MovieClip;
- import flash.events.*;
- import flash.display.Loader;
- import flash.net.URLRequest;
- public class Example extends MovieClip
- {
- public function Example()
- {
- init();
- }
- private function init():void
- {
- var _loader:Loader=new Loader();
- addChild(_loader);
- _loader.load(new URLRequest("1.jpg"));
- _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
- _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
- }
- private function loadhander(e:Event):void
- {
- trace("加载成功");
- }
- private function Iohander(e:IOErrorEvent):void
- {
- trace("加载错误");
- }
- }
- }
加载完之后,我们尝试看看增加多一个跟踪事件
trace(e.target.content);
输出的结果是:
加载成功
[object Bitmap]
显然返回一个位图对象
修改一下代码看看结果如何:
- private function init():void
- {
- var _loader:Loader=new Loader();
- _loader.load(new URLRequest("1.jpg"));
- _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
- _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
- }
- private function loadhander(e:Event):void
- {
- trace("加载成功");
- trace(e.target.content);
- var image:Bitmap= e.currentTarget.content as Bitmap;
- //var bitmap:BitmapData=image.bitmapData;
- addChild(image);
- }
同样显示出图片。只是加载后返回的信息是一个位图,这样我们就可以对位图进行一些操作和交互效果
问题二:被加载的对象如何进行交互?
看看位图类的继承关系:Bitmap 》DisplayObject》 EventDispatcher》 Object
这里Bitmap对象是不支持鼠标事件,因此要将其转换成我们支持的对象。因此需要我们进行一些设置。我们新建MovieClip对象,将我们所需要的对象加人显示清单,并将其添加到mc对象的子级显示列表里面。
InteractiveObject 类是用户可以使用鼠标和键盘与之交互的所有显示对象的抽象基类。
- package
- {
- import flash.display.MovieClip;
- import flash.events.*;
- import flash.display.Loader;
- import flash.net.URLRequest;
- import flash.display.Bitmap;
- public class Example extends MovieClip
- {
- public function Example()
- {
- init();
- }
- private function init():void
- {
- var _loader:Loader=new Loader();
- _loader.load(new URLRequest("1.jpg"));
- _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadhander);
- _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,Iohander);
- }
- private function loadhander(e:Event):void
- {
- trace("加载成功");
- trace(e.target.content);
- var image:Bitmap= e.currentTarget.content as Bitmap;
- //var bitmap:BitmapData=image.bitmapData;
- var mc:MovieClip=new MovieClip();
- mc.addChild(image);
- addChild(mc);
- mc.addEventListener(MouseEvent.CLICK,onClick);
- }
- private function Iohander(e:IOErrorEvent):void
- {
- trace("加载错误");
- }
- private function onClick(e:MouseEvent):void
- {
- trace("你点击了我");
- }
- }
- }
这里就是一些简单的交互效果,通过鼠标或者键盘进行更加丰富的交互效果