Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.12.2009, 14:19
k0syak вне форума Посмотреть профиль Отправить личное сообщение для k0syak Найти все сообщения от k0syak
  № 1  
Ответить с цитированием
k0syak

Регистрация: Dec 2009
Сообщений: 64
По умолчанию Копирование swf

Доброе всем время суток.

Такая проблема. Загружаю внешнюю swf (клас Elem extends Loader), в которой несколько children-ов.
Затем мне необходимо клонировать эту swf - ку. Делаю так:

................

Код AS1/AS2:
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:

Код AS1/AS2:
myClass.loadBytes(elem.bytes);
Затем делаю addChild(myClass);
Все замечательно... загружается вся swf - ка.



НО: хочу добавть только чилдрен этой swf - ки, получается лажа... Пишет что чилдренов у нее нету(myClass.numChildren = 0). В чем может быть дело???

Старый 26.12.2009, 09:11
Dos87 вне форума Посмотреть профиль Отправить личное сообщение для Dos87 Найти все сообщения от Dos87
  № 2  
Ответить с цитированием
Dos87
[+1 02.07.09]

Регистрация: Jun 2009
Сообщений: 39
Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.