Actionscript 3 在flash中使用键盘(左键和右键)移动

Actionscript 3 在flash中使用键盘(左键和右键)移动,actionscript-3,flash,actionscript,keyboard-events,Actionscript 3,Flash,Actionscript,Keyboard Events,我试图在游戏中左右移动我的头像,并停留在舞台700X500的边界内,我收到一个错误,说明公共属性只能在包内使用。我是否将公共功能放置在错误的位置 package { import flash.display.MovieClip; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.Keyboar

我试图在游戏中左右移动我的头像,并停留在舞台700X500的边界内,我收到一个错误,说明公共属性只能在包内使用。我是否将公共功能放置在错误的位置

   package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    public class SpaceVigilanteGame extends MovieClip

    {
        public var enemy:Enemy;
        public var avatar:Avatar;
        public var gameTimer:Timer;
        public var useMouseControl:Boolean; 
        public var rightKeyIsBeingPressed:Boolean;
        public var leftKeyIsBeingPressed:Boolean; 
        var gameWidth:int = 0;
        var gameHeight:int = 0;

        public function SpaceVigilanteGame()
        {   useMouseControl = false;
            leftKeyIsBeingPressed = false;
            rightKeyIsBeingPressed = false;
            enemy = new Enemy();
            addChild( enemy );
            avatar = new Avatar();
            addChild( avatar );

            if ( useMouseControl )
            {
                avatar.x = mouseX;
                avatar.y = mouseY;
            }
            else
            {
                avatar.x = 50;
                avatar.y = 400;
            }

            gameWidth = stage.stageWidth;
            gameHeight = stage.stageHeight;


            gameTimer = new Timer( 25 );
            gameTimer.addEventListener( TimerEvent.TIMER, moveEnemy );
            gameTimer.addEventListener( TimerEvent.TIMER, moveAvatar );
            gameTimer.start();
            stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyPress );
            stage.addEventListener( KeyboardEvent.KEY_UP, onKeyRelease );

        public function onKeyPress( keyboardEvent:KeyboardEvent ):void
        {
            if ( keyboardEvent.keyCode == Keyboard.RIGHT )
            {
                rightKeyIsBeingPressed = true;
            }
        }
        public function onKeyRelease( keyboardEvent:KeyboardEvent ):void
        {
            if ( keyboardEvent.keyCode == Keyboard.RIGHT )
            {
                rightKeyIsBeingPressed = false;
            }
        }
        }
        public function moveEnemy( timerEvent:TimerEvent ):void 
        {
            //enemy.moveDownABit();
            if(enemy.x+enemy.width+2<=gameWidth)
                {
                    enemy.moveRight();
                }
            else if(enemy.y+enemy.height+2<=gameHeight)
                {
                    enemy.moveDown();
                }
            else if(enemy.x-2>=0)
                {
                    enemy.moveLeft();
                }
            else if(enemy.y-2>=0)
                {
                    enemy.moveUp();
                }

        }
        public function moveAvatar( timerEvent:TimerEvent ):void
        {
            if ( useMouseControl )
            {
                avatar.x = mouseX;
                avatar.y = mouseY;
            }
            else
            {
                if ( rightKeyIsBeingPressed )
                {
                    avatar.moveRight();
                }
            }
        }



    }
}

在SpaceVigiliteTgame构造函数中,有两个函数是定义为public的onKeyPress和onKeyRelease,这就是为什么会出现这个错误,所以为了避免这个错误,你必须删除public,或者,如果你想把它们作为public,我不这么认为,把它们从类的构造函数中删除


希望这能有所帮助。

从“onKeyPress”和“onKeyRelease”中删除了“public”,但现在我有很多错误。第46行第42列1119:通过静态类型类的引用访问可能未定义的属性KEY_RIGHT。第47行第42列1119:通过静态类型类的引用访问可能未定义的属性KEY_。1061:通过静态类型Avatar的引用调用可能未定义的方法moveRight。@Leopold\u Stotch但没有KeyboardEvent.KEY\u RIGHT和KeyboardEvent.KEY\u LEFT事件,有KeyboardEvent.KEY\u DOWN和KeyboardEvent.KEY\u UP,然后你可以验证按下或释放的键是键盘。右键还是键盘。左键。只有上下两个事件?@Leopold_Stotch是的,就是这样,查看更多详细信息。
package 
{
    import flash.display.MovieClip;
    public class Avatar extends MovieClip 
    {
        public function Avatar() 
        {
            x = 50;
            y = 400;

        }

        public function moveRight()
        {
            x = x + 2; 
        }

        public function moveLeft()
        {
            x = x - 2;
        }
    }
}