Форум 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=176579)

Gaen 13.03.2012 22:31

Ну так они и выставятся, в чем проблема-то?

Feigi 13.03.2012 22:37

Я тоже так думала. Это было логично, пока не попробовала ). После Table. не выдаёт таких вариантов, и код также не срабатывает.

HardCoder 13.03.2012 22:42

Я, лично, не пойму: в чем проблема была изначально? И каким способом вы эту проблему решили?
Ну, нарисовали мы во флеше спрайт. В нем нарисовали другие мувиклипы. Импортировали этот главный спрайт в АС, назвали класс Table. Потом кодом создали этот спрайт. В нем делаем все что захотим со вложенными в него мувиками... Ни проблема ни ее решение непонятны...

Feigi 13.03.2012 22:47

Проблема была в том, что не знала, как обращаться к мувикам, внутри этого спрайта Table. Пока не нашла способ table.getChildAt Дело в том, что я экпортирую этот Table как муви клип. На тот момент не понимала, что любой класс муви клип расширяет класс спрайт. На всякий случай спрашиваю- это так и есть? (Пойду почитаю в гугле). Начала изучать флеш всего 3 дня назад.
В этом была вся проблема.

HardCoder 13.03.2012 22:55

Может в конкретно вашем случае - это хороший вариант
Код AS3:

table.getChildAt

Но в таком случае вам нужно помнить индексы каждого вложенного мувиклипа. Рисовать на бумажке все клипы и расставлять каждому индекс, чтобы потом не забыть? Не проще ли дать каждому клипу имя и обращатся к ним по имени:
Код AS3:

trace(table.someChild1);
trace(table.someChild2);


Feigi 13.03.2012 23:01

Так и делала с trace (table.getChildAt(i)); [i=0..] Просто по-началу не поняла, что Table он спрайт.

gloomyBrain 13.03.2012 23:52

Код AS3:

var d:DisplayObject = (DisplayObject) new Sprite();

У меня не компилируется.

HardCoder 13.03.2012 23:59

Цитата:

Сообщение от gloomyBrain (Сообщение 1068877)
Код AS3:

var d:DisplayObject = (DisplayObject) new Sprite();

У меня не компилируется.

А так компилируется:
Код AS3:

var d:DisplayObject = (DisplayObject) (new Sprite());


gloomyBrain 14.03.2012 13:26

Ну что, давайте сравним 3 способа (код + байт-код):
1)
Код AS3:

var d:DisplayObject = (DisplayObject) (new Sprite());

Код:

_as3_getlex flash.display::DisplayObject
_as3_getglobalscope
_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_call (param count:1)
_as3_coerce flash.display::DisplayObject

2)
Код AS3:

var d:DisplayObject = DisplayObject(new Sprite());

Код:

_as3_findpropstrict flash.display::DisplayObject
_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_callproperty flash.display::DisplayObject(param count:1)
_as3_coerce flash.display::DisplayObject

3)
Код AS3:

var d:DisplayObject = new Sprite() as DisplayObject;

Код:

_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_getlex flash.display::DisplayObject
_as3_astypelate
_as3_coerce flash.display::DisplayObject

Итак, судя по всему 1) и 2) - практически одно и то же: вызов функции пакета DisplayObject c параметром. Отличие в том, что в 1) и 2) по-разному достается ссылка на функцию DisplayObject.
И 1), и 2) могут выкинуть исключение, в отличии от 3, который в случае неудачи просто вернет null.

Если судить по количеству инструкций - то самый медленный способ должен быть 1), который и использует автор. Более того, этот способ небезопасен.


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

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