从 场景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);
```
谢谢
