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