イベントを監視します
イベント処理は、ノード(cc.Node)で行われます。コンポーネントの場合、あなたが登録し、アクセスポイントthis.nodeでイベントを監視することができます。以下のように、登録するthis.node.on()関数によってイベントをリッスン:
cc.Class({
extends: cc.Component,
properties: {
},
onLoad: function () {
this.node.on('mousedown', function ( event ) {
console.log('Hello!');
});
},
});
これは、イベントリスナー関数は、第三引数のターゲットに関数の呼び出し元への結合応答を渡すことができることを言及する価値があります。二つの方法を呼び出し、効果は同じです。
// 使用函数绑定
this.node.on('mousedown', function ( event ) {
this.enabled = false;
}.bind(this));
// 使用第三个参数
this.node.on('mousedown', function (event) {
this.enabled = false;
}, this);
リスニングでの使用に加えて、我々はまた、一度メソッドを使用することができます。リスナーが閉じます一度機能応答を聞いた後、イベントに耳を傾けます。
閉じるリスニング
私たちは、もはやイベントを気にしない場合、我々は、対応するモニタイベントを閉鎖する方法を使用することができます。パラメータは、対応の方法についての方法とパラメータをオフにする必要があり、シャットダウンを終了することに注意してください。
次のように私たちは書いてお勧めします:
cc.Class({
extends: cc.Component,
_sayHello: function () {
console.log('Hello World');
},
onEnable: function () {
this.node.on('foobar', this._sayHello, this);
},
onDisable: function () {
this.node.off('foobar', this._sayHello, this);
},
});
発売記念イベント
我々は2つの方法でイベントを起動することができます発するとは、dispatchEvent。違いは、後者はイベント・デリバリーを行うことができるということです。私たちは、単純な例を、イベントを発する理解するために開始します。
cc.Class({
extends: cc.Component,
onLoad: function () {
this.node.on('say-hello', function (event) {
console.log(event.detail.msg);
});
},
start: function () {
this.node.emit('say-hello', {
msg: 'Hello, this is Cocos Creator',
});
},
});
配信イベント
dispatchEventメソッドは、この方法でイベントを起動し、イベントの受け渡しステージに入ります。イベント配信システムのココス創造主で、私たちは、バブルの配信方法を使用します。配信をバブリングすることは、それがルートに到達するまで絶えず彼の親ノードまで渡されたイベントノードからのイベントを開始するか、ノードに応じてするevent.stopPropagation割り込み処理機能を実行します()。
我々は、cを経由してノードCイベント「foobarという」、ノードa、bはリスナー「foobarの」イベントを行っている場合は、イベントが順番にbに渡されます、ノードから送信された場合。以下のような:
// 节点 c 的组件脚本中
this.node.dispatchEvent( new cc.Event.EventCustom('foobar', true) );
私たちは、もはやイベント傍受ノードbの後にイベントに渡したい場合は、我々は()関数するevent.stopPropagationを呼び出して実行することはできません。次のように具体的な方法は以下のとおりです。
// 节点 b 的组件脚本中
this.node.on('foobar', function (event) {
event.stopPropagation();
});
それは抽象クラスであるため、そのカスタムイベントは、直接作成し、送信するユーザーにcc.Eventオブジェクトを作成しないでください注意してくださいcc.Event.EventCustomの配布するオブジェクトを。
イベントオブジェクト
イベントリスナーのコールバックでは、開発者がイベントオブジェクトイベントのcc.Eventタイプを受け取ります、のstopPropagationはcc.Event標準APIで、他の重要なAPIが含まれています:
API名 | タイプ | 意味 |
---|---|---|
タイプ | 弦 | イベントの種類(イベント名) |
ターゲット | cc.Node | 元のオブジェクトのイベントを受け取ります |
currentTarget | cc.Node | 現在のイベント・オブジェクトを受信し、現在のオブジェクトのバブリング段階でイベントが元のオブジェクトと異なっていてもよいです |
getType | Funciton | イベントの種類を取得します。 |
stopPropagation | 関数 | 相をバブリング停止し、イベントが親に渡されることはありません、現在のノードのリスナーの残りの部分は、まだイベントを受信します |
stopPropagationImmediate | 関数 | イベントを通過し、直ちに停止し、イベントは現在のノードの親ノードと残りのリスナーに渡されることはありません |
getCurrentTarget | 関数 | 現在の対象ノードがイベントを受信取得します |
ディテール | 関数 | カスタムイベント情報(所属cc.Event.EventCustom) |
setUserData | 関数 | (cc.Event.EventCustomに属する)のカスタムイベントを設定します |
getUserData | 関数 | (cc.Event.EventCustom所属)カスタムイベント情報を取得します。 |
システム内蔵のイベント
これらは、使用する方法を見るために私達のフォローアップのマニュアルを参照してくださいすることができ、我々は組み込みのイベントデフォルトのシステムの一部をサポートして、ココスクリエーターに共通のイベントリスナーと排出ルールです。
マウス、タッチ:リファレンスノードシステムイベント文書の
キーボード、重力センサー:を参照してください。グローバルシステムイベントのドキュメント
使用タイマー
1.タイマーを起動します
component.schedule(function() {
// 这里的 this 指向 component
this.doSomething();
}, 5);
このタイマーは、上記回5秒に実行されます。
2.より柔軟なタイマー
// 以秒为单位的时间间隔
var interval = 5;
// 重复次数
var repeat = 3;
// 开始延时
var delay = 10;
component.schedule(function() {
// 这里的 this 指向 component
this.doSomething();
}, interval, repeat, delay);
上面的计时器将在10秒后开始计时,每5秒执行一次回调,重复3次。
3.だけタイマー(ショートカット)を1回
component.scheduleOnce(function() {
// 这里的 this 指向 component
this.doSomething();
}, 2);
上面的计时器将在两秒后执行一次回调函数,之后就停止计时。
4.タイマーをキャンセル
開発者は、タイマーをキャンセルするコールバック関数自体を使用することができます。
this.count = 0;
this.callback = function () {
if (this.count === 5) {
// 在第六次执行回调时取消这个计时器
this.unschedule(this.callback);
}
this.doSomething();
this.count++;
}
component.schedule(this.callback, 1);
ここではコンポーネントのタイマーのすべての機能は次のとおりです。
スケジュール:タイマー起動
のみタイマー一度開始:scheduleOnce
スケジュール解除を:タイマキャンセル
unscheduleAllCallbacksを:すべてのタイマーコンポーネントをキャンセル