![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 1
|
Здравствуйте, с AS 3.0 знаком не очень хорошо, возможно глупый вопрос, но все же.
Ситуация 1: Есть некий movie clip в виде квадрата, в него вложен текст (Dynamic Text). Я пишу строчку кода: Запускаю флеш, появляется квадрат, в нем значение переменной, все без ошибок. Ситуация 2: Теперь вместо мувиклипа у меня кнопка, которая появлятся только когда курсор мыши оказывается над ней, то есть у нее в кадре "Up" ничего нет. Пишу код: Появляется вот эта ошибка: 1119: Access of possibly undefined property TextovoePole through a reference with static type flash.display:SimpleButton. Я догадываюсь, нужно указать что текст находится во втором и третьем кадрах "over" и "Down", но не знаю как это сделать. Подскажите пожалуйста, заранее спасибо. П. С. Гуглил, читал хелп и книжки, ничего не нашел =) UPD Видимо с кнопкой такое не прокатит, придется делать мувиклипом. Последний раз редактировалось Haiak; 06.03.2010 в 02:52. |
|
|||||
|
Guest
Сообщений: n/a
|
Да, я тоже где-то читал что с кнопкой такого не пракатывает
|
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
SimpleButton — не динамический класс, а значит динамическое добавление новых свойств невозможно.
К тому-же, он не наследуется от класса DisplayObjectContainer, следовательно вложенных DisplayObject'ов у него быть не может. Вообще у класса SimpleButton есть 4 дисплейобжекта, которые служат различными состояниями кнопки. Теоретически, если обратиться к каждому из них, и взять у них ребенка с именем TextovoePole, если таковой ребенок там есть, он возьмется Практически — в созданной вручную кнопке во Flash IDE мне не удалось обратиться к текстовому полю по заданному ему имени, которое я также добавил вручную на таймлайн.UPD: btn — добавленная вручную кнопка с именем 'btn' (я специально не использовал правильный getChildByName). B btn в каждом кадре добавлен dynamic textfield с именем 'tf' и нарисовано по шейпу. if(btn.upState is DisplayObjectContainer) { var state:DisplayObjectContainer = (btn.upState as DisplayObjectContainer); var num:int = state.numChildren; trace('upstate has', num, 'childs'); for(var i:int = 0; i < num; i++) { var child:DisplayObject = state.getChildAt(i); trace('button\'s upState has child', child, 'with name', child.name); } } Кто из гуру расскажет, что произошло с именами? Мое единственное предположение заключается в том, что Flash IDE перефигачила вручную нарисованную кнопку в SimpleButton на свой лад. UPD 2: if(btn.upState is DisplayObjectContainer) { var state:DisplayObjectContainer = btn.upState as DisplayObjectContainer; checkChilds(state); var newTf:TextField = new TextField(); newTf.autoSize = 'left'; newTf.name = 'new_textfield'; newTf.text = 'hello ide'; state.addChild(newTf); checkChilds(state); } function checkChilds(state:DisplayObjectContainer):void { var num:int = state.numChildren; trace('state has', num, 'childs'); for(var i:int = 0; i < num; i++) { var child:DisplayObject = state.getChildAt(i); trace('state has child', child, 'with name', child.name); } }
__________________
#flasher@irc.trg.ru:6667 Последний раз редактировалось Obi; 06.03.2010 в 14:38. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
SimpleButton такой simple...
История повторяется.. Что во времена ас1-ас2 объясняли, что буттон "для дизайнеров", что сейчас. Хотите правильную кнопку - пишите сами, невелик труд. Пытаться сделать слона наклеиванием на муху пенопласта - неблагодарное занятие. Симпл нужен, когда надо быстро сляпать какой-то тестовый образец для демонстрации/проверки логики. Никакого другого смысла в нем нет, не тратьте время - лучше используйте его на написание своей приличной расширяемой кнопки из спрайта, которая будет контейнером и вообще позволит делать любые фичи - дизабленные или нажатые состояния, лейблы, иконки и плавные переходы или подсветку.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|