Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 错误:1009:类型错误(第114行)_Actionscript 3 - Fatal编程技术网

Actionscript 3 错误:1009:类型错误(第114行)

Actionscript 3 错误:1009:类型错误(第114行),actionscript-3,Actionscript 3,我有点不喜欢flash,但我现在正在编写一个游戏,我试图让我的角色移动,但我遇到了错误1009,这是我在游戏状态下的代码。 基本上,它在任何按键上都会出错,我的角色名为player,在库中有另一个电影剪辑名为WalkDown,我给了它一个时间轴上WalkDown的实例名,我不确定到底发生了什么。具体来说,它在调用帧名称的行中出错。任何帮助都将不胜感激! 包装{ import flash.display.Stage; import flash.display.MovieClip; import f

我有点不喜欢flash,但我现在正在编写一个游戏,我试图让我的角色移动,但我遇到了错误1009,这是我在游戏状态下的代码。 基本上,它在任何按键上都会出错,我的角色名为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");
    }


}


}

您是说错误1009无法访问空对象引用的属性或方法时出现

player.walkDown.gotoAndPlay("walking");
如果是这样,那是因为您必须先转到WalkDown MovieClip所在的帧,然后才能访问它

如果说您的站姿帧位于第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;

具体来说,错误出现在我要求播放行走动画的行上。发布完整的错误消息,而不仅仅是代码,会很有帮助。