zoukankan      html  css  js  c++  java
  • 场景的切换

    /**

     * 以下代码实现的是切换场景的目的,

     * 点击文本框中的字体时,切换场景,有图片

     */

    //1.修改bool HelloWorld::init()方法

    //2.创建ImageScene方法,c++

    //3.将创建的场景添加到bool HelloWorld::init()中,

    //4.在最开始的位置上添加#include "ImageScene.h"

    //5.别忘了将自己创建的方法添加到xcode的编译环境中,不然运行时异常

    //6.点击项目,点击Build Phases,找到Compile Sources,将自建的cpp添加进去

    bool HelloWorld::init()

    {

        //////////////////////////////

        // 1. super init first

        if ( !Layer::init() )

        {

            return false;

        }

       

        /**

         * 以下代码实现的是切换场景的目的,

         * 点击文本框中的字体时,切换场景,有图片

         */

        //获得可见区域的大小

        Size visibleSize = Director::getInstance()->getVisibleSize();

       

       

        //添加文本框,文本内容,字体种类,字体的大小

        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());

            }

            return false;

        };

        // 3.添加事件监听器

        //参数(监听器,节点即要监听的节点)

        Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);

       

       

        return true;

    }

    ImageScene.h

    //

    //  ImageScene.h

    //  L01StartScene

    //

    //  Created by Mac OS 10.9.3 on 15-3-26.

    //

    //

    #ifndef __L01StartScene__ImageScene__

    #define __L01StartScene__ImageScene__

    #include <iostream>

    #include <cocos2d.h>//引入cocos2d的头文件

    USING_NS_CC;        //使用cocos2d的命名空间

    //创建一个ImageScene的类,继承与Layer

    class ImageScene : public Layer {

    public:

        virtual bool init();//创建ImageScene的初始化方法

        static Scene* createScene();//创建一个scene的方法

        CREATE_FUNC(ImageScene);//创建ImageScene的create()方法

    };

    #endif /* defined(__L01StartScene__ImageScene__) */

    ImageScene.cpp

    //

    //  ImageScene.cpp

    //  L01StartScene

    //

    //  Created by Mac OS 10.9.3 on 15-3-26.

    //

    //

    #include "ImageScene.h"

    //实现.h中的创建场景的方法

    Scene* ImageScene::createScene(){

        Scene* scene = Scene::create();//创建一个场景

        ImageScene* layer = ImageScene::create();//创建一个层

        scene->addChild(layer);//将创建的层添加进场景中

        return scene;

    }

    //实现初始化方法

    bool ImageScene::init(){

        //获得可见区域的大小

        Size size = Director::getInstance()->getVisibleSize();

        Sprite* sprite = Sprite::create("HelloWorld.png");//创建一个图片

        //将图片放在居中的位置

        sprite->setPosition(Point(size.width / 2, size.height / 2));

        addChild(sprite);//添加进去

        return true;//如果返回的是false则认为类创建不成功,这不是我们所要的

    }

  • 相关阅读:
    Android 密匙库导出
    Android常用布局
    asp.net hessian + android hessdroid
    Android文件上传
    android,gridview
    Android文件下载
    Andriod 之数据获取
    java类的泛型DAO
    Spring之AOP编程
    mysql中如何统计某字段里某个字符的个数
  • 原文地址:https://www.cnblogs.com/dudu580231/p/4373554.html
Copyright © 2011-2022 走看看