C++ 颤抖的精灵cocos2dx 3.0
我注意到雪碧在加速下行时颤抖。。以下是全部代码: 我正在用iPhone3GS测试这段代码,猜猜为什么 TestScene.h:C++ 颤抖的精灵cocos2dx 3.0,c++,opengl-es,cocos2d-x,C++,Opengl Es,Cocos2d X,我注意到雪碧在加速下行时颤抖。。以下是全部代码: 我正在用iPhone3GS测试这段代码,猜猜为什么 TestScene.h: class TestScene : public Layer { public: .... virtual void update(float delta); float spawnTime = 0.9; float untilNextSpawn = 0; virtual void spawn(); float gam
class TestScene : public Layer {
public:
....
virtual void update(float delta);
float spawnTime = 0.9;
float untilNextSpawn = 0;
virtual void spawn();
float gameSpeed = 200;
float gameAcceleration = 10;
Vector<Sprite*> objects;
};
类测试场景:公共层{
公众:
....
虚拟空隙更新(浮动增量);
浮动时间=0.9;
float untinextspawn=0;
虚拟空产卵();
浮动游戏速度=200;
浮子加速度=10;
矢量对象;
};
TestScene.cpp:
void TestScene::update(float delta) {
untilNextSpawn -= delta;
if (untilNextSpawn <= 0) {
spawn();
untilNextSpawn = spawnTime;
}
gameSpeed += gameAcceleration * delta;
for (int i = 0; i < objects.size(); i++) {
Sprite* t = objects.at(i);
if (t->getPosition().y <= 0)
t->setVisible(false);
else
t->setPositionY(t->getPositionY() - gameSpeed * delta);
}
}
void TestScene::spawn() {
Sprite* sprite = NULL;
for (int i = 0; i < objects.size(); i++) {
Sprite* t = objects.at(i);
if (!t->isVisible()) {
sprite = t; break;
}
}
if (!sprite) {
sprite = Sprite::create("prefab_button.png");
this->addChild(sprite);
objects.pushBack(sprite);
}
sprite->setVisible(true);
sprite->setPosition(Point(getContentSize().width / 2, getContentSize().height + 100));
}
void TestScene::更新(浮点增量){
直到外部繁殖-=三角洲;
if(untilNextSpawn getPosition().y setVisible)(false);
其他的
t->setPositionY(t->getPositionY()-gameSpeed*delta);
}
}
void TestScene::spawn(){
Sprite*Sprite=NULL;
对于(int i=0;iisVisible()){
雪碧=t;破裂;
}
}
如果(!精灵){
sprite=sprite::create(“prefab_button.png”);
此->添加子对象(精灵);
对象。推回(精灵);
}
精灵->设置可见(真);
精灵->设置位置(点(getContentSize().width/2,getContentSize().height+100);
}
预制按钮.png:
TestScene.h:
TestScene.cpp:
下面是视频:不要发布链接。如果代码太长,请将其缩减到最小的测试用例。尝试检查x和y位置是否始终相同……为什么?这不可能是相同的。可以在
spawn()
中解释为什么要在循环中设置sprite=t
,然后在循环完成后检查(!sprite)
这与上一次循环完全相同,然后在(!sprite)中重新设置sprite然后重新添加回循环中读取的同一向量。也不需要使用
Sprite*t`……当Sprite离开屏幕时,我隐藏它,然后当我必须生成一些Sprite时,首先我检查屏幕上是否有一些对象,然后使用它,否则我必须创建一个新对象,然后将其添加到screen和数组。