Cocos2d-x3.2 双击事件

//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;
}

Cocos2d-x3.2 双击事件,布布扣,bubuko.com

时间: 2024-10-25 18:39:26

Cocos2d-x3.2 双击事件的相关文章

cocos2d-x 2.2 study ------------------------ 双击事件(转)

Cocos2d-x处理双击事件的两种方法! 在 Cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现. 下面介绍两种方式实现双击事件的处理. (一)方法一 第一种方法就是利用两次touch之间的时间间隔来判定是单击或者是双击,一般来说,双击,两次touch之间的时间间隔为250ms~300ms(毫秒).所以利用这个条件就可以对双击进行判断处理了. 注意到由于要获取两次touch之间的touch时间

双击事件阻止点击事件

//定义setTimeout执行方法 var TimeFn = null; $DIV.on('click', function(){ // 取消上次延时未执行的方法 clearTimeout(TimeFn); TimeFn = setTimeout(function() { ...单击事件 },300); }); $DIV.on('dblclick', function(){ clearTimeout(TimeFn); ...双击事件 });

javascript双击事件取消默认的两次单击事件

当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件. 双击会:先第1次单击 ,同时触发第2次和双击事件. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; ch

Android 自定义View实现单击和双击事件

自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理 核心代码如下: public class MyView extends View { ...... // 统计500ms内的点击次数 TouchEvent

给同一个按钮添加单双击事件

1.单双击事件的添加. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>单双击事件</title> 6 </head> 7 <body> 8 <input type="button" onclick="return fun(1

Android实现双击事件的两种方式

Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: /** * 连续点击事件监听器 可以用作双击事件 * */ public abstract class OnMultiTouchListener implements OnTouchListener { /** * 上次 onTouch 发生的时间 */ private long lastTouc

jquery处理单击和双击事件

今天做div点击时,需要用到同一div的单击和双击事件,出现问题如下 例子: Html <body> <div id="div_1">单击双击我</div> 事件执行次数:<input id="input_1" type="text" value="0" /> </body> js $(document).ready(function(){ var i = 0; $(

AS3 判断双击事件

//双击事件触发的时候不触发单击事件 package { import com.greensock.TweenLite; import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.events.MouseEvent; import flash.utils.getTimer; public class Test1 extends Sprite { private var _rect:

bootstrap-treeview 自定义实现双击事件

bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树.列表树等等.但是不知为什么这个插件没有自带双击事件. 本人经过多次测试,使用方法$('#tree').dblclick( function () {})和方法$('#tree').on('dblclick',function(){})都不起作用!百思不得其解.最后救助大神,问题解决了,