Animation.play();不播放动画

创了一全prefab 里面有一个节结然后有5个子节点。每个子节点都一样的。就只有一个Animation组件
里面都一个只有一个名为“soldier_shoot"的AnimationClip。

我在另外的节点上的脚本获取这个这个prefab,创建实例,添加根节点上。可以显示出来了。但在按钮的点击事件的代码中添加下面的代码。动画就是不能播放。只显示了最初那一帧sprite.
我打了各种log,Animation看直来是没有问题的,时长,AnimationClip的名字都可以获取。
但是anim.play(‘soldier_shoot’);这代码执行后就是没有效果。动画不播放。。真无解了。。
有没有人遇到相同的情况呀。

cc.log(“onclicked” + data);
var children = this.soldierPrefab.data._children;
for (var i = 0; i < children.length; ++i) {
var anim = children[i].getComponent(cc.Animation);
if (anim && (anim instanceof cc.Animation)) {
cc.log(“anim.defaultClip.name=” + anim.defaultClip.name)
var animState = anim.play(‘soldier_shoot’);
var duration = animState.duration;
cc.log(“anim duration =” + duration);
cc.log(“anim=” + anim);
}
}

需要将prefab放入resouces目录下。然后用下面这种方式实例化。
就可以了。。

let self = this;
cc.loader.loadRes("/Soldier", cc.Prefab, function (err, prefab) {
cc.log(“loadRes”);
if (!err) {
self.soldierPrefab = cc.instantiate(prefab);
self.soldierPrefab.parent = cc.find(“Canvas”);
cc.log(“is 0:” + (self.soldierPrefab instanceof cc.Prefab));
} else {
cc.log(“err=” + err);
}
});

兄弟,是不是动画里面的opacity做了淡出效果,忘了finished的时候设置回来呀?