AS3 加载文件

    xiaoxiao2021-03-25  91

     import flash.events.*;  import flash.display.Loader;  import flash.net.URLRequest;  import flash.net.URLLoader;  import flash.net.URLVariables;

    要先导入以上包

    加载资源方法

    URLRequest的资源可以是图片,文本,swf 等

    private var subLoader:Loader; private function InitLoder():void { subLoader = new Loader(); subLoader.load(new URLRequest("Koala.jpg")); subLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); subLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); } private function progressHandler(event:ProgressEvent):void { trace("文件已经加载:"+(event.bytesLoaded/event.bytesTotal*100).toFixed(2)+"%"); } private function completeHandler(event:Event):void { trace("文件已经加载完成"); addChild(subLoader); }

    若加载后需要读取内容,如简单文本或xml,需要使用URLLoader类

    文本内容:name=Jack&age=22

    XML内容:

    <?xml version="1.0" encoding="UTF-8"?> <root> <name>Jack</name> <age>11</age> </root> public function Test() { var loader:URLLoader = new URLLoader(); loader.load(new URLRequest("words.txt")); loader.addEventListener(Event.COMPLETE,loadCompleteHandler); InitLoder(); } private function loadCompleteHandler(event:Event):void { var parms:URLVariables=new URLVariables(event.currentTarget.data); //var parms:XML=new XML(event.currentTarget.data); //xml文件 trace(parms.name+" "+parms.age); }

    虽然2种loader的完成事件参数都是event,但是用Loader类的事件不能得到currentTarget.data,尝试得到会抛出异常

    Loader类加载一个flash资源后可以通过contentLoaderInfo.applicationDomain.getDefinition反射得到内部类,从而可以减小主文件的大小,并且多个swf共享资源

    例:

    import flash.display.Sprite; import flash.display.MovieClip; import flash.display.SimpleButton; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class MainForm extends Sprite{ private var loader:Loader; private var myMc:MovieClip; private var myBtn:SimpleButton; public function MainForm(){ loader = new Loader(); loader.load(new URLRequest("library.swf")); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); } public function completeHandler(event:Event){ myMc = getLibMc("MyMc"); addChild(myMc); myBtn = getLibBtn("MyBtn"); addChild(myBtn); myBtn.x=100; myBtn.y=100; } public function getLibMc(name:String):MovieClip{ var classReference = (loader.contentLoaderInfo.applicationDomain.getDefinition(name) as Class); return ((new (classReference) as MovieClip)); } public function getLibBtn(name:String):SimpleButton{ var classReference = (loader.contentLoaderInfo.applicationDomain.getDefinition(name) as Class); return ((new (classReference) as SimpleButton)); } }
    转载请注明原文地址: https://ju.6miu.com/read-39671.html

    最新回复(0)