错误:#1009:输入错误(第#114行)

时间:2012-12-13 15:46:21

标签: actionscript-3

我有点像闪光灯的菜鸟,但我现在正在编写一个游戏,我正在尝试让我的角色移动但是我收到错误#1009这是我的代码#34游戏状态&#34 ;. 基本上它在任何Keypress上出错了,我的角色名为player(图书馆中的Player),并且它里面有另一个名为WalkDown的影片剪辑(我在时间轴上给了它一个实例名称walkDown)我真的不确定什么去了上。特别是它在调用帧名称的行上出错。任何帮助,将不胜感激! 包{

import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.geom.Point;

public class GameState extends MovieClip {

    private var player:MovieClip;
    private var walking:Boolean = false;


        // is the character shooting
        //private var shooting:Boolean = false;

        // wlaking speed
        private var walkingSpeed:Number = 5;
        private var xVal:Number = 0;
        private var yVal:Number = 0;




    public function GameState() {

        // constructor code
        player = new Player();
        addChild(player);
        player.x = 300;
        player.y = 300;
        player.gotoAndStop("stance");



    this.addEventListener(Event.ADDED_TO_STAGE, initialise);


    }
    private function initialise(e:Event){
        // add a mouse down listener to the stage
        //addEventListener(MouseEvent.MOUSE_DOWN, startFire);

        // add a mouse up listener to the stage
        //addEventListener(MouseEvent.MOUSE_UP, stopFire);
        player.addEventListener(Event.ENTER_FRAME,motion);
        stage.addEventListener(KeyboardEvent.KEY_UP,onKey); 
        // add a keyboard down listener
        stage.addEventListener(KeyboardEvent.KEY_DOWN, offKey);
        stage.focus = stage;

        // Add keyboard events


    }
    private function motion(e:Event):void{
        // if we are currently holding the mouse down
        //if (shooting){
            //FIRE
            //fire();

        //}
       player.x +=  xVal;
       player.y +=  yVal;

        }



    //private function startFire(m:MouseEvent){
        //shooting = true;
    //}
    //private function stopFire(m:MouseEvent){
        //shooting = false;
    //}
    private function onKey(evt:KeyboardEvent):void
    {
        trace("key code: "+evt.keyCode);
        switch (evt.keyCode)
        {
            case Keyboard.W :
               yVal =  walkingSpeed;

                if (! walking)
                {
                    trace("walking up");
                    player.walkDown.gotoAndPlay("walking");
                    walking = true;
                }
                break;
            case Keyboard.S :
                yVal = - walkingSpeed;
                if (! walking)
                {
                    player.walkDown.gotoAndPlay("walking");
                    walking = true;
                }
                break;
            case Keyboard.A :
            xVal = walkingSpeed;
                if (! walking)
                {
                     player.walkDown.gotoAndPlay("walking");
                    walking = true;
                }
                break;
            case Keyboard.D :
               xVal = walkingSpeed;
                if (! walking)
                {
                    player.walkDown.gotoAndPlay("walking");
                    walking = true;
                }
             break;
        }
    }
    private function offKey(evt:KeyboardEvent):void
    {
        switch (evt.keyCode)
        {
            case Keyboard.W :
                //for now just reset velocity to zero
                yVal = 0;
            //also stop walk cycle etc.
               player.gotoAndStop("stance");
                //don't forget to update your Boolean
                walking = false;
                break;
                 case Keyboard.S :
                //for now just reset velocity to zero
                yVal = 0;
            //also stop walk cycle etc.
               player.gotoAndStop("stance");
                //don't forget to update your Boolean
                walking = false;
                break;
                 case Keyboard.A :
                //for now just reset velocity to zero
                xVal = 0;
            //also stop walk cycle etc.
               player.gotoAndStop("stance");
                //don't forget to update your Boolean
                walking = false;
                break;
                     case Keyboard.D :
                //for now just reset velocity to zero
                xVal = 0;
                //also stop walk cycle etc.
               player.gotoAndStop("stance");
                //don't forget to update your Boolean
                walking = false;
                break;
        }
    }
    // Players Motion




    private function fire():void{
        var b= new Bullet();
        // set the position and rotation of the bullet
        b.rotation = rotation;
        b.x = x;
        b.y = y;
        // add bullets to list of bullets
        MovieClip(player).bullets.push(b);

        // add bullet to parent object
        player.addChild(b);
        // play firing animation        
        player.shooting.gotoAndPlay("fire");
    }


}


}

1 个答案:

答案 0 :(得分:0)

您说

时出现错误#1009(无法访问空对象引用的属性或方法)
player.walkDown.gotoAndPlay("walking");

如果是这样,那是因为你必须首先进入WalkDown MovieClip所在的框架才能访问它。

如果你的“stance”框架在第1帧并且你的WalkDown MovieClip在第2帧中。你的onKey函数中的代码应如下所示:

case Keyboard.W :
    yVal =  walkingSpeed;

    if (! walking)
    {
        trace("walking up");
        player.gotoAndStop(2); // player.walkDown is now accessible //
        player.walkDown.gotoAndPlay("walking");
        walking = true;
    }
    break;