新人求指导 “用update不能实现自动循环播放”

cc.Class({
extends: cc.Component,

onLoad () {
var self = this;
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed: function(keyCode, event)
{
self._onKeyPressed(keyCode, event);
}
}, self.node);
},

update: function (dt) {
this._timer += dt;
if ( this._timer >= 5.0 ) {
this. playani();
this._timer = 0.0;
}},

playani() {
var anim = this.getComponent(cc.Animation);
anim.play(‘ani1’);
},

_onKeyPressed: function(keyCode, event) {
var anim = this.getComponent(cc.Animation);
switch(keyCode) {
case cc.KEY.a:
anim.play(‘ani2’);
break;
case cc.KEY.b:
anim.play(‘ani3’);
break;
default:
return;
} },
}
);

键盘能控制播放动画,但是用update不能实现自动循环播放

你的this._timer哪里声明的啊?

谢谢
但是声明了,启动后5秒开始卡死,并没有播放动画,而且键盘不能控制了
cc.Class({
extends: cc.Component,

start: function () {
this._timer = 0.0;
},

onLoad () {
var self = this;
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed: function(keyCode, event)
{
self._onKeyPressed(keyCode, event);
}
}, self.node);
},

update: function (dt) {
this._timer += dt;
if ( this._timer >= 5.0 ) {
this. playani();
this._timer = 0.0;
}},

playani() {
var anim = this.getComponent(cc.Animation);
anim.play(‘ani1’);
},

_onKeyPressed: function(keyCode, event) {
var anim = this.getComponent(cc.Animation);
switch(keyCode) {
case cc.KEY.a:
anim.play(‘ani2’);
break;
case cc.KEY.b:
anim.play(‘ani3’);
break;
default:
return;
} },
}
);

控制台有无报错?还有_timer你应该在properties里声明吧?

您好,都没有报错
properties: {
_timer: 0.0,
},

start: function () {
this._timer = 0.0;
},
的测试效果都是启动后5秒开始卡死,并没有播放动画,而且键盘不能控制了

做个demo传上来看看?

非常感谢,demo已上传,麻烦您了boxing.part2.rar (1.5 MB)
boxing.part1.rar (2 MB)

你脚本里播放的动画都是固定名字的,而你的脚本在me和he上面都挂载了,假设当前node是me,那么执行he_l动画会怎样?肯定会找不到clip而报错,因为me上面没有he之类的动画,还有你autoBoxing函数里是播放的me_l,那么he节点执行update然后执行autoboxing的时候就找不到me_l这个clip, 我这边是一直都有报错,不知道你那里为什么没报错 :joy:

您好,我刚才试着把me精灵以及me相关的脚本内容都删掉,只保留he的,测试还是5秒后卡死

你在canvas上面也挂载了你的脚本…

谢谢S.H.I.L.E.D大神指教

:joy: 我不是啥大神,我是野生小白啊,只是爱多管闲事