1. 程式人生 > >【轉】關於cocos2dx+lua註冊事件函式詳解

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

轉載:http://www.taikr.com/article/1605

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
registerScriptHandler 註冊鍵盤事件
function cocoEvent.addKeyboardEvent()
local function keyboardPressed(keyCode, event)
if keyCode == 23 then
log(“left”)
elseif keyCode == 24 then
log(“right”)
elseif keyCode == 25 then
log(“up”)
elseif keyCode == 26 then
log(“down”)
end
–log(“keyCode = “..tostring(keyCode))
–log(“event = “..tostring(event))
end
local function keyboardReleased(keyCode, event)
–log(“keyCode = “..tostring(keyCode))
–log(“event = “..tostring(event))
end
local listener = cc.EventListenerKeyboard:create()
listener:registerScriptHandler(keyboardPressed, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(keyboardReleased, cc.Handler.EVENT_KEYBOARD_RELEASED)
local eventDispatcher = config.bottomLayer:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, config.bottomLayer)
end