cocos 2 dイベント

2792 ワード

イベントリスナーは次のように分類されます.
1.EventListenerTouch(タッチイベント)
2.EventListenerKeyboard(キーボードイベント)
3.EventListenerMouse(マウス応答イベント)
3.EventListener Acceleration(記録イベントの加速)
4.EventListenerCustom(カスタムイベント)
イベント配布器:cc.Director:getInstance():getEventDispatcher()
Cocos 2 d-xのイベントハンドラはイベントリスニングクラスEventListenerであり、そのサブクラスは主に以下のとおりである.
EventListenerTouchOneByOne(ワンタッチリスナー)EventListenerTouchAllAtOnce(マルチタッチリスナー)EventListenerKeyBoard(キーボードイベントリスナー)EventListenerMouse(マウスイベントリスナー)EventListenerAcceleration(加速イベントリスナー)EventListenerCustom(カスタムイベントリスナー)
タッチイベント:
   local start_ = nil
     local function onTouchBegan(touch, event)
        self.canClick = true
        if not start_ then
           start_ =  touch:getLocation()
        end
         return true --        moved cancelled ended
     end
     local function onTouchMoved(touch, event)
        local touchLocation = touch:getLocation()
         if self.start_  then
            --        10px,       
            if cc.pGetDistance(touchLocation, self.start_) > 10 then
                self.canClick = false
            end
        end
     end
     local function onTouchCancelled(touch, event)
         if self.canClick then
             --      
         end
     end
     local function onTouchEnded(touch, event)
         
     end

     local listener_touch = cc.EventListenerTouchOneByOne:create()
     listener_touch:setSwallowTouches(true)  --       
     listener_touch:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
     listener_touch:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED)
     listener_touch:registerScriptHandler(onTouchCancelled,cc.Handler.EVENT_TOUCH_CANCELLED)
     listener_touch:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED)
     local eventDispatcher = self:getEventDispatcher() --       
      
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener_touch, self) --     

cc.Handler.EVENTはファイルCocos 2 dConstantsを表示する.lua
またはcococos 2 dx luaパッケージを使用する方法:
local scene = self:getResourceNode()

 	local  button = scene:getChildByName("Button_1")
    button:setTag(100)
 	local function menuZhuCeCallback(sender,eventType)
        print(sender:getTag())
        if eventType == ccui.TouchEventType.began then
            print("    ")
        elseif eventType == ccui.TouchEventType.moved then --               ended  
            print("      ")
        elseif eventType == ccui.TouchEventType.ended then
            print("    ")
        elseif eventType == ccui.TouchEventType.canceled then
            print("    ")
        end
	end 

 	button:addTouchEventListener(menuZhuCeCallback)

メッセージカスタムイベント:クリックしてリンクを開く