Я использовал графический интерфейс для создания прямоугольника, который я превратил в символ кнопки (SimpleButton). Затем я отредактировал кнопку так, чтобы она имела 4 разных состояния кнопки и текстовый слой сверху. Затем я создал файл определения класса для этого объекта, чтобы можно было динамически изменять текст метки (текстовый слой) при добавлении экземпляров этой кнопки на сцену.
Мне удалось создать и связать файл класса (DynamicButton.as) очень хорошо, но когда я пытаюсь получить доступ к текстовому полю, созданному на кнопке, я получаю ошибку:
"Доступ к возможно неопределенному свойству btnLabel через ссылку со статическим типом com.examples: DynamicButton."
когда я не мог заставить это работать, я решил попробовать добавить TextField непосредственно в файл определения класса, используя следующий код:
package com.examples
{
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.text.TextField;
public class DynamicButton extends SimpleButton
{
public function DynamicButton(btnText:String="Click Me")
{
placeText();
labelText.text = btnText;
}
//property variables
//create a text box to hold the button label
private var labelText:TextField = new TextField();
//create a displayObject to hold the text
private var labelSprite:Sprite = new Sprite();
private function placeText():void {
labelText.width = this.width;
labelText.height = this.height;
labelText.x = this.x;
labelText.y = this.y;
labelText.visible = true;
labelSprite.addChild(labelText);
this.parent.addChild(labelSprite);
}
}
}
Проблема в том, что я не могу добавить TextField в SimpleButton, так как это не экранный объект. Итак, я попытался добавить его к родителю простой кнопки (и я решил, что я просто поместил бы его точно над кнопкой). Но затем я получаю «нулевую ссылку на объект». ошибка.
Итак, у меня два вопроса
- есть ли способ получить доступ к элементам, созданным в графическом интерфейсе, из файла определения класса?
- Как мне добавить TextField к кнопке, используя только AS3 внутри моего файла определения класса?