HTML /JavascriptとWinJSを使用してWindows8用のゲームを作成しようとしていますが、現在、「プロトタイプ」が静的に動作したくないときに問題が発生しています。私はこれほどJavascriptを使用したことがないか、非常に多くのオブジェクトが関係しているので、おそらくばかげた単純なエラーを犯しましたが、何が理解できません。
最初にここにいくつかのコードがあります(それは長いクラスです)私が話しているのは:
(function () {
"use strict";
WinJS.Namespace.define("Race", {
Car: WinJS.Class.derive(
Race.Common,
//Constructor method.
function (slotNum, slotData, canvas, stage, preload, pixelScale) {
this.canvas = canvas;
this.stage = stage;
this.preload = preload;
this.pixelScale = pixelScale;
this.slotNum = slotNum;
this.slotData = slotData;
},
//Instance properties and methods.
{
/** Properties **/
slotNum: 0,
slotData: {},
position: { x: 0, y: 0, r: 0 },
lastPosition: { x: 0, y: 0, r: 0 },
/**Methods **/
/**
*
*/
calcRotation: function () {
//get angle between last position and current position
this.lastPosition.r = this.position.r;
this.position.r = this.getAngle(this.lastPosition.x, this.lastPosition.y, this.position.x, this.position.y);
},
},
//Static properties and methods.
{
//Debug properties.
showDebug: true,
debugCarColors: ['red', 'yellow', 'blue', 'green'],
}
)
});
}());
したがって、Race.Carには4つのインスタンスがあり、それぞれに異なるslotDataのセットがあります。これは正常に機能します。各インスタンスには、独自のslotDataのセットと独自のslotNumがあります。ブレークポイントを使用してこれを確認できます(車を循環するため、slotDataは各インスタンスに固有です)。私はこれまで位置だけを扱ってきたので、それも正しく機能しているように見えます。
しかし、私が問題を抱えているのはlastPositionです。これは、この車のlastPositionではなく、最後の車のlastPositionに設定されています。WinJS.Class.defineの「インスタンスメンバー」セクション(静的メンバーではなく)で定義することを考えていたでしょう。this.lastPositionを使用すると、これが明らかになります。
なぜ期待どおりに動作しないのですか、何が間違っているのですか?どうもありがとう