场景切换的效果
在上次的场景切换中增加代码,并在res中添加一个图片,作为第一个场景中的图片
HelloWorldScene.cpp中的
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
}
/**
* 以下代码实现的是切换场景的目的,
* 点击文本框中的字体时,切换场景,有图片
*/
//获得可见区域的大小
Size visibleSize = Director::getInstance()->getVisibleSize();
//在第一个场景中添加图片,为了能够看得出场景切换时的效果
Sprite *bg = Sprite::create("bird.jpg");
bg->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
addChild(bg);
//添加文本框,文本内容,字体种类,字体的大小
LabelTTF *label = LabelTTF::create("show next scene", "Courier", 36);
addChild(label);//将文本添加到层中
//将文本放在中间
label->setPosition(visibleSize.width/2, visibleSize.height/2);
//为label设置事件监听器
// 1.创建监听器
EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
// 2.让listener->onTouchBegan 指向一个要执行的闭包函数
//[捕获label变量]
listener->onTouchBegan = [label](Touch *t, Event *e){
//判断,label->边界.包括(触摸点),说明点击的是label,则执行一个新的Scene
if (label->getBoundingBox().containsPoint(t->getLocation())) {
// //运行新创建的场景
// Director::getInstance()->replaceScene(ImageScene::createScene());
//设置场景切换的效果,1秒后场景消失
Director::getInstance()->replaceScene(TransitionFadeBL::create(1, ImageScene::createScene()));
}
return false;
};
// 3.添加事件监听器
//参数(监听器,节点即要监听的节点)
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);
return true;
}