Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как сделать копию мувиклипа (http://www.flasher.ru/forum/showthread.php?t=132811)

yzhastik 20.11.2009 18:27

как сделать копию мувиклипа
 
Здравствуйте!

Я загружаю swf-ки и засовываю их в массив, этот массив играет роль библиотеки мувиков. То есть мне нужно произвольное количество раз копировать мувик из этого самого массива.
А передачи значения во флеше на сколько я знаю нет... Как выйти из такого положения?

Заранее спасибо!

ramshteks 20.11.2009 18:35

окакой передаче данных вы говорите?
а насчет копирования есть такой метод getDefenitionByName

dimarik 20.11.2009 18:52

Код AS3:

ApplicationDomain#getDefinition(name:String);


yzhastik 20.11.2009 20:03

ну передача в функцию по ссылке\значению, имелось ввиду то, что во flash нет передачи по значению, а есть только по ссылке

чтото я плохо понял про getDefenitionByName и то, как он может мне пригодится... я ведь говорю о копировании мувиков (просто мувиков без кода внутри)

Felicast 20.11.2009 22:48

реализуйте свой метод копирования
Код AS3:

someFunc(yourClip.clone());


yzhastik 21.11.2009 09:38

тогда как его реализовать, можно пример пожалуйсто?
сам я не догадаюсь просто, как можно скопировать мувик...

bicubic_bublic 21.11.2009 11:48

если каждой свфке задать свой уникальный класс, то
Код AS3:

var newSWF:MovieClip = (new (loadedSWF as Object).constructor) as MovieClip;


SamFR 21.11.2009 13:23

Тогда уж легче задать в этой swf-ке произвольное кол-во классов, и получать их экземпляры с помощью
Код AS3:

var InstClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition('имя_класса') as Class;
var inst:* = null;
if(InstClass){
        inst = new InstClass();
}else trace('Cannot resolve class');

Добавлено через 12 минут
Цитата:

Сообщение от yzhastik (Сообщение 867247)
тогда как его реализовать, можно пример пожалуйсто?
сам я не догадаюсь просто, как можно скопировать мувик...

Да, кстати, yzhastik, если вам нужно много раз получить один и тот же мувик, то вам этот метод как раз подойдёт.

Здесь loader – это экземпляр Loader, которым вы грузили swf-библиотеку. Также, если вы знаете базовый класс, то экземпляр лучше типизировать. Пусть, например, мы знаем, что мы храним в либе мувики либо спрайты (т.е. наследники DisplayObject). Тогда лучше будет написать

Код AS3:

var InstClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition('имя_класса') as Class;
var inst:DisplayObject = null;
if(InstClass){
        inst = new InstClass() as DisplayObject;
}else trace('Cannot resolve class');

Тогда в случае, если объявление такого класса содержится в библиотеке, и он действительно имеет в качестве базового класса класс DisplayObject, то в переменной inst у вас окажется нужный вам экземпляр. В противном случае inst будет равна null.

Метод же clone() раелизовывать нужно тогда, когда требуется скопировать объект вместе с его состоянием, то есть учитывая изменения, произошедшие в нём с момента создания.

yzhastik 21.11.2009 17:06

а можно ли проделать все тоже самое только с учетом того, что я сначала загружаю мувики, затем засовываю их в массив, а уже потом (из массива) мне нужно скопировать экземпляры этих мувиков?

метод не подходит только изза того, что мувики я загружаю последовательно, и в лоадере останется инфа только о последнем...

ramshteks 21.11.2009 17:30

конечно можно, вы можете в массив запихивать экземпляры класса Class, хотя я вот точно не знаю, будут ли они доступны после того как вы сделаете лоадеру unload


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

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