![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2009
Сообщений: 64
|
Доброе всем время суток.
Такая проблема. Загружаю внешнюю swf (клас Elem extends Loader), в которой несколько children-ов. Затем мне необходимо клонировать эту swf - ку. Делаю так: ................ public var bytes:ByteArray; //Байты swf-ки. Чтобы потом создавать копии объекта public function Elem() { } public function LoadSWFElem(Iurl:String) { var urlRequest:URLRequest = new URLRequest(Iurl); this.url = Iurl; contentLoaderInfo.addEventListener(Event.COMPLETE, CompleteLoadObj); load(urlRequest); } private function CompleteLoadObj(e:Event) { //Загрузили объект e.target.removeEventListener(Event.COMPLETE, CompleteLoadObj); bytes = e.target.bytes; } Затем создаю новый объект типа Loader и в нем загружаю bytes исходного elem: Затем делаю addChild(myClass); Все замечательно... загружается вся swf - ка. НО: хочу добавть только чилдрен этой swf - ки, получается лажа... Пишет что чилдренов у нее нету(myClass.numChildren = 0). В чем может быть дело??? |
|
|||||
|
[+1 02.07.09]
Регистрация: Jun 2009
Сообщений: 39
|
import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.Loader; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; public class Xxx extends Sprite { private var mySWF:Object; public function Xxx() { loadSWF("http://blablabla.ru/someSWF.swf"); } private function loadSWF(swfURL:String):void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener (Event.INIT, loaderInitHandler); loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, loaderProgressHandler); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loaderIOErrorHandler); loader.load (new URLRequest(swfURL)); } private function loaderInitHandler (e:Event):void { e.target.removeEventListener (Event.INIT, loaderInitHandler); e.target.removeEventListener (ProgressEvent.PROGRESS, loaderProgressHandler); e.target.removeEventListener (IOErrorEvent.IO_ERROR, loaderIOErrorHandler); //Вот загруженная swf'ка mySWF = e.target.content; //Клонируем так var cloneMySWF:Object = cloneSWF(mySWF); //Или так var child1:Object = cloneSWF(mySWF.child1); //Или так var child2:Object = cloneSWF(mySWF).child2; //Добавляем this.addChild(cloneMySWF as DisplayObject); this.addChild(child1 as DisplayObject); this.addChild(child2 as DisplayObject); } private function loaderProgressHandler(e:ProgressEvent):void { progressBar.scaleX = e.bytesLoaded/e.bytesTotal; } private function loaderIOErrorHandler(e:IOErrorEvent):void { //Error } private static function cloneSWF(targetObject:Object):Object { var targetClass:Class = targetObject.constructor; return new targetClass(); } } Последний раз редактировалось Dos87; 26.12.2009 в 09:21. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|