![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Здравствуйте!
Возник довольно странный вопрос, не знаю как побороть, может кто сталкивался... Не могу динамически изменить свойство мувиклипа, свойство меняется только в случае, если код прописан в явном виде. Что я имею в виду. Есть 99 копий мувиклипа, созданых через duplicateMovieClip(). Копии имеют имена cell01 ... cell99, и находятся внутри клипа tab. В библиотеке базовый клип cell - это обычный клип, у которого если щелкнуть правой кнопкой мышки и выбрать пункт "Component Definition", задан один дополнительный параметр cell_state так: Name - "Текущее значение" Variable - cell_state Value - 0 Type - Number И вот в чем проблемма. Я не могу установить значение cell_state для нужной мне копии объекта cell. Точнее, я могу сделать это прямой командой, но не могу установить свойство для программно заданой ячейки. Вот какой код я использую. Комментируя один способ и раскомментировав другой, я получаю разный результат, хотя результат должен быть для обоих способов одинаковый. // Вариант 1 (прямой код) - работает tab.cell44.cell_state=1; // Вариант 2 (через eval) - не работает x=4; y=4; cmnd="tab.cell"+x+y+".cell_state=1;"; trace(cmnd); // Сконструирована команда "tab.cell44.cell_state=1;" eval(cmnd); "Не работает" - это значит код молча выполняется без ошибок, но изменение свойства мувика не происходит. Вот. Кто мне может рассказать, как поменять свойство cell_state для произвольного мувика? Может быть, можно не через eval(), а как-то по-другому? ЗЫЖ Возможно это важно. Пробовал конструкцию setProperty("tab.cell"+x+y,cell_state,1), но она ругается что нет такого свойства. |
|
|||||
|
читаем про eval: Accesses variables, properties, objects, or movie clips by name - ни слова про исполнение кода..
пробуем tab.cell44.cell_state=1; trace(tab.cell44.cell_state);//1 /////////////// x=4; y=4; cmnd="tab.cell"+x+y+".cell_state"; eval(cmnd)=2; trace(tab.cell44.cell_state);//2 ![]() зы: как поменять свойство в теперяшних версиях: Последний раз редактировалось silin; 27.07.2006 в 01:20. |
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Какой оперативный ответ
![]() Да, так и есть. В общем, надо конструировать не команду, а текст ссылки на объект. Eval() возьмет текст ссылки, а вернет саму ссылку. setProperty(this.player5,_visible,1); - работает setProperty("this.player5",_visible,1); - работать не будет setProperty(eval("this.player5"),_visible,1); - работает Это меня PHP да JavaScript попутали. В них как раз eval() может выполнять любое выражение. Последний раз редактировалось xintrea; 27.07.2006 в 01:34. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Забудь про setProperty, пока не поздно.
|
|
|||||
|
Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
|
Я во флеше не силен.. А почему надо забыть о setProperty()?
Вроде как это универсальный метод изменения свойств объектов. Пусть он и устареет, но его поддержка для совместимости должна остаться в будующих версиях флеша. И запись через setProperty() гораздо читабельнее, чем дикие конструкции с квадратными скобками []. Думаю, инженеры макромедии хорошо представляют себе что такое эргономика, коль сделали такой продукт как флеш. А если они знают что такое эргономика, они никогда не перекособочат флеш в нелогичную или неудобную пользователю сторону, будь то интерфейс или требования к коду. А если перекособочат - мы увидим загнивание технологии, пусть возможностей там будет туева хуча, AS3, мультиплатформеность редактора и прямой OpenGL рендеринг. ![]() |
|
|||||
|
дело вкуса канеш.. , это по поводу "запись через setProperty() гораздо читабельнее",
а насчет "мы увидим загнивание технологии" : это ты погорячился, это врядли.. ![]() к слову, Adobe® Flex™ 2 Language Reference (ActionScript 2.0 Migration): setProperty() - Removed.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|