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

Feigi 13.03.2012 19:22

Есть вопрос об объектах муви клип
 
Есть вопрос об объектах муви клип. В самой программе флеш cs5 есть опция создать комплексный объект, в котором хранятся несколько муви клип. И есть возможность обращаться к каждому из них отдельно, с помощью того, что мы выставляем наш большой объект на таймлайн и с помощью экшенс вставляем код в любой из этих мини- объектов. Теперь вопрос, можно ли импотировать такой комплексированный муви-клип (например во флеш-билдер) и обращаться к его мини-объектам. Как это возможно?

Добавлено через 49 минут
Сделала во флеш муви кли, состоящий из многих простоых муви клипов. Часть из них кнопки и т.д. на которые надо реагировать. Было влом раставлять все объекты по одному с помощью кода. Просто сгрупировать всё как один объект и выставить на экран. Нашла решение.

Код AS3:

table=new Table();
                        table.x=115;
                        table.y=100;
                        sprite.addChild(table);
                        var ok:Ok=(Ok)(table.getChildAt(4));
                        var plus:Plus=(Plus)(table.getChildAt(2));
                        var minus:Minus=(Minus)(table.getChildAt(3));
                        var txt:Speed_text=(Speed_text)(table.getChildAt(5));


TanaTiX 13.03.2012 21:36

А что такое "комплексный объект"?

HardCoder 13.03.2012 21:47

А что это такое?
Код AS3:

var ok:Ok=(Ok)(table.getChildAt(4));

Добавлено через 1 минуту
Приведение типа?

Gaen 13.03.2012 21:57

Похоже на приведение с намеком на сишный стиль) хотя почему бы и нет, так тоже будет работать.

Feigi 13.03.2012 22:00

Строила графику во флеш профешнл. Создала объект типа муви клип (у меня это таблица) со многими кнопками на ней. Вместо того, чтобы вручную выставлять каждый муви клип на сцену, можно импортировать со флеш профешнл весь этот стол (со всеми кнопками), на котором уже всё раставлено. И потом пользоватся getChildAt, обращаясь к каждому компоненту отдельно.

Добавлено через 1 минуту
Что такое привидение?? Вы о чём?

TanaTiX 13.03.2012 22:01

А можно задать InstanceName и обращаться по имени соответствующего экземпляра класса

Feigi 13.03.2012 22:12

Код AS3:

ok=(Ok)(table.getChildByName("ok"));

Вы это имеете ввиду? Можно и так, но это менее эффективно.

Gaen 13.03.2012 22:13

Код AS3:

var ok:Ok = table.ok;

?

TanaTiX 13.03.2012 22:14

Нет, я имел ввиду задать имена объектам, которые потом поименно отборажаются, как поля класса. А приведенный вами участок кода во флеше выглядит странно как минимум

Feigi 13.03.2012 22:28

Код AS3:

var ok:Ok = table.ok;а

Это понятно. Это когда есть класс, но имени Table, и в нём в одном из полеё объект Ok.
Но не в этом суть. Идея заключалась в том, чтобы расставить весь Table со всеми кнопками (Ok и т.д.) в удобном графическом интерфейсе (флеш cs5). Сохранить всё готовое в библиотеке, и импортировать этот муви клип (Table), так чтобы, когда его выставляем в коде sprite.addChild(table);
всё компоненты Table выставлялись в нужных местах на экране. (а не вручную подгонять каждый компонент Table).

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, время: 02:32.

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