Loader类在开发Flex应用中非常有用。在应用中,使用Loader类可以动态加载外部的资源到当前应用中。外部的资源包括SWF文件和图片文件。在使用Loader类加载外部资源的时候,还会用到URLRequest类和Event类。
q URLResquest类的作用是定位要加载的资源。URLRequest属于flash.net包。
q Event是一个事件监听类,作用是监听事件以及响应事件调用的函数。Event属于flash.events包。
整个使用Loader类加载外部资源的过程如下。
(1)新建一个Flex项目,命名为“LoaderStu”。
(2)打开对应的LoaderStu.mxml文件,修改LoaderStu.mxml文件。内容如下代码所示。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" click="loadpic()">
<mx:Script>
<![CDATA[
//导入需要的类包
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
//声明Loader类
private var pictLdr:flash.display.Loader = new flash.display.Loader();
//声明资源所在位置,以字符串形式出现
private var pictURL:String = "http://p15.freep.cn/p.aspx?u=v20_p15_p_0712302014213796_0.gif";
//声明URLRequest对象
private var pictURLReq:flash.net.URLRequest = new flash.net.URLRequest(pictURL);
//声明Sprite实例作为容器
private var container:Sprite = new Sprite();
//加载图片函数
private function loadpic():void
{
//通过Loader加载图片
pictLdr.load(pictURLReq);
//将容器添加到舞台上
stage.addChild(container);
//添加监听事件,当加载内容结束后调用事件
pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
}
//加载结束后调用函数
private function imgLoaded(e:Event):void
{
//将加载的图片添加到Sprite容器中,
container.addChild(pictLdr.content);
}
]]>
</mx:Script>
</mx:Application>
在上面的代码中,通过Loader对象加载一个指定URL位置的资源。这个指定的位置通过URLRequest对象指定。同时通过pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);添加事件监听。事件监听器会在后面的章节详细讲解。
这样,当应用运行时,单击舞台后,调用loadpic函数。在loadpic函数中,加载图片,并向stage(舞台)添加一个容器。添加一个事件监听用来相应加载图片结束的事件。加载图片结束后调用imageLoaded函数加载图片到容器中,。
注意:加载图片是个异步过程。也就是说执行加载图片的代码后,马上会执行下一行代码。所以要通过事件监听相应加载完成事件。
(3)保存并运行Loader应用,如图所示。单击舞台如图所示。