1. 程式人生 > >cocos2dx+lua註冊事件函式詳解 事件

cocos2dx+lua註冊事件函式詳解 事件

原文:http://www.cnblogs.com/zhepama/p/4287220.html

coocs2dx 版本 3.1.1

registerScriptTouchHandler             註冊觸屏事件

registerScriptTapHandler                  註冊點選事件

registerScriptHandler                         註冊基本事件 包括 觸屏 層的進入 退出 事件

registerScriptKeypadHandler           註冊鍵盤事件

registerScriptAccelerateHandler      註冊加速事件

registerScriptTouchHandler 詳解(可以設定單點或多點)

function gameWindow:addLayerTouchEventMethod1()
    local function onTouchEvent(eventType, x, y)
        --log("eventType = "..tostring(eventType))
        if eventType == "began" then 
            --需要返回true
            return onTouchBegan(touch, event)
        elseif eventType == "moved" then 
            onTouchMoved(touch, event)
        elseif eventType == "ended" then 
            onTouchEnded(touch, event)
        end
    end
    config.bottomLayer:setTouchEnabled(true)
    config.bottomLayer:registerScriptTouchHandler(onTouchEvent)
end


registerScriptTapHandler                  註冊點選事件 

function gameWindow:addBtn()
    local btn = cc.MenuItemImage:create("white.png", "black.png", "black.png")
    btn:setPosition(320, 160)
    local function btnClick()
        log("btnClick")
    end
    btn:registerScriptTapHandler(btnClick)

    local menu = cc.Menu:create()
    config.bottomLayer:addChild(menu)
    menu:setPosition(cc.p(0,0))

    menu:addChild(btn)
end


registerScriptHandler                         註冊基本事件 

註冊觸屏事件用法

function gameWindow:addLayerTouchEventMethod2()
    --建立一個單點觸屏事件
    local listener = cc.EventListenerTouchOneByOne:create()
    --註冊觸屏開始事件
    listener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
    --註冊觸屏移動事件
    listener:registerScriptHandler(onTouchMoved, cc.Handler.EVENT_TOUCH_MOVED)
    --註冊觸屏結束事件
    listener:registerScriptHandler(onTouchEnded, cc.Handler.EVENT_TOUCH_ENDED)
    --獲取層的事件派發器
    local eventDispatcher = config.bottomLayer:getEventDispatcher()
    --事件派發器 註冊一個node事件
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, config.bottomLayer)
end


註冊layer的 進入 退出事件用法

function gameWindow:addLayerEnterAndExitEvent()
    local function onNodeEvent(eventType)
        if eventType == "enter" then
            log("enter")
        elseif eventType == "exit" then
            log("exit")
        end
    end
    config.bottomLayer:registerScriptHandler(onNodeEvent)
end

 而在3.x中由於加入了C++11的特性,而對事件的分發機制通過事件分發器EventDispatcher 來進行統一的管理。

    事件監聽器主要有:

    > 觸控事件     EventListenerTouchOneByOneEventListenerTouchAllAtOnce

    > 滑鼠響應事件 EventListenerMouse

    > 鍵盤響應事件 EventListenerKeyboard

    > 加速計事件   EventListenerAcceleration

    > 自定義事件   EventListenerCustom

    > 物理碰撞事件 EventListenerPhysicsContact

    > 遊戲手柄事件 EventListenerController

【致謝】

【事件分發器】

    事件分發器EventDispatcher,用於統一管理事件監聽器的所有事件的分發。

1、_eventDispatcher

    _eventDispatcher是Node的屬性,通過Director::getInstance()->getEventDispatcher() 獲得。

    _eventDispatcher的工作由三部分組成:

      (1)事件分發器 :EventDispatcher。

      (2)事件型別   :EventTouch, EventKeyboard 等。

      (3)事件監聽器 :EventListenerTouch, EventListenerKeyboard 等。

    監聽器實現了各種觸發後的邏輯,在適當時候由事件分發器分發事件型別,然後呼叫相應型別的監聽器。

2、新增/刪除監聽器

    新增監聽器:addEventListenerWithSceneGraphPriority ,

                addEventListenerWithFixedPriority 。

    刪除監聽器:removeEventListener ,

                removeAllEventListeners 。

3、主要函式

    包含監聽器的新增、刪除、暫停、恢復,優先順序的設定,手動分發事件等。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

相關推薦

cocos2dx+lua註冊事件函式 事件

原文:http://www.cnblogs.com/zhepama/p/4287220.html coocs2dx 版本 3.1.1 registerScriptTouchHandler             註冊觸屏事件 registerSc

【轉】關於cocos2dx+lua註冊事件函式

轉載:http://www.taikr.com/article/1605 registerScriptTouchHandler 註冊觸屏事件registerScriptTapHandler註冊點選事件registerScriptHandler 註冊基本事件 包括 觸屏 層的進入 退出 事件registerS

STM32庫函式----(外部中斷/事件控制器 EXTI)

1.void EXTI_DeInit  (void) 函式解釋:將EXTI外設暫存器重置為默註釋。RCC_APB2PeriphResetCmd引數中沒有EXTI外設的的巨集,該外設重置採取的是直接向暫存器賦預設值的操作。 例子:EXTI_DeInit ( );  

javascript中的事件委托或是事件代理

開始 reat 事件 網上 html 比較 移動 由於 move 概述: 那什麽叫事件委托呢?它還有一個名字叫事件代理,JavaScript高級程序設計上講:事件委托就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。那這是什麽意思呢?網上的各位大牛們講

【轉】js中的事件委托或是事件代理

ava 程序 fff 員工 我們 cnblogs 上傳 on() 類型 起因: 1、這是前端面試的經典題型,要去找工作的小夥伴看看還是有幫助的; 2、其實我一直都沒弄明白,寫這個一是為了備忘,二是給其他的知其然不知其所以然的小夥伴們以參考; 概述: 那什麽叫

Spring 框架中註釋驅動的事件監聽器

publisher 情況下 對象 nal bool class 事件類型 drive super 事件交互已經成為很多應用程序不可或缺的一部分,Spring框架提供了一個完整的基礎設施來處理瞬時事件。下面我們來看看Spring 4.2框架中基於註釋驅動的事件監聽器。 1

Jquery之事件委派

spa 性能優化 實現 機制 過濾 event n) function 通過    最近接觸Jquery比較多,今天就被一個Jquery的事件委派坑慘了,特此記錄下,以方便日後的查閱。 一、定義 事件委派的定義就是,把原來加給子元素身上的事件綁定在父元素身上,就是把事件委

js中的事件委托或是事件代理

這不 ack 說明 同事 input || 內存 一起 占用率 概述: 那什麽叫事件委托呢?它還有一個名字叫事件代理,JavaScript高級程序設計上講:事件委托就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。那這是什麽意思呢?網上的各位大牛們講事

關於syslog日誌功能 事件日誌分析、EventLog Analyzer

linux 活動 數據 linu type 監控 roc oracle windows系統 關於syslog日誌功能詳解 事件日誌分析、EventLog Analyzer 一、日誌管理保障網絡安全Windows系統日誌分析Syslog日誌分析應用程序日誌分析Windows

js 事件模型

捕獲 dom0 dde html true 一個 lse 之前 {}   把js的事件模型,分為兩類,DOM0級和DOM2級,   DOM0級 通常直接在DOM對象上綁定函數對象,指定事件類型,dom.onClick = function(){};類似於這種寫法,移除事件,

javascript監聽頁面重新整理和頁面關閉事件方法

在我們的日常生活中,時常遇到這麼一種情況,當我們在點選一個連結、關閉頁面、表單提交時等情況,會提示我們是否確認該操作等資訊。 這裡就給大家講講javascript的onbeforeunload()和onunload()兩個事件。 相同點: 兩者都是在對頁面的關閉或重新整理事件作個操作。

可能是最詳細的Android點選事件處理(三)

前兩篇文章: 可能是最詳細的Android點選事件處理詳解 可能是最詳細的Android點選事件處理詳解(二) 這裡再次延伸一下,在ScrollView和RecyclerView巢狀中touch事件的傳遞過程,以及巢狀滑動衝突的問題。 如上圖,外層是一個Neste

可能是最詳細的Android點選事件處理(二)

上一篇我們主要詳細描述了touch事件在各層的傳遞 本篇文章主要是對比touch在不可滾動和可滾動的ViewGroup事件的傳遞過程 如上圖: - 左圖:是ViewGroup巢狀View,不可滑動 - 右圖:也是ViewGroup(RecyclerView)巢

可能是最詳細的Android點選事件處理

面試的時候,很多時候都會問到Touch事件的傳遞,而且問法角度都有所不同,但是還是會遵循基本的事件傳遞規則的,可能他問的你沒處理過,但是根據基本規則慢慢思考來回答,都不會錯。 一,簡介 首先我們知道touch事件 主要是是在三個方法中傳遞和處理的。分別是:

Spring 4 2框架中註釋驅動的事件監聽器

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【python】事件驅動event實現

所有的計算機程式都可以大致分為兩類:指令碼型(單次執行)和連續執行型(直到使用者主動退出)。 指令碼型:指令碼型的程式包括最早的批處理檔案以及使用Python做交易策略回測等等,這類程式的特點是在使用者啟動後會按照程式設計時設計好的步驟一步步執行,所有步驟執行完後自動退出。

python中的事件屬性

python中的事件的屬性有: #(1)widget 事件發生的部件(也就是地點) #(2)x, y 事件的位置(相對於控制元件來說的相對座標) #(3)x_root, y_root 事件的位置(相對於螢幕的左上角的座標絕對座標) #(4)keysym 按鍵事件的值(如按下f則這個事件的

前端事件委託

起因: 1、這是前端面試的經典題型,要去找工作的小夥伴看看還是有幫助的; 2、其實我一直都沒弄明白,寫這個一是為了備忘,二是給其他的知其然不知其所以然的小夥伴們以參考; 概述: 那什麼叫事件委託呢?它還有一個名字叫事件代理,JavaScript高階程式設計上講:事

JavaScript效能優化方案(事件委託

事件處理程式過多導致效能下降 在 JavaScript 中,新增到頁面上的事件處理程式數量會直接關係到頁面的整體執行效能。導致這一問題的原因是多方面的。首先,每個函式都是物件,都會佔用記憶體;記憶體中物件越多,效能就越差。其次,必須事先指定所有事件處理程式所造成的 DOM 訪問次數,也會

Spring的事件機制

同步事件和非同步事件   同步事件:在一個執行緒裡,按順序執行業務,做完一件事再去做下一件事.       非同步事件:在一個執行緒裡,做一個事的同事,可以另起一個新的執行緒執行另一件事,這樣兩件事可以同時執行.   用一個例子來解釋同步事件和非同步事件的使用場景,有時