我在我的cocos2d应用程序中使用Parallax滚动效果。我希望我的背景能够滚动;但是,我可能会错误地实现它,因为我的背景向左滚动,但在此之后,它再也不会回来了。
以下是代码:
- (void) setUpBackground
{
CGSize winSize = [CCDirector sharedDirector].winSize;
// Create the CCParallaxNode
_backgroundNode = [CCParallaxNode node];
[self addChild:_backgroundNode z:-2];
// Create ths prites
para1 = [CCSprite spriteWithFile:@"bg.png"];
para2= [CCSprite spriteWithFile:@"shipp.png"];
// Determine relative movement speeds for trees and background
CGPoint treeSpeed = ccp(0.1, 0.1);
CGPoint bgSpeed = ccp(0.5, 0.5);
// Add children to the CCParallexNode
[_backgroundNode addChild:para1 z:0
parallaxRatio:treeSpeed
positionOffset:ccp(160,winSize.height/2)];
[_backgroundNode addChild:para2 z:1
parallaxRatio:bgSpeed
positionOffset:ccp(para1.contentSize.width* para1.scale, winSize.height/2)];
}
- (void)updateBackground:(ccTime)dt
{
CGPoint backgroundScrollVel = ccp(-1000, 0);
_backgroundNode.position = ccpAdd(_backgroundNode.position, ccpMult(backgroundScrollVel, dt));
}
答案 0 :(得分:0)
您没有显示完整的代码,但我猜您可能会在其他地方安排updateBackground()
。
在updateBackground()
中,您设置背景的位置,其positionX正在减少超时。这就是它永远不会再回来的原因。
当背景到达场景边缘时,您必须计算整个场景的宽度,背景的宽度以及取消预定updateBackground()
。