cocos2d-xv3窗口中的一些基础知识
关于cocos2d-xv3中的一些问题,我有一些基本问题 1.)当我创建这样的精灵时:cocos2d-xv3窗口中的一些基础知识,cocos2d-x,Cocos2d X,关于cocos2d-xv3中的一些问题,我有一些基本问题 1.)当我创建这样的精灵时: cocos2d::Sprite *sprite1 = cocos2d::Sprite::create("test.png"); auto sprite2 = cocos2d::Sprite::create("test.png"); void HelloWorld::runAnimationWalk() { auto spritebatch = cocos2d::SpriteBatchNode::cr
cocos2d::Sprite *sprite1 = cocos2d::Sprite::create("test.png");
auto sprite2 = cocos2d::Sprite::create("test.png");
void HelloWorld::runAnimationWalk() {
auto spritebatch = cocos2d::SpriteBatchNode::create("robo.png");
auto cache = cocos2d::SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("robo.plist");
//spritebatch->addChild(worker);
Vector<SpriteFrame *> animFrames(5);
char str[100] = {0};
for(int i = 1; i <= 5; i++)
{
sprintf(str, "robot%i.png", i);
cocos2d::SpriteFrame* frame = cache->getSpriteFrameByName( str );
animFrames.pushBack(frame);
}
auto animWalk = cocos2d::Animation::createWithSpriteFrames(animFrames, 0.1f);
vector<Worker>::iterator it = workerVector.begin();
for(int k = 0; k<workerVector.size();k++) {
if(it->getType() == 1)
it->getWorker()->runAction(RepeatForever::create(Animate::create(animWalk)));
it++;
}
}
我怎么才能使它们恢复原状?我应该使用autorelease吗(当我在创建它之后使用它时,它会崩溃)?对于这两种变体,我是否可以只使用:
sprite1->removeFromParentAndCleanup(true);
sprite2->removeFromParentAndCleanup(true);
2.)当我想要一个动画在HelloWorld场景中处于活动状态,以便我可以在需要时使用它时,我该如何做?我试过这样的方法:
cocos2d::Sprite *sprite1 = cocos2d::Sprite::create("test.png");
auto sprite2 = cocos2d::Sprite::create("test.png");
void HelloWorld::runAnimationWalk() {
auto spritebatch = cocos2d::SpriteBatchNode::create("robo.png");
auto cache = cocos2d::SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("robo.plist");
//spritebatch->addChild(worker);
Vector<SpriteFrame *> animFrames(5);
char str[100] = {0};
for(int i = 1; i <= 5; i++)
{
sprintf(str, "robot%i.png", i);
cocos2d::SpriteFrame* frame = cache->getSpriteFrameByName( str );
animFrames.pushBack(frame);
}
auto animWalk = cocos2d::Animation::createWithSpriteFrames(animFrames, 0.1f);
vector<Worker>::iterator it = workerVector.begin();
for(int k = 0; k<workerVector.size();k++) {
if(it->getType() == 1)
it->getWorker()->runAction(RepeatForever::create(Animate::create(animWalk)));
it++;
}
}
void HelloWorld::runAnimationWalk(){
auto-spritebatch=cocos2d::SpriteBatchNode::create(“robo.png”);
auto cache=cocos2d::SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile(“robo.plist”);
//spritebatch->addChild(工人);
矢量帧(5);
char str[100]={0};
for(int i=1;i获取spriteframebyname(str);
动画帧。回推(帧);
}
auto animWalk=cocos2d::Animation::CreateWithPriteFrames(animFrames,0.1f);
向量::迭代器it=workerVector.begin();
对于(int k=0;kgetType()==1)
它->getWorker()->runAction(RepeatForever::create(Animate::create(animWalk));
it++;
}
}
这是可行的,但我必须在我想要更改动画后始终调用该函数。我试图保存spritebatch、缓存等…全局,但动画在几分钟后就会消失。答案1)是。这是一个完整的场景:
//Create
Sprite *sprite1 = cocos2d::Sprite::create("test.png");
this->addChild(sprite1);
// Deleter Later
sprite1->removeFromParent();
答案2)您可以创建动画(动画*
)并在任何精灵上运行它。
请注意:
RepeatForever::create(YourAnimation)
制作无限版本的动画动画*
和保留()
直到在某个目标(精灵)上运行它。(在目标机上运行时,不要忘记ro释放它)