【问题标题】:cocos2d - Sprite doesn't show properlycocos2d - Sprite 无法正确显示
【发布时间】:2016-07-02 15:59:13
【问题描述】:

我正在使用 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));
}

但是当我运行应用程序时 - 没有任何反应。你能指出我做错了什么吗?谢谢。

编辑 经过几个小时的实验,我注意到,精灵对象的 runAction 方法不起作用。例如,我创建了精灵帧矢量,我想运行动画。当我运行应用程序时,我可以看到这个精灵,但动画仍然不起作用。也许,我错过了重要的事情?

EDIT2 今天我注意到任何动作都可以在之前的场景中发挥作用。

【问题讨论】:

    标签: c++ ios cocos2d-iphone


    【解决方案1】:

    问题已解决。问题在于我想运行动画的场景配置错误。 我应该重写 onEnter() 和 onExit() 方法。在场景的 onEnter() 方法中,我调用了

    Layer::onEnter();
    

    我也在场景类中创建了类似的 init() 方法:

    bool MainMenuScene::init() {
        if ( !Layer::init() )
        {
            return false;
        }
    
        return true;
    }
    

    动画完美运行!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2014-04-23
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多