これは、現在の状態(rainState)を参照してくださいしていますか?
答えはそれがどのように呼び出されるかによって異なります。
それはrainState
オブジェクトのメソッドとして呼ばれていた場合は、コンテキスト(this
)はrainState
オブジェクトに設定されます:call
、apply
を使用して
Smash.rainState.create();
、またはbind
あなたが好きなスコープに渡すことができます引数として:
Smash.rainState.create.call(foo); //immediately invoked
Smash.rainState.create.apply(foo); //immediately invoked
var bar = Smash.rainState.create.bind(foo); //reference to a newly created bound function
Iが想定this.emitter = this.game.add.emitter(100、0、400);エミッタオブジェクトを格納するrainStateオブジェクトにエミッタプロパティを作成しますか?あなたはthis.emitter
に値を割り当てる
はいは、それは、オブジェクトrainState
のプロパティとして追加されます。
Smash.rainState = {
create: function() {
console.log(Smash.rainState.emitter); //undefined
this.emitter = this.game.add.emitter(this.game.world.centerX, 0, 400);
console.log(Smash.rainState.emitter); //[object Object]
},
};
状態の性質ゲームですか?対照的に、なぜあなたが提供したコードに基づいて
エミッタthis.addするthis.game.add.emitter書くんgame
がrainState
のメソッドやプロパティであるように、それは見ていません。さらに、this.add
はobject
タイプの組み込み関数ではありません。 game
が他の場所のrainState
のプロパティとして追加されていない限り、別の方法でそれを参照する必要があります。グローバル
:
Smash.rainState = {
create: function(game) {
this.emitter = game.add.emitter(this.game.world.centerX, 0, 400);
}
}
//a context where game is a property
{
this.game = new Phaser.Game();
Smash.rainState.create(this.game);
}
フェイザーは、あなたがPhaser.Game
のgame
インスタンス化を参照してくださいどのように周りにいくつかの特定の設定があります。game
がコンテキストに存在する場所から渡されたパラメータとして
var game = new Phaser.Game();
var Smash = Smash || {};
Smash.rainState = {
create: function() {
this.emitter = game.add.emitter(this.game.world.centerX, 0, 400);
別のコンテキストでのクラス:
"Via":クラスがビア列に項目を持っている場合は、ローカル参照を使用してすばやくアクセスできることを意味します。私。任意の状態からthis.cameraを介してカメラを制御することができます。また、ゲームがグローバルに定義されている場合はgame.cameraを使用できます。
これはグローバルスコープ(任意の{}
の外側)にごgame
インスタンスを初期化した場合、あなたは世界的にそれを呼び出すことができるべきであることを意味します。あなたのコード内でこのような何かを探し、それが別の関数やオブジェクトの内部ではないことを確認してください。
var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render });
こんにちはスティーブン、おかげで、これは素晴らしい答えです。ゲームオブジェクトはコードで作成されます...... var Smash = Smash || {}; ...... Smash.game =新しいPhaser.Game(640,480、Phaser.AUTO、 'phaser'); ..しかし、この状態は別のファイル - game.js(ゲームのエントリーポイント) - stckpete 8分前 – stckpete
Phaser.Stateクラスはプロパティとして「ゲーム」を持っているようです:[Phaser.State](http://phaser.io/docs/2.6.2/Phaser.State.html)。 'Smash.rainState'をPhaser.Stateクラスのインスタンスを生成する関数に渡す場合、' rainState'プロパティはPhaser.Stateプロパティと組み合わされ、 'this.game'は動作するはずです。 – stephenlcurtis