从 场景sceneA 通过pushScene() 到 场景sceneB,然后需要从sceneB返回到sceneA时,用popScene()方法却没有动画实现,请问各位有什么思路或方法
(在不用repleaceScene()的情况)。。。
参考testcpp里面的 SceneTest的例子:
void SceneTestLayer1::onPushSceneTran(Object* sender) { auto scene = new SceneTestScene(); auto layer = new SceneTestLayer2(); scene->addChild( layer, 0 ); Director::getInstance()->pushScene( TransitionSlideInT::create(1, scene) ); scene->release(); layer->release(); } ```
从一个场景进入另一个场景:
CCDirector::sharedDirector()->pushScene(myScene::scene());
返回只需在一个响应事件的按钮中加入
CCDirector::sharedDirector()->popScene();
楼上2个,你们答非所问。
对啊,这个怎么解决呢?
你可以注册一个事件enter,
function Test1:onEnter()
self:setOpacity(0);
self:runAction(cc.FadeIn:create(0.5));
end
self:registerScriptHandler(onEnter);
之前有写过,再贴一遍:
需要修改引擎的Director::popScene()函数,也可以进行重载或者设置默认参数。
void Director::popScene(const std::function& callback) { CCASSERT(_runningScene != nullptr, "running scene should not null"); _scenesStack.popBack(); ssize_t c = _scenesStack.size(); if (c == 0) { end(); } else { _sendCleanupToScene = true; _nextScene = _scenesStack.at(c - 1); if(callback) callback(_nextScene); } } ``` 使用方式:auto callback = ](Scene*& scene){scene = TransitionJumpZoom::create(1.0f, scene);}; Director::getInstance()->popScene(callback); ```
谢谢