【发布时间】:2011-01-29 01:33:30
【问题描述】:
我使用 GUI 创建了一个矩形,我将它变成了一个按钮符号 (SimpleButton)。然后我编辑了按钮,使它有 4 种不同的按钮状态和顶部的文本层。然后,我为此对象创建了一个类定义文件,以便在将此按钮的实例添加到舞台时动态更改标签文本(文本层)。
我能够创建和链接一个类文件 (DynamicButton.as) 就好了,但是当我尝试访问我在按钮上创建的文本字段时,我得到了错误:
“通过静态类型 com.examples:DynamicButton 的引用访问可能未定义的属性 btnLabel。”
当我无法让它工作时,我决定尝试使用以下代码直接在类定义文件中添加 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,因为它不是显示对象。所以,我尝试将它添加到简单按钮的父级(我想,我只是将它放在按钮的正上方)。但后来我得到一个“空对象引用”。错误。
所以,我有两个问题
- 有没有办法通过类定义文件访问 GUI 创建的元素?
- 如何在我的类定义文件中仅使用 AS3 将 TextField 添加到按钮?
【问题讨论】: