Форум Flasher.ru

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

terbooter 29.11.2007 12:34

Как дублировать MovieClip ?
 
Есть нарисованный мувик.
Нужно приаттачить много его копий.

Вот это почему-то не работает -(
http://flasher.ru/forum/showpost.php...2&postcount=60

Какие еще есть способы?

etc 29.11.2007 13:14

DisplayObject-ы клонировать таким способом нельзя.

terbooter 29.11.2007 13:27

Цитата:

Сообщение от __etc
DisplayObject-ы клонировать таким способом нельзя.

По ссылке выше написано:
Цитата:

В ActionScript 3 больше нет метода duplicateMovieClip, но его можно частично воспроизвести. Например, такая функция:...
Гуглю, народ использует этот синокуляровский метод, но у меня не выходит -(
Функция возвращает мувик ( is MovieClip //true), но нулевой ширины и высоты

UP: Или посоветуйте как реализовать добавление анимированый смайликов.
Я сделал так: За видимой областью выложил все смайлики и дал им имена, которые будут
кодом этого смайлика. Далее в тексте заменяю на пробел нужной ширины...и тд
Как добавить много копий одного смайлика?

etc 29.11.2007 13:38

Ну а детей-то кто клонировать будет?

_vol 29.11.2007 13:44

Цитата:

Сообщение от __etc
DisplayObject-ы клонировать таким способом нельзя.

Как раз таки можно, только нужно что бы в Linkage Proparties > Class что-то было.


Цитата:

Сообщение от terbooter
Вот это почему-то не работает -(
http://flasher.ru/forum/showpost.php...2&postcount=60

Шок! была примерно такая же проблема(клонирование), но свойство displayObject ["constructor"](см. линк) - спасло. MerlinTwi'у - огромный респект ! Я просто загружал флешки, унаследованные от одного класса, и в этом стучае getDefinitionByName(getQualifiedClassName( myLoadedDisplayObject)) - возвращает класс первого прибывшего мувика, а displayObject ["constructor"] - вроде работает как я хочу, токо вот почему это не описано нигде ?

derhab 29.11.2007 13:47

Цитата:

Сообщение от terbooter
Как добавить много копий одного смайлика?

А зачем тут duplicate? из библиотеки нельзя брать, или я чего то не понял?

terbooter 29.11.2007 14:02

Цитата:

Сообщение от derhab
А зачем тут duplicate? из библиотеки нельзя брать, или я чего то не понял?

А как брать из библиотеки?
Похоже что я вообще ничего не понял -)

To, _vol. Похоже это описано здесь http://riapriority.com/blogs/agahov....e_obj_and_cast

Уже целый час бьюсь, совсем запутался.
Если несложно, то работающий простенький примерчик мне бы очень помог

derhab 29.11.2007 14:21

из библиотеки очень просто:
прописываешь в linkage класс своему мувику(к примеру myClass)
а в коде пишешь:
Код:

var clip:MyClass = new MyClass();
addChild(clip);

по тому же принципу, что attach в AS2, только тут связь с классом непосредственно

terbooter 29.11.2007 14:28

Смущает только что смайлов может быть больше сотни...

derhab 29.11.2007 14:46

ну и что? какая проблема?

terbooter 29.11.2007 15:02

Ну например, обозвал я мувики смайликов в библиотеке как-то однообразно
(s1, s2...) и выставил галочку экспорт, автоматом в поле класс появляется класс с именем мувика.

Потом я хочу добавить мувик. Не вижу другого способа как писать длинный парсер вида:
Код:

function getSmile (SmileCode:String):*
{
    switch (SmileCode)
    {
        case "S1" :
            var newSmile:S1 = new S1();
            return newSmile;
            break;
        case "S2" :
            var newSmile:S2 = new S2();
            return newSmile;
            break;
        ...
    }
}

UP
Проблема в том, что строку не приввести к типу Class
UP2 Оказывается можно:
Код:

function duplicate (className:String):*
{
    Class(getDefinitionByName(className));
    var currentClass:Class = Class(getDefinitionByName(className));
    return new currentClass();
}
addChild(duplicate("S1"));


random13 01.10.2009 16:06

возникла проблема, прочитал топик но ответа не нашел,

есть swc, в нем лежат мувиклипы в которых лежат картинки, как мне эти мувики клонировать с содержимым?

Psycho Tiger 01.10.2009 19:15

Как вариант - писать рекурсивную функцию, которая будет клонировать всех детей, или рисовать в битмап дату, если функционал не важен.

random13 02.10.2009 13:22

еще вопрос возник, я просто что то туплю,

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

возможно ли как то фактически передать ссылки тем самым, есть одна сущность которая выводиться несколько раз?

PgeorgyV 02.10.2009 15:54

Насколько я знаю, экранный объект в данный момент времени может отображаться только в одном месте

switcher! 02.10.2009 17:09

экранный да, но если речь идет о картинке, то можно эту картинку (BitmapData) присвоить в свойство bitmapData нужному количеству экземпляров Bitmap (которые, в свою очередь, можно засунуть в Sprite (например), если нужно скалировать картинки, делать их кликабельными и т.д.)

Итого, имеем 1-ну картинку BitmapData
и
много Bitmap (экранных объектов), которые могут отображаться одновременно. И отображают одну и ту же картинку.

Однако, эта операция тоже память хорошо кушает. Хотя меньше, конечно, чем клонировать BitmapData для каждого Bitmap.


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

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