1

我正在尝试安排一个函数的调用,该函数是 changeScene() 并且它永远不会被调用

知道我在做什么错吗?

Cocos-2d-x 3.0

#include "LoadingScene.h"
LoadingScene::LoadingScene(){}

LoadingScene::~LoadingScene(){}

bool LoadingScene::init() {
    return Scene::init();
}

void LoadingScene::onEnter(){
    // add background to current scene
    Sprite *background = Sprite::create("splash.png");
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();
    background->setPosition(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2);
    this->addChild(background);

    // start ansyc method load the atlas.png
    Director::getInstance()->getTextureCache()->addImageAsync("atlas.png", CC_CALLBACK_1(LoadingScene::loadingCallBack, this));
}

void LoadingScene::loadingCallBack(Texture2D *texture){
    AtlasLoader::getInstance()->loadAtlas("atlas.txt", texture);
    this->scheduleOnce(schedule_selector(LoadingScene::changeScene), 2.0f);
}

void LoadingScene::changeScene(float dt) {
    auto scene = WelcomeScene::create();
    TransitionScene *transition = TransitionFade::create(1, scene);
    Director::getInstance()->replaceScene(transition);
}
4

2 回答 2

1

LoadingScene::onEnter()您必须获得文件的绝对路径:

string fullPath = FileUtils::getInstance()->fullPathForFilename("atlas.png");
Director::getInstance()->getTextureCache()->addImageAsync(fullPath, CC_CALLBACK_1(LoadingScene::loadingCallBack, this));

该方法在许多可以扩展的路径中进行搜索。见描述FileUtils::fullPathForFilename()

于 2014-05-30T06:30:36.877 回答
0

您需要添加 CCLayer::onEnter();

    void LoadingScene::loadingCallBack(Texture2D *texture){
     CCLayer::onEnter();//add this line
    AtlasLoader::getInstance()->loadAtlas("atlas.txt", texture);
    this->scheduleOnce(schedule_selector(LoadingScene::changeScene), 2.0f);
}
于 2015-08-13T02:39:43.233 回答