将动态文本框放在按钮Flash As3中会导致很大的错误

时间:2014-04-19 22:09:56

标签: actionscript-3 flash

尚未动态添加按钮和文本框。

我有一个实例名称为slot1的movieclip。

在slot1里面我有一个名为newBtn1的按钮。

在新的Btn1里面,我有一个名为text 1的动态文本框。

slot1.newBtn1.text1.text = "Button";

//此代码给我一个错误

                try 
                {
                    slot1.newBtn1.text1.text = "New Game";
                } 
                catch (err:Error) 
                {
                    trace(err);
                }
                slot1.newBtn1.addEventListener(MouseEvent.CLICK, chooceCharacter)

这是下面的错误

ReferenceError: Error #1069: Property text1 not found on flash.display.SimpleButton and there is no default value.

这可以在As2中使用我很确定,但是As3很严格。

我正在使用Flash CC和Flash Develop来代码btw。

1 个答案:

答案 0 :(得分:3)

短版

如果TextField是按钮中的唯一内容,那么

TextField (slot1.newBtn1.upState).text = "New Game";

长版

您无法以这种方式访问​​TextField,因为SimpleButton不是像MovieClip这样的动态类。您可以在Dynamic classes in Flash阅读。让我们假设你有一个实例名称为#34; myobj"并将此对象添加到MovieClip和Sprite。以下是访问每个对象的方法。

MovieClip is dynamic
mymovieclip.myobj;

Sprite is not dynamic
mysprite.getChildByName ("myobj");

另一件事是,SimpleButton不是像Flash IDE会让你相信的DisplayObjectContainer。它具有用于显示按钮的属性upState overState downState hitTestState。因此,当您在IDE中的按钮的向上框架中绘制内容时,upState属性将设置为Shape实例。如果将MovieClip放在Up框架中,upState将是MovieClip,依此类推。

因此,如果您想要访问该对象,则必须通过状态属性执行此操作。在您的情况下,您在Up框架中有一个TextField,因此您必须以这种方式访问​​它

slot1.newBtn1.upState;  //this will return a DisplayObject
TextField (slot1.newBtn1.upState);  //this will cast it so you can use it