求助关于动画问题

我自己做了个小人,想用键盘控制他上下左右各个方向做走动动画。
我的构想是按着方向键的时候循环播放动画,放掉按键的时候人物停止。
但是为什么我按着方向键不放的时候过几秒这动画会一直保持在走动动画的第一帧不动了?
请教各位大侠有什么办法可解。为何那个教程里自带的羊没有这个问题。。
附上代码

cc.Class({
    extends: cc.Component,

    properties: {
      hero:{
                default: null,
                type: cc.Node,
      },
    },

    // use this for initialization
      onLoad: function () {
        this.setinput();
        
      },  
        
    setinput : function(){
        var self = this;
         cc.eventManager.addListener({
            event: cc.EventListener.KEYBOARD,
            onKeyPressed: function(keyCode, event) {
                 switch(keyCode) {
                    case cc.KEY.a:
                        dir = 4;
                        self.hero.getComponent('myHero').changeDirection(dir);
                        break;
                    case cc.KEY.d:
                        dir = 6;
                        self.hero.getComponent('myHero').changeDirection(dir);
                        break;
              }  
            },
             onKeyReleased: function(keyCode, event) {
                 switch(keyCode) {
                    case cc.KEY.a:
                        dir = 40 ;
                        self.hero.getComponent('myHero').changeDirection(dir); 
                        break;
              }  
            },   
         },self.node);
    },

   }


```


cc.Class({
    extends: cc.Component,

    properties: {
      
        AnimName :'',
    },
    changeDirection: function(dir){
       this.getComponent(cc.Animation).play(this.AnimName + dir)  
    },

    onLoad: function () {

    },

 
});




```

onKeyReleased: function(keyCode, event) {
switch(keyCode) {
case cc.KEY.a:
dir = 40 ; //这里的方向 40是对应的站立那个动画的标号吗?
self.hero.getComponent(‘myHero’).changeDirection(dir);
break;
}
},

如果是的话 请做如下修改

onKeyReleased: function(keyCode, event) {
switch(keyCode) { //←这行删掉
case cc.KEY.a: //←这行删掉
dir = 40 ;
self.hero.getComponent(‘myHero’).changeDirection(dir);
break; //←这行删掉
} //←这行删掉
},

大师我是参考你魔力宝贝那个做的,可惜这键盘控制好像非常鬼。
我照你说的删掉了还是不对。。
其实按我原来的这样发布到VS去运行的话不会出现按久了卡在第一帧的情况,但是出现个非!常!诡!异!的事情,就是我松开A键比如,他会播放我站立的动画,但是放完了后,又自动开始放对应的行走动画了。。。。。

不知道能不能帮到你
//动画播放函数
animControl:function()
{
//state是现在的状态,oldstate是之前的状态,只有在之前状态和现在状态不一样的情况下才播放动画
//否则的话会反复执行play函数,导致动画一直处于第一帧
//state用数字标记现在的状态,比如0是向左站立,1是向右站立,在键盘输入的时候更新state的值
if(this.oldstate!==this.state)
{
//停止所有动画,我做的时候行走动画是loop而站立动画是normal,导致播完站立动画之后继续播放行走动画
this.node.getChildByName(“image”).getComponent(cc.Animation).stop();
//播放动画
this.node.getChildByName(“image”).getComponent(cc.Animation).play(""+this.state);
//更新oldstate的值
this.oldstate=this.state;
}
},

对了 原先行走的动画要停掉this.anim.stop(“动画名”)

我昨天也用过stop(); 但是动画就停在了那一帧,然后我用stop(true,true)和stop(true),完全不起作用,停都停不下来了

好的我回家试试,就像你说的那种情况