cocos 2 d-js(二)cococos 2 d-jsの基本文法とクラスの概要


基本構文:
1.クラスの定義
一般的なクラスは、統合SceneまたはLayerです.
var myLayer = cc.Layer.extend({クラスの内容}); 
 
2クラス内のメンバー変数とメソッド:
2.1メンバー変数の宣言:
≪変数名|Variable Name|oraolap≫:値.一般的に、クラス内のメンバーを表すためにメンバー変数の名前に下線を付けることに慣れています.
たとえば、生命値を表す変数を定義します.
_hp : 100,
複数の定義の間をカンマで区切ります.
2.2メソッドの宣言:
関数名:function(パラメータリスト){関数体}
 
一般的にクラスのctorメソッドとinitメソッドを書き換えてクラスの初期化を実現し、両方のメソッドはクラスインスタンス化時に呼び出されます.
この2つのメソッドを書き換えるときは、親クラスの関連メソッドを呼び出すことを覚えておいてください.メソッドはthis.super();
 
Cocos 2 dでthisを使用して現在のクラスを示します.
 
3.クラスのインスタンス化
newを使用してクラスをインスタンス化し、パラメータを入力するかどうかはctorの設定に依存し、インスタンス化時のパラメータリストはctorと一致します.
 
4.グローバル変数と配列
cococos 2 dエンジンを使用してゲームを作成する場合、グローバル変数が必要になることが多いが、一般的な習慣はGlobalに定義することである.jsで.
空のクラスの定義はGLOABL={}です.
メンバー変数を追加する場合は、ポイント構文を直接使用して値を割り当てます.
例えばGLOBAL.HP = 100.
 
クラス内に関数を追加する方法はGLOBALであるもよい.funcName = function(...){...}
 
配列を定義方法はGLOBALである.ARRAY1 = [];
 
5.cococos 2 dではjsの構文を正常に使用し、いくつかのループ、条件分岐などの記述を行うことができる.
 
6.ログ出力を使用する場合は、jsのconsoleを使用します.logまたはcococos 2 dが持参するcc.log出力.
7.Cocos 2 dの共通関数と受信ユーザー入力:
CCLayerから継承されたクラスはユーザーの入力を受信することができ、CCNodeのすべての特性もあり、一般的なゲームはこれを実行する主なクラスであり、以下ではよく使われる関数を紹介する.
ctorとinitはすでに上記で紹介されており,ここでは後述しない.
一般的にゲームは高いフレームレート(例えば60)で実行する必要があり、各フレームが到来するとクラス内で初期化時にこの方法を使用する.scheduleUpdate();,すると、プログラムの実行時にフレームレートのupdate関数が毎秒複数回呼び出されます.
したがってupdate関数を書き換えるだけで,ゲームのブラシフレームを実現できる.
8.CCLayerは、ユーザの入力を受信するには、クラス内でccを使用する.eventManagerのaddListenerメソッドで実装され、addListener関数は2つのパラメータを入力する必要があります.1つ目はリスニングのマスターロジックで、リスニングのイベント関数を定義するには{}を使用して囲み、2つ目のパラメータをターゲットに、現在のレイヤのイベントをリスニングするために一般的にthisを記入します.
 
よく使われるイベントには、ボタンの押下、ボタンの解放、マウスの押下、マウスの移動、マウスのスクロール、タッチ入力などがあります.普通のウェブゲームをするには、マウスとキーボードで動作すればいいです.携帯アプリを作る場合は、タッチ入力を検出する必要があります.
 
次に、キー入力を例に、キー入力の書き方を説明します.
一般にinit関数でイベントを宣言し、まずキーボードがあるかどうかを判断し、関数を使用します.
cc.sys.capabilities.hasOwnProperty(「keyboard」)は、trueを返すと使用可能であり、関連するイベント関数を定義するために使用できます.
if(cc.sys.capabilities.hasOwnProperty('keyboard')){
    cc.eventManager.addListener({
        event: cc.EventListener.KEYBOARD,
        onKeyPressed:function(key,event){
            if(key == 87){ // W
               //            
            }
        },
        onKeyReleased:function(key,event){
            if(key == 87){ // W
               //            
            }
        }
    },this);
}

キーが入力したのはボタンのASCIIコードで、ログを印刷することで実験することができます.
特に、このメソッドはクラス内で宣言されていますが、呼び出し時にクラス内ではないため、thisを使用して現在のクラス内のメンバーを取得することはできません.functionはまたeventパラメータを伝達し、このパラメータは自分のtargetを取得するために使用することができ、このtargetは当時addListenerの2番目のパラメータであった.だから私たちはevent.getCurrentTarget()は,当時のtarget,すなわちthisを得るために,クラス内のすべての操作をこれに基づいて行う.
マウスイベント:
if('mouse' in cc.sys.capabilities) {
    cc.eventManager.addListener({
        event: cc.EventListener.MOUSE,
        onMouseMove: function (event) {
            // event.getLocationX()   x
            // event.getLocationY()   y
        },
        onMouseScroll: function(event){
            // event.getScrollX()       
  // event.getScrollY()       
        }
    }, this);
}