AS3 Classes Public Atributte

时间:2017-04-21 22:22:15

标签: actionscript-3

每当我尝试运行游戏时,我都会收到错误消息。我得到的错误是每个类都说public属性只能在一个包中使用,在这行中使用“private function moveMe”“private属性只能用于类函数”。我验证了我是否正确链接了as文件。我不确定是什么问题。

package  {
        import flash.display.MovieClip;
        import flash.utils.Timer;
        import flash.events.TimerEvent;
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.events.Event;

        public class banana_fall extends MovieClip {

            public function banana_fall (){
            var velX:Number=0;
            var velY:Number=0;
            var falling:Boolean=false;
            var gravity:Number=2;


                public function banana() {
                var timing:Timer = new Timer(20,0);
                timing.addEventListener(TimerEvent.TIMER,moveMe);
                timing.start();

                }

                private function moveMe(event:TimerEvent){
                this.x=this.x+velX;
                this.y=this.y+velY;

                if (falling) {
                    velY=velY+gravity;
                }
            }

                public function setSpot(atX,atY){
                this.x=atX;
                this.y=atY;
            }

            //
            public function setSpeed(dx,dy){
                velX=dx;
                velY=dy;
            }

                }

        }

    }

1 个答案:

答案 0 :(得分:3)

问题是你的公共函数在你的构造函数中,它在as3中不起作用。 试试这段代码:

package {
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.events.Event;

    public class banana_fall extends MovieClip {

        var velX: Number = 0;
        var velY: Number = 0;
        var falling: Boolean = false;
        var gravity: Number = 2;

        public function banana_fall() {
            var timing: Timer = new Timer(20, 0);
            timing.addEventListener(TimerEvent.TIMER, moveMe);
            timing.start();

        }

        private function moveMe(event: TimerEvent) {
            this.x = this.x + velX;
            this.y = this.y + velY;

            if (falling) {
                velY = velY + gravity;
            }
        }

        public function setSpot(atX, atY) {
            this.x = atX;
            this.y = atY;
        }

        //
        public function setSpeed(dx, dy) {
            velX = dx;
            velY = dy;
        }

    }

}