场景切换的效果

在上次的场景切换中增加代码,并在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;

}

 

posted @ 2015-03-28 08:01  silent-bobo  阅读(363)  评论(0编辑  收藏  举报