cococos 2 d-jsイベント

9794 ワード

1.マウスイベント
cc.eventManager.addListenerを使用してマウスイベントをリスニング
cc.eventManager.addListener({
    event:cc.EventListener.MOUSE,  //         
    onMouseDown:function (event) {     //       
    },
    onMouseMove:function (event) {    //     
    },
    onMouseUp:function (event) {     //      
    }
},node);

addListenerは2つのパラメータを受信し、1つ目のパラメータはリスニング情報オブジェクトであり、2つ目はリスニングノードである.
現在のプラットフォームにマウスイベントがあるかどうかを判断
var MouseEventLayer = cc.Layer.extend({
   ctor:function () {
       this._super();

       if('mouse' in cc.sys.capabilities) {
           cc.eventManager.addListener({
               event: cc.EventListener.MOUSE,
               onMouseDown:function(event){
                   var pos = event.getLocation();
                   var target = event.getCurrentTarget();
                   if(event.getButton() === cc.EventMouse.BUTTON_LEFT) {
                       console.log("LEFT BUTTON click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_RIGHT) {
                       console.log("RIGHT BUTTON click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_MIDDLE) {
                       console.log("MIDDLE BUTTON click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_4) {
                       console.log("MIDDLE 4 click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_5) {
                       console.log("MIDDLE 5 click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_6) {
                       console.log("MIDDLE 6 click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_7) {
                       console.log("MIDDLE 7 click at : " + pos.x+":"+pos.y);
                   } else if(event.getButton() === cc.EventMouse.BUTTON_8) {
                       console.log("MIDDLE 8 click at : " + pos.x+":"+pos.y);
                   }
               },
               onMouseMove : function (event) {
                   var pos = event.getLocation();
                   var target = event.getCurrentTarget();
                   console.log("Moving at : " + pos.x+":"+pos.y);
               },
               onMouseUp : function (event) {
                   var pos = event.getLocation();
                   var target = event.getCurrentTarget();
                   console.log("Up at : " + pos.x+":"+pos.y);
               }
           },this);
       } else {
           console.log("         ");
       }
       return true;
   }
});

eventパラメータはオブジェクトであり、複数の一般的なメソッドが含まれています.
  • event.getLocation:イベント発生座標
  • を取得する
  • event.getLocationX/getLocationY:値
  • を取得
  • event.getCurrentTarget:現在マウスイベントを処理するオブジェクト、すなわちcc.eventManager.addListener伝達の2番目のパラメータ
  • を取得する.
  • event.getButton:クリックイベントのキー値
  • を取得する
  • event.getDelta:onMouseMoveイベント処理関数で有効であり、今回の移動のオフセット値
  • を取得する.
  • event.getDeltaX/getDeltaY:取得値
  • 2.タッチイベント
    1.ワンタッチ
    cc.eventManager.addListenerを使用して単一タッチをリスニング
    var TouchEventLayer = cc.Layer.extend({
        ctor:function () {
            this._super();
    
            if('touches' in cc.sys.capabilities) {  //            
                cc.eventManager.addListener({
                    event: cc.EventListener.TOUCH_ONE_BY_ONE,
                    onTouchBegan:this.onTouchBegan,
                    onTouchMoved : this.onTouchMoved,
                    onTouchEnded :this.onTouchEnded,
                    onTouchCancelled:this.onTouchCancelled
                },this);
            } else {
                console.log("         ");
            }
    
            return true;
        },
        onTouchBegan:function(touch,event){
            var pos = touch.getLocation();
            var id = touch.getID();
            console.log("onTouchBegan at : " + pos.x+":"+pos.y);
            var winSize = cc.director.getWinSize();
            if(pos.x < winSize/2){
                return true;   //         ,    false,   moved ended     
            }
            return false;
        },
        onTouchMoved : function (touch,event) { // touch      
            var pos = touch.getLocation();
            var id = touch.getID();
            console.log("onTouchMoved at : " + pos.x+":"+pos.y);
        },
        onTouchEnded : function (touch,event) {
            var pos = touch.getLocation();
            var id = touch.getID();
            console.log("onTouchEnded at : " + pos.x+":"+pos.y);
        },
        onTouchCancelled:function (touch,event) {
            var pos = touch.getLocation();
            var id = touch.getID();
            console.log("onTouchCancelled at : " + pos.x+":"+pos.y);
        }
    })
    

    2.マルチタッチ
    cc.eventManager.addListener({
        event:cc.EventListener.TOUCH_ALL_AT_ONCE,  //         
        onTouchesBegan : function(touches,event) {     //     
        },
        onTouchesMoved : function(touches,event) {    //     
        },
        onTouchEnded : function (touches,event) {     //      
        },
        onTouchCancelled : function(touches,event){  //     
        }
    },node);
    

    touchesオブジェクトは配列であり、各配列要素がtouchオブジェクトであるonTouchBeganはtrue/falseを返す必要がなく、今回のタッチに接触するかどうかを制御できません.
    3.キーボードイベント
    var KeyboardEventLayer = cc.Layer.extend({
        ctor:function () {
            this._super();
            if('keyboard' in cc.sys.capabilities) {
                cc.eventManager.addListener({
                    event:cc.EventListener.KEYBOARD,
                    onKeyReleased : function (keyCode,event) {
                        console.log("release " + keyCode);
                    },
                    onKeyPressed : function (keyCode,event) {
                        console.log("press "+ keyCode);
                    }
                },this);
            } else {
                console.log("         ");
            }
        }
    })
    

    onKeyReleasedは押して放しますonKeyPressedは押してkeyCodeが1つの数字であることを表します
    cc.KEY = {
        none:0,
    
        // android
        back:6,
        menu:18,
    
        // desktop
        backspace:8,
        tab:9,
    
        enter:13,
    
        shift:16, //should use shiftkey instead
        ctrl:17, //should use ctrlkey
        alt:18, //should use altkey
        pause:19,
        capslock:20,
    
        escape:27,
        space:32,
        pageup:33,
        pagedown:34,
        end:35,
        home:36,
        left:37,
        up:38,
        right:39,
        down:40,
        select:41,
    
        insert:45,
        Delete:46,
        0:48,
        1:49,
        2:50,
        3:51,
        4:52,
        5:53,
        6:54,
        7:55,
        8:56,
        9:57,
        a:65,
        b:66,
        c:67,
        d:68,
        e:69,
        f:70,
        g:71,
        h:72,
        i:73,
        j:74,
        k:75,
        l:76,
        m:77,
        n:78,
        o:79,
        p:80,
        q:81,
        r:82,
        s:83,
        t:84,
        u:85,
        v:86,
        w:87,
        x:88,
        y:89,
        z:90,
    
        num0:96,
        num1:97,
        num2:98,
        num3:99,
        num4:100,
        num5:101,
        num6:102,
        num7:103,
        num8:104,
        num9:105,
        '*':106,
        '+':107,
        '-':109,
        'numdel':110,
        '/':111,
        f1:112, //f1-f12 don't work on ie
        f2:113,
        f3:114,
        f4:115,
        f5:116,
        f6:117,
        f7:118,
        f8:119,
        f9:120,
        f10:121,
        f11:122,
        f12:123,
    
        numlock:144,
        scrolllock:145,
    
        ';':186,
        semicolon:186,
        equal:187,
        '=':187,
        ',':188,
        comma:188,
        dash:189,
        '.':190,
        period:190,
        forwardslash:191,
        grave:192,
        '[':219,
        openbracket:219,
        backslash:220,
        ']':221,
        closebracket:221,
        quote:222,
    
        // gamepad control
        dpadLeft:1000,
        dpadRight:1001,
        dpadUp:1003,
        dpadDown:1004,
        dpadCenter:1005
    };
    

    4.重力誘導イベント
    var AccelerometerLayer = cc.Layer.extend({
        ctor:function () {
            this._super();
            var winSize = cc.director.getWinSize();
    
            if('accelerometer' in cc.sys.capabilities){
                cc.inputManager.setAccelerometerInterval(1/30); //         
                cc.inputManager.setAccelerometerEnabled(true);
                cc.eventManager.addListener({
                    event:cc.EventListener.ACCELERATION,
                    callback:function (accelerometerInfo,event) {
                        var target = event.getCurrentTarget();
                        console.log("x:"+accelerometerInfo.x+" y:"+accelerometerInfo.y + " z:"+accelerometerInfo.z);
    
                        var w = winSize.width;
                        var h = winSize.height;
    
                        var x = w*accelerometerInfo.x + w/2;
                        var y = h*accelerometerInfo.y + h/2;
    
                        x = x*0.2 + target.prevX*0.8; //           
                        y = y*0.2 + target.prevY*0.8;
    
                        target.prevX = x;
                        target.prevY = y;
                        target.sprite.x = x;
                        target.sprite.y = y;
                    }
                },this);
    
                var sprite = this.sprite = new cc.sprite("res/item_2.png");
                this.addChild(sprite);
                sprite.x = winSize.width/2;
                sprite.y = winSize.height/2;
    
                this.prevX = 0;
                this.prevY = 0;
    
            } else {
                console.log("           ");
            }
        }
    })
    

    5.ゲームがバックグラウンドに入る/表示イベントを復元する
    cc.eventManager.addCustomListener(cc.game.EVENT_HIDE,function () {
                //      
            });
            cc.eventManager.addCustomListener(cc.game.EVENT_SHOW,function () {
                //      
            });
    

    参考資料Cocos 2 d-JS開発の旅鄭高強著電子工業出版社