Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.03.2010, 02:34
Haiak вне форума Посмотреть профиль Отправить личное сообщение для Haiak Найти все сообщения от Haiak
  № 1  
Ответить с цитированием
Haiak

Регистрация: Mar 2010
Сообщений: 1
По умолчанию Объект вложен в кнопку, синтаксис пути

Здравствуйте, с AS 3.0 знаком не очень хорошо, возможно глупый вопрос, но все же.
Ситуация 1: Есть некий movie clip в виде квадрата, в него вложен текст (Dynamic Text). Я пишу строчку кода:
Код AS3:
mcKvadrat.TextovoePole.text = peremennaya
Запускаю флеш, появляется квадрат, в нем значение переменной, все без ошибок.
Ситуация 2:
Теперь вместо мувиклипа у меня кнопка, которая появлятся только когда курсор мыши оказывается над ней, то есть у нее в кадре "Up" ничего нет.
Пишу код:
Код AS3:
btnKnopka.TextovoePole.text = peremennaya
Появляется вот эта ошибка:

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.
Старый 06.03.2010, 03:07
  № 2  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
Да, я тоже где-то читал что с кнопкой такого не пракатывает

Старый 06.03.2010, 14:08
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 3  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
SimpleButton — не динамический класс, а значит динамическое добавление новых свойств невозможно.
К тому-же, он не наследуется от класса DisplayObjectContainer, следовательно вложенных DisplayObject'ов у него быть не может.
Вообще у класса SimpleButton есть 4 дисплейобжекта, которые служат различными состояниями кнопки. Теоретически, если обратиться к каждому из них, и взять у них ребенка с именем TextovoePole, если таковой ребенок там есть, он возьмется Практически — в созданной вручную кнопке во Flash IDE мне не удалось обратиться к текстовому полю по заданному ему имени, которое я также добавил вручную на таймлайн.

UPD:

btn — добавленная вручную кнопка с именем 'btn' (я специально не использовал правильный getChildByName).
B btn в каждом кадре добавлен dynamic textfield с именем 'tf' и нарисовано по шейпу.


Код AS3:
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);
	}
}
Получаем объекты Shape и TextField, но с именами instance1 и instanse2.
Кто из гуру расскажет, что произошло с именами?
Мое единственное предположение заключается в том, что Flash IDE перефигачила вручную нарисованную кнопку в SimpleButton на свой лад.


UPD 2:

Код AS3:
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.
Старый 07.03.2010, 01:20
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
SimpleButton такой simple...
История повторяется.. Что во времена ас1-ас2 объясняли, что буттон "для дизайнеров", что сейчас. Хотите правильную кнопку - пишите сами, невелик труд. Пытаться сделать слона наклеиванием на муху пенопласта - неблагодарное занятие. Симпл нужен, когда надо быстро сляпать какой-то тестовый образец для демонстрации/проверки логики. Никакого другого смысла в нем нет, не тратьте время - лучше используйте его на написание своей приличной расширяемой кнопки из спрайта, которая будет контейнером и вообще позволит делать любые фичи - дизабленные или нажатые состояния, лейблы, иконки и плавные переходы или подсветку.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.