在 Cocos2d 中以编程方式循环动画,就像在 Sprite Builder 中将动画链接到自身
Loop an animation programatically in Cocos2d, like chaining the animation to itself in Spritebuilder
我使用 Spritebuilder 将时间线链接到自身以创建一个循环(例如,用于步行),但在某些情况下,我想使用未链接的时间线,并以编程方式循环它们。我相信我可以使用 CCActionSequence 来做到这一点,但还没有找到一个例子。谁能举个例子吗?
这是一个迟到的答案(您可能已经找到了某种解决方案,但我还是发布了以供将来参考):据我所知,实际上没有任何公开的方法可以实现您想要做的事情在 Cocos2d (v.3.4) 的当前版本中。目前看来这不会在 v.4.0 中改变(我根据 Github 上开发分支的当前状态做出这个假设,但这当然可以改变)。
就是说,如果您愿意接受一点黑客攻击,我已经在 CCAnimationManager 上创建了一个 category,它公开了在 Spritebuilder 中创建的 CCBSequence
s(即时间轴) ,从而可以更改应在代码中将哪些时间线链接在一起。使用此类别时,您可以这样做:
//Get the timeline that you want to change
CCBSequence * timeline = [_myNode.animationManager sequenceForSequenceNamed:@"TimeLineToLoop"];
//Set the chainedSequenceId to the timelines own id to make it loop infinitely.
timeline.chainedSequenceId = timeline.sequenceId;
//Run the loop
[_myNode.animationManager runAnimationsForSequenceNamed:timeline.name];
我使用 Spritebuilder 将时间线链接到自身以创建一个循环(例如,用于步行),但在某些情况下,我想使用未链接的时间线,并以编程方式循环它们。我相信我可以使用 CCActionSequence 来做到这一点,但还没有找到一个例子。谁能举个例子吗?
这是一个迟到的答案(您可能已经找到了某种解决方案,但我还是发布了以供将来参考):据我所知,实际上没有任何公开的方法可以实现您想要做的事情在 Cocos2d (v.3.4) 的当前版本中。目前看来这不会在 v.4.0 中改变(我根据 Github 上开发分支的当前状态做出这个假设,但这当然可以改变)。
就是说,如果您愿意接受一点黑客攻击,我已经在 CCAnimationManager 上创建了一个 category,它公开了在 Spritebuilder 中创建的 CCBSequence
s(即时间轴) ,从而可以更改应在代码中将哪些时间线链接在一起。使用此类别时,您可以这样做:
//Get the timeline that you want to change
CCBSequence * timeline = [_myNode.animationManager sequenceForSequenceNamed:@"TimeLineToLoop"];
//Set the chainedSequenceId to the timelines own id to make it loop infinitely.
timeline.chainedSequenceId = timeline.sequenceId;
//Run the loop
[_myNode.animationManager runAnimationsForSequenceNamed:timeline.name];