(轉載)【cocos2dx 3.x Lua] 註冊事件函數詳解

出處:html

    http://www.2cto.com/kf/201409/338235.htmlnode

 

coocs2dx 版本 3.1.1spa

registerScriptTouchHandler 註冊觸屏事件code

registerScriptTapHandler 註冊點擊事件htm

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

registerScriptKeypadHandler 註冊鍵盤事件事件

registerScriptAccelerateHandler 註冊加速事件ip

 

registerScriptTouchHandler 詳解(能夠設置單點或多點)get

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 註冊點擊事件string

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
相關文章
相關標籤/搜索