みんなのおかげで解決策が見つかりました。この投稿の下部を確認してください。AS3:クラスの値を設定してクラスの値が変更されないようにするにはどうすればよいですか?
私はMVCを使用していますが、問題は私のモデルに関係しています。私のコードでは、ボードを作成してタイルを作成しています。ボード上の各タイルはX値とY値を取得します。この後、私はセッターへのアクセスを防止し、誤って値を変更しないようにしたい。
私は変数の代わりに定数を使うことを考えていましたが、作成時に値を定義する必要があるようです。言い換えれば:const myConst:uint; myConst = 2; //うまくいきません
今私は、私が満足していない回避策があります。確かにきれいな方法があります。下の私の回避策を見ることができます。
package myboardgame
{
internal class Tile
{
private var _x:uint;
private var _y:uint;
private var _xLock:Boolean; // Makes sure that the X and Y values of a tile can only be set once to prevent errors
private var _yLock:Boolean; // " "
internal function set x(x:uint):void
{ if(!_xLock) {_x = x; _xLock = true;} else { throw new Error("Trying to change the one-time write access X tile value")}}
internal function get x():uint
{ return _x; }
}
}
編集。あなたの変数はuint.MAX_VALUEと同じくらい大きなことになるだろうことはありませんと仮定
package myboardgame
{
internal class Tile
{
private var _x:uint;
private var _y:uint;
public function Tile(x:uint, y:uint):void
{
_x = x;
_y = y;
}
internal function get x():uint
{ return _x; }
internal function get y():uint
{ return _y; }
}
}
同意します。しかし、2つのパラメータが必要です。彼はまた 'y'を持っています。 –
私はプログラミングに比較的新しいので、テキストを理解するのが苦労しています。短いコード例を書くことができれば本当に感謝しています。 – Glacius
それは動作します。この例を書く時間をとっていただきありがとうございます。それは私をたくさん助けました。最初は、値を取得するためにゲッターメソッドを使用する必要があるため、機能しないと思っていましたが、セッターを使用せずにゲッターを使用できることが判明しました。 – Glacius