在AS3中的类定义文件中创建元素(Flash CS4)

我已经使用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,因为它不是显示对象。 所以,我尝试将它添加到简单按钮的父级(我想,我只是把它放在按钮的上方)。 但后来我得到一个“空对象引用”。 错误。

所以,我有两个问题

  • 有没有办法从w / ia类定义文件访问GUI创建的元素?
  • 我如何将TextField添加到按钮中,仅使用AS3的类定义文件内的按钮?

  • 好吧,它花了几天时间和一些反省,但似乎我的问题源于你无法将孩子添加到SimpleButton的事实。 我改变了我的类定义扩展一个影片剪辑,然后创建了一个名为“听()”我叫构造所添加的侦听“过”的对象时,“向下”功能和“out”鼠标状态,以模仿一个简单的按钮。 我还必须在构造函数中放入“stop()”命令,以便每个按钮都不会在所有状态中循环。 最终的类定义如下所示:

    package com.examples 
    {
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
    
        public class DynamicButton extends MovieClip
        {
            public function DynamicButton(btnText:String="Click Me")
            {
                stop(); 
                this.btnText_btn.text = btnText;
                listen();
            }//constructor  
    
            private function listen():void {
                this.addEventListener(MouseEvent.MOUSE_OVER,function(){
                        gotoAndStop(2);
                    }//anon mouseover fcn
                );
                this.addEventListener(MouseEvent.MOUSE_DOWN,function(){
                        gotoAndStop(3);
                    }//anon mousedown fcn
                );
                this.addEventListener(MouseEvent.MOUSE_OUT,function(){
                        gotoAndStop(1);
                    }//anon mouseout fcn
                );          
            }
        }//class definition
    }//package
    
    链接地址: http://www.djcxy.com/p/17847.html

    上一篇: created elements in a class definition file in AS3 (Flash CS4)

    下一篇: flash cs4 combobox component totally ignore styles and events