您好,登錄后才能下訂單哦!
觸摸事件
1.觸摸事件的類型:START觸摸啟動(dòng),MOVED移動(dòng),ENDED彈起來,CANCEL取消;
ENDED和CANCEL區(qū)別是ENDED物體內(nèi)彈起來,CANCEL是在物體外范圍彈起。
2.監(jiān)聽觸摸事件,node.on(類型,callback,target(回調(diào)函數(shù)的this),[useCapture])
3.觸摸事件,node.on(類型,callback,target(回調(diào)函數(shù)的this),[useCapture])
//(1)監(jiān)聽觸摸事件 向引擎底層注冊回調(diào)函數(shù) //當(dāng)有觸摸事件發(fā)生等時(shí)候,調(diào)這個(gè)方法 //cc.Node.EventType.TOUCH_START 觸摸開始 //(2)回調(diào)函數(shù)等格式 function(t) t對象是tt.Touch的對象 //這個(gè)對象包含的信息有[觸摸信息,事件信息]; //(3)target 目標(biāo)誰來調(diào)等callback 哪個(gè)對象來調(diào)用等這個(gè)callback //那就是哪個(gè)對象在callback來綁定實(shí)例,target就是里面this對象 //最后一個(gè)參數(shù)默認(rèn)即可 onLoad: function() { this.node.on(cc.Node.EventType.TOUCH_START, function(t){console.log("cc.Node.EventType.TOUCH_START ")},this) this.node.on(cc.Node.EventType.TOUCH_MOVE, function(t){console.log("cc.Node.EventType.TOUCH_MOVE ")},this) this.node.on(cc.Node.EventType.TOUCH_END, function(t){console.log("cc.Node.EventType.TOUCH_END ")},this) this.node.on(cc.Node.EventType.TOUCH_CANCEL, function(t){console.log("cc.Node.EventType.TOUCH_CANCEL ")},this) },
4.如果這時(shí)候 不想監(jiān)聽了 就可以通過off來關(guān)閉, 但是你的,
callback不要是匿名函數(shù),要用一個(gè)函數(shù)對象來保存
on_touch_moved:function(t){ console.log("cc.Node.EventType.TOUCH_END "); },
5.關(guān)閉注冊
this.node.off(cc.Node.EventType.TOUCH_END, this.on_touch_moved ,this)
6.移除目標(biāo)上的所有事件
targetoff(target)
7.cc.Touch
getLocation
獲取當(dāng)前觸點(diǎn)位置 做下角(0,0)為起始點(diǎn)
getDelta
獲取觸點(diǎn)距離上一次事件移動(dòng)的距離對象,對象包含 x 和 y 屬性
8.cc.Touch 同時(shí)包含 cc.Event事件
父節(jié)點(diǎn)移動(dòng)那么所有的子節(jié)點(diǎn)都移動(dòng),那也就是("父節(jié)點(diǎn)是包含了
整個(gè)子節(jié)點(diǎn)的一個(gè)整體"),那這個(gè)整體其中一個(gè)成員收到來一個(gè)事件,
這時(shí)候這事件會(huì)向上傳遞,就是說你的一個(gè)子節(jié)點(diǎn)有一個(gè)事件發(fā)生后,
父節(jié)點(diǎn)是可以收到等,這個(gè)就叫做事件等向上傳遞,事件冒泡。
如果子節(jié)點(diǎn)覺得這是一個(gè)私有事件,不想向上傳遞,想擋住這個(gè)事件,
stopPropagationImmediate//立即停止事件傳遞
stopPropagation停止傳遞當(dāng)前事件。
9.按鍵事件
按鍵分類:按下EventType.KEY_DOWN,彈起KEY_UP
注冊鍵盤事件
注意systemEvent是小寫開頭,
大寫是類,
小寫是全局實(shí)例 他的說明是:系統(tǒng)事件單例,方便全局使用.
onLoad: function() { //按鍵被按下 cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.on_key_down,this); cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.on_key_up,this); }, on_key_down: function(event){ //獲取按鍵 每個(gè)按鍵對應(yīng)一個(gè)按鍵碼 //event對象帶有keyCode 按鍵碼 //按鍵碼在cc.KEY里面定義的 console.log("按下"); switch(event.KeyCode){ case cc.KEY.space: console.log("空格按下"); break; } }, on_key_up: function(event){ switch(event.KeyCode){ case cc.KEY.space: console.log("空格彈起"); break; } },
10.自定義事件
自己定義的事件,比如我要向你發(fā)送一個(gè)通知.
監(jiān)聽:this.node.on("自定義事件名",function,target,useCapture);
觸發(fā)(派發(fā)事件):emit("事件名",[detail]) 只有自己能收到
冒泡派送:dispatchEvent(new cc.Event.EventCustom("name",是否冒泡傳遞))
onLoad:function(){ //接收者 //事件類型是自定義字符串等 為事件名字 //回調(diào)函數(shù) 參數(shù)Event.EventCustom的實(shí)例 this.node.on("pkg_event",function(e){ console.log("pkg_event"); //輸出自定義事件傳過來等 自定義數(shù)據(jù) console.log(e.detail.name); },this); //end //發(fā)送者 直接觸發(fā)事件 //這種方法不會(huì)對事件傳播到任何其他對象 //也就是說這個(gè)事件只能傳給自己 //detail Object 事件的詳細(xì)數(shù)據(jù) //可以傳遞自定義數(shù)據(jù) 比如說傳一個(gè)表 this.node.emit("pkg_event",{name:"下面"}); //end },
如果我們要把這個(gè)事件向上發(fā)送
//如果這個(gè)事件要向上傳遞,也就是不只是傳給自己 ////true向上傳遞 false不向上傳遞 var ea = new cc.Event.EventCustom("pkg_event",true); //自定義數(shù)據(jù) ea.detail = {name:"小王"}; //指定這個(gè)事件向上傳遞 this.node.dispatchEvent(ea); //end
父節(jié)點(diǎn)接收事件 腳本
onLoad :function() { this.node.on("pkg_event",function(e){ console.log("父節(jié)點(diǎn)收到冒泡"); console.log(e.detail.name); },this); },
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。