2010-02-03 2 views
0

Я немного смущен. Я сделал символ кнопки, и я поместил текстовое поле под названием «butLabel». эта кнопка инкапсулируется в другой мувиклип под названием MainMenu. cbegin - это имя экземпляра, который я дал кнопке. Если я так прослежу ...непонимание кнопок и текстовых полей

trace(menu.cbegin); 

Он признает, что кнопка cbegin - это кнопка. но если я прослежу его вот так:

trace(menu.cbegin.butLabel); 

это говорит butLabel is null. Ниже, как я называю в меню мувиклипа

var menu = new MainMenu(); 
trace(menu.cbegin.butLabel); 
menu.x = sr.stageWidth/2; 
menu.y = sr.stageHeight/2; 

Опять же, кнопка работает, но метка внутри кнопки оленьей кожи. текстовое поле настроено на динамическое, и я копировал и вставлял имя, которое было в поле имени экземпляра, в мой код. поэтому они должны быть одинаковыми. Я также начал вводить текстовую кнопку в текстовое поле по умолчанию из библиотеки и, похоже, работает нормально, но если я изменяю текстовое поле с помощью кода, это не сработает. Любые предложения о том, что происходит? Благодаря!

+0

Можете ли вы предоставить больше кода для тестирования? –

+0

Вы пытались 'menu.butLabel'? –

ответ

1

Вот что вы можете сделать, это своего рода хакерство.

ПРИМЕЧАНИЕ: Предполагается, что TextField находится на втором уровне (то есть getChildAt(1)), над начальным слоем, созданным при создании SimpleButton.

var menu:MainMenu = new MainMenu(); 
addChild(menu); 

var upStateContainer:DisplayObjectContainer = menu.cbegin.upState as DisplayObjectContainer; 
var butLableUp:TextField = upStateContainer.getChildAt(1) as TextField; 
butLableUp.text = "Up State"; 

или как один лайнер:

((menu.cbegin.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = "UP State"; 

Объяснение: Когда вспышка составлена ​​из Flash IDE, все экземпляры SimpleButton, и их детей, преобразуются в их базовые типы отображения , как спрайты. Даже если у вас есть одно текстовое поле на слое над состояниями кнопок, которое охватывает все четыре кадра, будет создано текстовое поле для каждого из трех видимых состояний кнопок. Имя экземпляра текстового поля даже не имеет значения и никогда не используется.

+0

Я точно не понимаю, что вы сказали. Но это работает! Кажется, вы говорите, что во время компиляции все содержащиеся объекты объектов simpleButton превращаются в displayObjectContainers. Что представляют собой объекты отображения, которые являются довольно пустыми (т. Е. Легкие пустые экранные объекты). поэтому он теряет свои свойства, такие как текст. поэтому именно поэтому он не работал. мы просто взяли и вернули объект обратно в текстовое поле? Это только для SimpleButtons ?? и спасибо! – numerical25

Смежные вопросы