|
|
|||||
Регистрация: Jan 2008
Сообщений: 36
|
Странный баг лоадера
Существует система из 4-х классов:
Document.as - главный класс приложения A.as - класс свфки A.swf B.as - класс свфки B.swf ExtLoader.as - класс, создающий композицию со стандартным классом Loader Итак главная флешка с помощью обычного лоадера грузить в себя A.swf, та в свою очередь с помощью ExtLoader класса грузит B.swf. Внимание, тут начинается самое интересное: Если при компиляции главной флешки включить в нее класс ExtLoader, то флешка A.swf загружает B.swf и не может привести ее к классу B. Если в главную флешку не компилировать класс ExtLoader - все нормально =\ Класс Document.as import flash.display.Loader; import flash.display.MovieClip; import flash.events.Event; import flash.net.URLRequest; //import ru.isky.multiloader.DataLoader; /** * @author ign */ public class Document extends MovieClip { private var loader : Loader; public function Document() { ExtLoader; //trace(getDefinitionByName('ru.isky.test::A')); //trace(getDefinitionByName('ru.isky.test::B')); loader = new Loader(); loader.load(new URLRequest('A.swf')); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onItemLoaded); } private function onItemLoaded(event : Event) : void { //trace(getDefinitionByName('ru.isky.test::A')); loader.content['load'](); } } import flash.net.URLRequest; import flash.events.EventDispatcher; import flash.display.Loader; import flash.events.Event; /** * @author ign */ public class ExtLoader extends EventDispatcher { private var request : URLRequest; public var loader : Loader; public function ExtLoader(url : String) { super(); request = new URLRequest(url); } public function load() : void { loader = new Loader(); try { loader.load(request); //startTime = getTimer(); } catch(loader_error : Error) { //error(loader_error); } loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadFile); } private function onLoadFile(event : Event) : void { dispatchEvent(new Event(Event.COMPLETE)); } } import flash.display.MovieClip; import flash.events.Event; /** * @author ign */ public class A extends MovieClip { private var exloader : ExtLoader; public function A() { trace("A CONSTRUCTOR"); } public function load() : void { trace("A.load( : " + arguments + ")"); exloader = new ExtLoader('B.swf'); exloader.addEventListener(Event.COMPLETE, loaderComplete); exloader.load(); } private function loaderComplete(e : Event) : void { trace('is B:', exloader.loader.content is B); } } import flash.display.MovieClip; /** * @author ign */ public class B extends MovieClip { public function B() { trace("B CONSTRUCTOR"); super(); } } h t t p ://slil.ru/25496050 |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
LoaderContext, ApplicationDomain
|
|
|||||
Регистрация: Jan 2008
Сообщений: 36
|
Благодарю.
|
Часовой пояс GMT +4, время: 17:21. |
|
« Предыдущая тема | Следующая тема » |
|
|