cheka.jp 超不定期で更新する写真達。お口直しにどうぞ。

cocos2d-JSで作業するためのスニペット的なもの@自分用

cocos2d-JS 3.0シリーズの続きです。

多分便利なスニペット

毎回探すのが面倒なので、今日は自分用のスニペットです。

OZPA asyuraiine1500

localStorage

Nativeと連携するとSqliteのラップとして動作するlocalStorageですが、webでデバックするとエラーになるので初期化します。

if(!window.sys){
    window.sys = {
        localStorage : localStorage
    }
}

言語設定

なぜか日本語が8に設定されていますが、実機で確認すると9が正しい値のようです。
だれかpull requestしないかな。。

if(!window.sys){
    window.sys = {
        language : 9 //WEBでデバックするときは取り敢えず日本語にしておく
    }
} else {
    sys.language = cc.Application.getInstance().getCurrentLanguage();
}

プラットフォーム判定

iOSとAndroidでロジックを切り替える時のやつです。

if(cc.TARGET_PLATFORM == undefined){
    cc.TARGET_PLATFORM = {
        ANDROID : 3,
        IPHONE : 4,
        IPAD : 5,
        PC_BROWSER : 101
    }
}
if(!window.sys){
    g.platform = cc.TARGET_PLATFORM.PC_BROWSER; //取り敢えずWEBブラウザにしておく
} else {
    g.platform = cc.Application.getInstance().getTargetPlatform();
}

タッチイベント

3.0からタッチイベントの仕様が変わったので対応する必要あり。

cc.eventManager.addListener(
    cc.EventListener.create({
        event : cc.EventListener.TOUCH_ALL_AT_ONCE
        onTouchesBegan : function(touches, event){},
        onTouchesMoved : function(touches, event){},
        onTouchesEnded : function(touches, event){}
}),this);

メニューの追加

cocos2d-JSだと何故か無効時のspriteも指定しないとエラーになる。

//メニューの表示
var menu = cc.Menu.create(
cc.MenuItemSprite.create(
       cc.Sprite.create([画像]),
       cc.Sprite.create([画像]),
       cc.Sprite.create(), //Xcodeで落ちない用にダミーで設定
       this.onCallback,
       this
    )
);

トランジション画面遷移と掃除

トランジションを使うとiOSで確認した時にonExitでエラーになるため、後処理の場所を変更する。

var transition = cc.TransitionSlideInL.create (0.3,new MyScene()); //左へスライド
cc.director.pushScene(transition);
・・
#onExitで処理すると落ちる
onExitTransitionDidStart : function(){
  //追加済みのイベントを削除
  cc.eventManager.removeAllListeners();
  //追加済みのオブジェクトを解除
  this.removeAllChildren();
}

自分用ですが、参考にしてみてください。

Add a Comment

メールアドレスが公開されることはありません。