![]() |
Установка свойства movieClip: прямая команда работает, а через eval() - нет
Здравствуйте!
Возник довольно странный вопрос, не знаю как побороть, может кто сталкивался... Не могу динамически изменить свойство мувиклипа, свойство меняется только в случае, если код прописан в явном виде. Что я имею в виду. Есть 99 копий мувиклипа, созданых через duplicateMovieClip(). Копии имеют имена cell01 ... cell99, и находятся внутри клипа tab. В библиотеке базовый клип cell - это обычный клип, у которого если щелкнуть правой кнопкой мышки и выбрать пункт "Component Definition", задан один дополнительный параметр cell_state так: Name - "Текущее значение" Variable - cell_state Value - 0 Type - Number И вот в чем проблемма. Я не могу установить значение cell_state для нужной мне копии объекта cell. Точнее, я могу сделать это прямой командой, но не могу установить свойство для программно заданой ячейки. Вот какой код я использую. Комментируя один способ и раскомментировав другой, я получаю разный результат, хотя результат должен быть для обоих способов одинаковый. Код:
// Вариант 1 (прямой код) - работает"Не работает" - это значит код молча выполняется без ошибок, но изменение свойства мувика не происходит. Вот. Кто мне может рассказать, как поменять свойство 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;зы: как поменять свойство в теперяшних версиях: Код:
tab["cell"+x+y].cell_state=3; |
Какой оперативный ответ :)
Да, так и есть. В общем, надо конструировать не команду, а текст ссылки на объект. Eval() возьмет текст ссылки, а вернет саму ссылку. setProperty(this.player5,_visible,1); - работает setProperty("this.player5",_visible,1); - работать не будет setProperty(eval("this.player5"),_visible,1); - работает Это меня PHP да JavaScript попутали. В них как раз eval() может выполнять любое выражение. |
Забудь про setProperty, пока не поздно.
|
Я во флеше не силен.. А почему надо забыть о setProperty()?
Вроде как это универсальный метод изменения свойств объектов. Пусть он и устареет, но его поддержка для совместимости должна остаться в будующих версиях флеша. И запись через setProperty() гораздо читабельнее, чем дикие конструкции с квадратными скобками []. Думаю, инженеры макромедии хорошо представляют себе что такое эргономика, коль сделали такой продукт как флеш. А если они знают что такое эргономика, они никогда не перекособочат флеш в нелогичную или неудобную пользователю сторону, будь то интерфейс или требования к коду. А если перекособочат - мы увидим загнивание технологии, пусть возможностей там будет туева хуча, AS3, мультиплатформеность редактора и прямой OpenGL рендеринг. :) |
дело вкуса канеш.. , это по поводу "запись через setProperty() гораздо читабельнее",
а насчет "мы увидим загнивание технологии" : это ты погорячился, это врядли..:) к слову, Adobe® Flex™ 2 Language Reference (ActionScript 2.0 Migration): setProperty() - Removed.. |
| Часовой пояс GMT +4, время: 15:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.