2016-07-02 5 views
0

iOSプラットフォーム用のシンプルなゲームを作成するために、C++でcocos2dx v3.11.1を使用しています。しかし、私はスプライトの動きで奇妙な問題に遭遇します。メインオブジェクトのcocos2d - スプライトが正しく表示されない

定義は以下のようになります。

Sprite *logoBackSprite; 
SpriteFrameCache *cache; 
SpriteBatchNode *batchNode; 

私はそのようなPLISTからスプライトを作成します。スプライトのための単純移動アニメーションを実行する必要があり、そのIコール機能の後

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)); 
} 

ただし、アプリケーションを実行すると何も起こりません。私が間違っていることを私に指摘できますか?ありがとうございました。

EDIT数時間の実験の後、私はスプライトオブジェクトのrunActionメソッドが動作しないことに気付きました。たとえば、スプライトフレームのベクトルを作成してアニメーションを実行したいとします。アプリケーションを実行すると、このスプライトが見えますが、アニメーションはまだ動作しません。たぶん、私は何か重要なことを忘れましたか?

EDIT2 今日、私は以前のシーンでどのようなアクションも有効であることに気付きました。

答えて

0

問題を解決しました。問題はアニメーションを実行したいシーンの構成が悪いことでした。 onEnter()メソッドとonExit()メソッドをオーバーライドする必要があります。

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

    return true; 
} 

とアニメーションが完全に実行されます:フォーカス取得時()シーンの方法では、私はシーンクラスに

Layer::onEnter(); 

も呼んで、私はそのようなinit()メソッドを作成します!

関連する問題