【问题标题】:Actionscript: add a sprite from a subclass to the display list of its super class?Actionscript:将子类中的精灵添加到其超类的显示列表中?
【发布时间】:2010-08-15 15:52:46
【问题描述】:

假设我有这两个类:

MAIN.as

package 
{
    import flash.display.*;     import mx.core.*;       
    import flash.events.*;      import mx.collections.*;
    import flash.geom.*;        import mx.controls.*;
    import flash.text.*;        import mx.events.*;
                                import mx.styles.*;
                                import mx.containers.*;

    public class MAIN extends Sprite
    {
        public var APPLICATION:Application = Application(Application.application);
        public var keyDownText:TextField = new TextField();
        public function MAIN()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
            addEventListener(Event.ENTER_FRAME,STEP);
            new OBJECT_square().CREATE(10,100,1);
        }

        public function STEP():void {}
        public function DRAW():void {}
        public function KEY_DOWN(event:KeyboardEvent):void 
        {
            keyDownText.text = "Key code: " + event.keyCode;
            this.addChild(keyDownText);
        }
    }
}

OBJECT_square.as

package
{
    import flash.display.*;
    import flash.events.*;

    public class OBJECT_square extends Sprite
    {
        public var X:int = 0;
        public var Y:int = 0;
        public var DEPTH:int = 0;
        public var SPRITE:Sprite = new Sprite();
        public function CREATE(X:int,Y:int,DEPTH:int):void
        {
            this.DEPTH = DEPTH;
            this.X = X;
            this.Y = Y;
            DRAW();
        }
        public function DRAW():void
        {
            SPRITE.graphics.beginFill(0xFF0000,1);
            SPRITE.graphics.drawRect(X - 10,Y - 10,20,20);
            SPRITE.graphics.endFill();
            addChild(SPRITE);
        }
    }
}

现在如何将 OBJECT_square 类中的 Sprite 变量 SPRITE 添加到 MAIN 类的显示列表中?我试过 addChild(SPRITE) 和 super.addChild(SPRITE)。如果一切正常,我应该会在屏幕上的某个地方看到一个红色方块,但现在它全是空白的,除了在 MAIN 类中绘制的文本。

基本上我想要它,这样我就可以创建一个新的 OBJECT_square,它会在没有来自 MAIN 类的任何更多指令的情况下自行绘制。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    试试这个:

    var obj:OBJECT_square = new OBJECT_square();
    obj.CREATE(10,100,1);
    addChild(obj);
    

    或者,如果你真的想一次性完成,你可以试试这个:

    主要

    addChild((new OBJECT_square()).CREATE(10,100,1));
    

    并更改您的绘图函数以返回方形对象

        public function DRAW():OBJECT_square
        {
            SPRITE.graphics.beginFill(0xFF0000,1);
            SPRITE.graphics.drawRect(X - 10,Y - 10,20,20);
            SPRITE.graphics.endFill();
            addChild(SPRITE);
            return this;
        }
    

    【讨论】:

    • +1 因为他没有给你。那么,他现在是第四个帐户了吗?
    • @Gunslinger47。更像第十个。但风格始终如一……独一无二?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多