【发布时间】:2013-07-31 16:17:46
【问题描述】:
好吧,我的问题很简单,我从 cocos2d-x 编程开始,我正在尝试制作一个平铺的无限背景,假设我有一个我想无限重复的图像的 png 作为背景,什么我所做的是我创建了一个 Sprite 作为容器,然后我添加了具有相同图像的 sprite,一个旁边的下一个,覆盖了大约 110% 的屏幕,然后,按照 Space 游戏教程,我再次创建了相同的 sprite第二个背景,我将它用作两个相同的大图像来无限滚动......它工作完美......但我想知道是否可以通过复制第一个来创建第二个精灵。一些代码可能会清除我的情况:
这在 init() 中:
acum = 0.0;
city1 = CCSprite::create();
for(int i = 0; i < 12; ++i) {
CCSprite *city = CCSprite::createWithSpriteFrameName("env_buildings_background2.png");
city->setPosition(ccp(acum, 0));
city1->addChild(city);
acum+= city->getContentSize().width*0.99;
}
city1->setContentSize(ccp(acum, 0));
city2 = CCSprite::create();
acum = 0.0;
for(int i = 0; i < 12; ++i) {
CCSprite *city = CCSprite::createWithSpriteFrameName("env_buildings_background2.png");
city->setPosition(ccp(acum, 0));
city2->addChild(city);
acum+= city->getContentSize().width*0.99;
}
city2->setContentSize(ccp(acum, 0));
_backgroundNode->addChild(city1, -1 , buildingspeed, ccp(0, winSize.height * 0.6));
_backgroundNode->addChild(city2, -1 , buildingspeed, ccp(city1->getContentSize().width, winSize.height * 0.6));
printf("%f - %f\n", city1->getContentSize().width, city2->getContentSize().width);
主要问题在这里,我需要从 city1 创建 city2 而不仅仅是重复代码...有没有办法做到这一点?我在 CCSprite 中没有看到允许我这样做的构造函数...
这在 update() 中:
CCArray *cities = CCArray::createWithCapacity(2);
cities->addObject(city1);
cities->addObject(city2);
for ( int ii = 0; ii <cities->count(); ii++ ) {
CCSprite * city = (CCSprite *)(cities->objectAtIndex(ii));
float xPosition = _backgroundNode->convertToWorldSpace(city->getPosition()).x;
float size = city->getContentSize().width;
if ( xPosition < -size ) {
_backgroundNode->incrementOffset(ccp(city->getContentSize().width*2,0),city);
}
}
如果有任何帮助,我将不胜感激,在此先感谢。
【问题讨论】:
标签: c++ cocos2d-iphone sprite cocos2d-x