Просмотр полной версии : Трабл с 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, то при переходе в этот следующий кадр — опа! Появляется нужный текст. Если же это динамическое поле есть и в первом кадре, то это не работает. Почему же тогда это работает, если нет поля в первом кадре? Недокументированная возможность, или что?
Пушистик
01.08.2003, 12:46
объекты 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";
trace(this["Math.sin(3.14)"]);
Еще вот что заметил — если присваивать имя переменной динамического поля q.text, и поставить галку на "форматирование тегами HTML" то текст выводится корректно (не считая указанного в теме трабла), исправно форматируется. Если же присваивать динамическому полю instance name: q, variable: text, то на эту галку нет реакции, т.е. видны все теги.
2 Пушистик
я, конечно, понимаю что те хотится поюзать ООП, но здесь оно по-моему не к чему!!!
Так я же не весь код привожу :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.