cococos 2 d-jsイベント
9794 ワード
1.マウスイベント
cc.eventManager.addListenerを使用してマウスイベントをリスニング
addListenerは2つのパラメータを受信し、1つ目のパラメータはリスニング情報オブジェクトであり、2つ目はリスニングノードである.
現在のプラットフォームにマウスイベントがあるかどうかを判断
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を使用して単一タッチをリスニング
2.マルチタッチ
touchesオブジェクトは配列であり、各配列要素がtouchオブジェクトであるonTouchBeganはtrue/falseを返す必要がなく、今回のタッチに接触するかどうかを制御できません.
3.キーボードイベント
onKeyReleasedは押して放しますonKeyPressedは押してkeyCodeが1つの数字であることを表します
4.重力誘導イベント
5.ゲームがバックグラウンドに入る/表示イベントを復元する
参考資料Cocos 2 d-JS開発の旅鄭高強著電子工業出版社
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パラメータはオブジェクトであり、複数の一般的なメソッドが含まれています.
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開発の旅鄭高強著電子工業出版社