私はキャンバス/ JSで初めてのゲームを作っていますが、関数コンストラクタに関する問題が発生しています。 Enemyオブジェクトが作成時に2つのスプライトの1つをランダムに取得するようにしようとしています。ここに私たちのコードの抜粋です:Javascript:コンストラクタのランダムスプライト選択
function Enemy() {
// Boilerplate stuff omitted. Relevant bit:
if (randomFromTo(1,50)%2 === 0) { // Assume this function works correctly
this.sprite.src = "images/scientist_1.png";
} else {
this.sprite.src = "images/scientist_2.png";
}
}
var enemy1 = new Enemy();
var enemy2 = new Enemy(); // etc
それは十分に簡単なようだが、それは同じスプライトを持つすべての敵オブジェクトで終わります。私はこれがなぜ起こるのか分かりません。コンソールログメッセージを適切な場所に置くと正しい選択が記録されますが、すべての敵は同じスプライトで終わります。それが可能であると仮定して、これについて行く最善の方法は何ですか?ありがとう!
'this.sprite'をどのように初期化しますか?たぶん、すべての敵が同じImageオブジェクトを共有しているのでしょうか? – kayahr
どうやってそれを呼んでいますか? – Sarfraz
'this.sprite'とは何ですか?それはどこに宣言されていますか? – satoshi