cocos2d - Sprite 显示不正确
cocos2d - Sprite doesn't show properly
我正在使用 cocos2dx v3.11.1 和 c++ 为 iOS 平台创建简单的游戏。但是我 运行 遇到了精灵移动的奇怪问题。
主要对象的定义如下:
Sprite *logoBackSprite;
SpriteFrameCache *cache;
SpriteBatchNode *batchNode;
我是这样从 plist 创建精灵的:
cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("game_sprites1.plist");
batchNode = SpriteBatchNode::create("game_sprites1.png");
addChild(batchNode);
logoBackSprite = Sprite::createWithSpriteFrameName(fileName);
logoBackSprite->setPosition(Vec2(centerPoint.x-4, centerPoint.y + 200-43));
addChild(logoBackSprite, 0);
之后我调用必须为精灵执行简单移动动画的函数。此函数的代码如下所示:
void MainMenuScene::playMenuAnimations() {
float startDelay = 0.0f;
auto windowSize = Director::getInstance()->getVisibleSize();
Point centerPoint = Vec2(windowSize.width/2, windowSize.height/2);
logoBackSprite->stopAllActions();
logoBackSprite->setOpacity(0);
logoBackSprite->runAction(Sequence::create(DelayTime::create(startDelay + 0.5 + 0.75),
FadeTo::create(0.5f, 255),
nullptr));
}
但是当我 运行 申请时 - 没有任何反应。你能指出我做错了什么吗?谢谢。
编辑 经过几个小时的实验,我注意到,运行精灵对象的动作方法不起作用。例如,我已经创建了精灵帧的矢量,我想要 运行 动画。当我 运行 应用程序时,我可以看到这个精灵,但动画仍然不起作用。也许,我错过了重要的事情?
EDIT2
今天我注意到任何动作都适用于之前的场景。
问题已解决。问题出在我想要 运行 动画的场景配置不当。
我应该覆盖 onEnter() 和 onExit() 方法。在场景的 onEnter() 方法中,我调用
Layer::onEnter();
同样在场景 class 中,我创建了这样的 init() 方法:
bool MainMenuScene::init() {
if ( !Layer::init() )
{
return false;
}
return true;
}
动画运行完美!
我正在使用 cocos2dx v3.11.1 和 c++ 为 iOS 平台创建简单的游戏。但是我 运行 遇到了精灵移动的奇怪问题。
主要对象的定义如下:
Sprite *logoBackSprite;
SpriteFrameCache *cache;
SpriteBatchNode *batchNode;
我是这样从 plist 创建精灵的:
cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("game_sprites1.plist");
batchNode = SpriteBatchNode::create("game_sprites1.png");
addChild(batchNode);
logoBackSprite = Sprite::createWithSpriteFrameName(fileName);
logoBackSprite->setPosition(Vec2(centerPoint.x-4, centerPoint.y + 200-43));
addChild(logoBackSprite, 0);
之后我调用必须为精灵执行简单移动动画的函数。此函数的代码如下所示:
void MainMenuScene::playMenuAnimations() {
float startDelay = 0.0f;
auto windowSize = Director::getInstance()->getVisibleSize();
Point centerPoint = Vec2(windowSize.width/2, windowSize.height/2);
logoBackSprite->stopAllActions();
logoBackSprite->setOpacity(0);
logoBackSprite->runAction(Sequence::create(DelayTime::create(startDelay + 0.5 + 0.75),
FadeTo::create(0.5f, 255),
nullptr));
}
但是当我 运行 申请时 - 没有任何反应。你能指出我做错了什么吗?谢谢。
编辑 经过几个小时的实验,我注意到,运行精灵对象的动作方法不起作用。例如,我已经创建了精灵帧的矢量,我想要 运行 动画。当我 运行 应用程序时,我可以看到这个精灵,但动画仍然不起作用。也许,我错过了重要的事情?
EDIT2 今天我注意到任何动作都适用于之前的场景。
问题已解决。问题出在我想要 运行 动画的场景配置不当。 我应该覆盖 onEnter() 和 onExit() 方法。在场景的 onEnter() 方法中,我调用
Layer::onEnter();
同样在场景 class 中,我创建了这样的 init() 方法:
bool MainMenuScene::init() {
if ( !Layer::init() )
{
return false;
}
return true;
}
动画运行完美!