在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,因为它不是显示对象。 所以,我尝试将它添加到简单按钮的父级(我想,我只是把它放在按钮的上方)。 但后来我得到一个“空对象引用”。 错误。
所以,我有两个问题
好吧,它花了几天时间和一些反省,但似乎我的问题源于你无法将孩子添加到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
