【问题标题】:Placing a dynamic text box inside a button, Flash As3, causes big error在按钮 Flash As3 内放置动态文本框会导致大错误
【发布时间】:2014-04-19 22:09:55
【问题描述】:

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

我有一个实例名称为 slot1 的影片剪辑。

在 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 来编写代码。

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    简短版

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

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

    长版

    您不能以这种方式访问​​ TextField,因为 SimpleButton 不像 MovieClip 那样是动态类。您可以在Dynamic classes in Flash 阅读。假设您有一个实例名称为“myobj”的对象,并且您将此对象添加到 MovieClip 和 Sprite。以下是访问每个对象的方法。

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

    另一件事是,SimpleButton 不是 Flash IDE 会让您相信的 DisplayObjectContainer。它具有用于显示按钮的属性upState overState downState hitTestState。因此,当您在 IDE 中按钮的 Up 框架中绘制内容时,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
    

    【讨论】:

    • 美丽的答案,短而长,非常感谢! :D 我学到了一些有价值的东西,感谢您发布的链接。进一步阅读!
    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2012-06-11
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多