我正在工作的CoCos2d与android.I想添加一个无尽的滚动背景到我的屏幕使用CCParallaxNode。
我可以添加背景和移动它,但完成后,该动作的屏幕变黑。
有人可以帮我吗?
我可以添加背景和移动它,但完成后,该动作的屏幕变黑。
有人可以帮我吗?
我的代码是
CCParallaxNode parallaxNode; CCSprite spacedust1; CCSprite spacedust2; CCSprite planetsunrise; CCSprite galaxy; CCSprite spacialanomaly; CCSprite spacialanomaly2; parallaxNode = CCParallaxNode.node(); spacedust1 = CCSprite.sprite("bg_front_spacedust.png"); spacedust2 = CCSprite.sprite("bg_front_spacedust.png"); planetsunrise = CCSprite.sprite("bg_planetsunrise.png"); galaxy = CCSprite.sprite("bg_galaxy.png"); spacialanomaly = CCSprite.sprite("bg_spacialanomaly.png"); spacialanomaly2 = CCSprite.sprite("bg_spacialanomaly2.png"); // 3) Determine relative movement speeds for space dust and background // CGPoint cgPoint = CGPoint.ccp(0.1,0.1); CGPoint dustSpeed = CGPoint.ccp(10,10); CGPoint bgSpeed = CGPoint.ccp(5,5); // CGPoint bgSpeed = ccp(0.05,0.05); parallaxNode.addChild(spacedust1,dustSpeed.x,dustSpeed.y,winSize.height / 2); parallaxNode.addChild(spacedust2,spacedust1.getContentSize().width,winSize.height / 2); parallaxNode.addChild(galaxy,-1,bgSpeed.x,bgSpeed.y,10); parallaxNode.addChild(planetsunrise,600,5); parallaxNode .addChild(spacialanomaly,900,20); parallaxNode.addChild(spacialanomaly2,1500,30); CCIntervalAction go = CCMoveBy.action(4,CGPoint.ccp(winSize.width,0)); CCIntervalAction goBack = go.reverse(); CCIntervalAction seq = CCSequence.actions(go,goBack); CCRepeatForever action = CCRepeatForever.action(goBack); parallaxNode.runAction(action);
我看到,因为没有一个单一的答案为你工作。我将提供一个简单的代码,将帮助您为您的parralax滚动背景。
background1 = CCSprite.sprite("bg2.png"); background2 = CCSprite.sprite("bg2.png"); background1.setPosition(CGPoint.ccp(winSize.width*0.5f,winSize.height*0.5f)); addChild(background1); background2.setPosition(CGPoint.ccp(winSize.width+winSize.width*0.5f,winSize.height*0.5f)); addChild(background2);
this.schedule("scroll");
现在滚动方法。
public void scroll(float dt) { CGPoint pos1 = background1.getPosition(); CGPoint pos2 = background2.getPosition(); pos1.x -= 5.0f; pos2.x -= 5.0f; if(pos1.x <=-(winSize.width*0.5f) ) { pos1.x = pos2.x + winSize.width; } if(pos2.x <=-(winSize.width*0.5f) ) { pos2.x = pos1.x + winSize.width; } background1.setPosition(pos1); background2.setPosition(pos2); }
标记我的答案如果它的工作。