Cocos2d-x v3.8.1のJSでシーン切り替えする
でも生成されたプロジェクトのバージョンはv3.7.1なんだよね、なんでだろ?
2015/11/21 追記
更新したあと、sourceコマンド打つ前にcocos newしちゃってただけみたい。
— ここまで追記 —
“app.js”はこんな感じ。
var MyApp = MyApp || {};
MyApp.blinkLabel = function (text, size) {
var label = new cc.LabelTTF( text, "Arial", size );
label.opacity = 0;
label.runAction(
cc.repeatForever(
cc.sequence(
cc.fadeIn(0.9),
cc.fadeOut(0.1)
)
)
);
return label;
};
MyApp.TitleLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.winSize;
var startLabel = MyApp.blinkLabel( "Touch to Start!", 38 );
startLabel.x = size.width / 2;
startLabel.y = size.height / 2;
this.addChild( startLabel, 5 );
var listener = cc.EventListener.create( {
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: function(touch, event) {
cc.director.runScene(
cc.TransitionSlideInR.create( 2.0, new MyApp.NextScene() )
);
}
} );
//console.log( "checkAvailable", listener.checkAvailable() );
cc.eventManager.addListener( listener, this );
return true;
}
});
MyApp.TitleScene = cc.Scene.extend( {
onEnter:function() {
this._super();
this.addChild( new MyApp.TitleLayer() );
}
} );
MyApp.NextLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.winSize;
var startLabel = MyApp.blinkLabel( "Touch to Return!", 38 );
startLabel.x = size.width / 2;
startLabel.y = size.height / 2;
this.addChild( startLabel, 5 );
var listener = cc.EventListener.create( {
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: function(touch, event) {
cc.director.runScene(
cc.TransitionSlideInL.create( 2.0, new MyApp.TitleScene() )
);
}
} );
//console.log( "checkAvailable", listener.checkAvailable() );
cc.eventManager.addListener( listener, this );
return true;
}
});
MyApp.NextScene = cc.Scene.extend( {
onEnter:function() {
this._super();
this.addChild( new MyApp.NextLayer() );
}
} );
なので、”main.js”の下の方にあるrunSceneの引数はこんな感じ。
//(省略)
//load resources
cc.LoaderScene.preload(g_resources, function () {
cc.director.runScene(new MyApp.TitleScene());
}, this);
};
cc.game.run();
ハマりどころとしては、
ググった結果を元にドキュメントを検索してみたものの、
getInstanceもないし、replaceSceneも見当たらなくて、
結果的にソースを読んで解決しました。
とても辛かったです。
cc.Director#runScene(20行くらい)は、一読の価値ありです。
おしまい。
(*1) “.cocos-project.json”に記述されてる。
Leave a Comment