Cocos2d-x3.2 双击事件

来源:互联网 发布:mac os x 13.1.02 编辑:程序博客网 时间:2024/05/22 12:33
//GameScene.h#include "cocos2d.h"USING_NS_CC;class GameScene : public cocos2d::Layer{public:    static cocos2d::Scene* createScene();        virtual bool init();        void singleClickEvent();    void doubleClickEvent();        void funCallback(float dt);        virtual bool onTouchBegan(Touch *touch, Event *unused_event);        CREATE_FUNC(GameScene);    private:        //注意不能用auto关键字    Size size;    Sprite *sprite;    bool isClicked;};



//GameScene.cpp//  Created by Jacedy on 14-8-11.#include "GameScene.h"USING_NS_CC;cocos2d::Scene* GameScene::createScene(){    auto scene = Scene::create();   //创建一个场景    auto layer = GameScene::create();   //创建一个图层    scene->addChild(layer);    return scene;}//初始化当前的图层bool GameScene::init(){    if(!Layer::init())      //初始化父类        return false;        //获取屏幕大小    size = Director::getInstance()->getVisibleSize();    //auto size = Director::getInstance()->getWinSize();    //添加一个图片精灵    sprite = Sprite::create("OnePiece_1.png");    sprite->setPosition(Vec2(size.width/2, size.height/2));    this->addChild(sprite);        isClicked = false;        //创建监听事件对象    auto listener = EventListenerTouchOneByOne::create();        //定义监听事件的回调函数    listener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);        //在事件分发器中注册    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);        return true;}void GameScene::singleClickEvent(){    log("Single click");}void GameScene::doubleClickEvent(){    log("Double click");}void GameScene::funCallback(float dt){    if (isClicked)    {        isClicked = false;        singleClickEvent();    }}bool GameScene::onTouchBegan(Touch *touch, Event *unused_event){    if (isClicked)    {        isClicked = false;        doubleClickEvent();    }    else    {        isClicked = true;        //0.3秒内再次点击将再次调用onTouchBegan函数,0.3秒后再次点击将调用funCallback函数        scheduleOnce(schedule_selector(GameScene::funCallback), 0.3f);    }        return false;}


0 0