![]() |
Трабл с Object
Вопрос:
Есть динамическое поле текста. В первом кадре, где основной код, я делаю q = new Object(); q.text = "какой-то текст"; stop(); Для динамического поля задаю variable: q.text В итоге, в первом кадре в этом динамическом тексте ничего нет. Если отправляюсь в другие кадры, то, как и задумывалось, в этом поле появляется _ какой-то текст _ . Почему же этот текст не появляется в первом кадре и как преодолеть этот трабл? (мне нужно, чтоб именно в первом кадре в поле был нужный текст). Все это происходит во Flash MX. Спасибо всем, кто отзовется. |
Имя переменной не должно содержать точки и много чего ещё. А то, что ты прописываешь в поле variable - это именно имя переменной. Название, а не определение объекта.
Если хочешь, чтобы текстовое поле принадлежало объекту, созданному динамически, - создавай его динамически с помощью createTextField. Как обычно, есть, другой вариант - использовать уже имеющийся объект: Для динамического поля задаешь instance name: q Все, объект q уже создан. Можно сделать с ним все, что хотел. Напр.: q.text="какой-то текст"; q.asd="hello!"; q.popup=function(msg){trace(msg)}; q.popup(q.asd); |
Спасибо за ответ, все работает. Но, все-таки, хотелось бы разобраться: если я в первом кадре вставляю код, который описал, а динамическое поле делаю в каком-то следующем кадре (в первом его нет), instance name ему не присваиваю, переменную задаю q.text, то при переходе в этот следующий кадр — опа! Появляется нужный текст. Если же это динамическое поле есть и в первом кадре, то это не работает. Почему же тогда это работает, если нет поля в первом кадре? Недокументированная возможность, или что?
|
объекты MovieClip, Button, Mouse, TextField не нужно создавать как новый объект т.к. он создается сразу после компиляции....
я, конечно, понимаю что те хотится поюзать ООП, но здесь оно по-моему не к чему!!! так что используй переменную: mytextvar="blablabla"; |
Ба! Дак это ты фичу новую откопал!
По умолчанию твоё текстовое поле имеет instance name "instance1" (если ты не задал другое):
instance1.text="какой-то текст"; trace(instance1.variable); // выдаст "q.text" Переменная имеет идентификтор "q.text", но как только интерпретатор видит точку, вместо того, чтобы воспринимать "q.text" как единое целое, он ищет объект "q", а внутри него пременную "text". Поэтому из AS в принципе её никак не зацепишь. В поле variable ты можешь вбить хоть "а+б" или "Math.sin(3.14)", и переменная так и будет называться, но если в скрипте написать: Math.sin(3.14)="какой-то текст"; угадай, что скажет интерпретатор. Твой случай - баг, фича - называй как хочешь. Отрабатывает (почему-то) так, как хотелось, но только в момент появления ткст поля на сцене. Интересно будет поковыряться, может что-нить прикольное придумается. |
Код:
this["Math.sin(3.14)"] = "wow"; |
Еще вот что заметил — если присваивать имя переменной динамического поля q.text, и поставить галку на "форматирование тегами HTML" то текст выводится корректно (не считая указанного в теме трабла), исправно форматируется. Если же присваивать динамическому полю instance name: q, variable: text, то на эту галку нет реакции, т.е. видны все теги.
2 Пушистик Цитата:
|
| Часовой пояс GMT +4, время: 00:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.