例えばActionScriptに「CやJavaからのソースを移植したいかもー」と思った時や、「変数が増えて管理し辛い!」などと言う場合は構造体やクラスを作って作業の効率化を図りたいところです。
ActionSctipt(2.0)ではクラスを記述できます。
しかし構造体は記述できるのでしょうか。
クラスを作るほどでもないけど、変数を構造的に管理したい場合は構造体あったほうが便利です。
例えば、こんなCの構造体を活用したいとする場合、
typedef struct {
int vx,vy,vz;
} VECTOR;
ActionScriptではこう書きます。
function getVector() {
return {vx:0,vy:0,vz:0};
}
とこんな感じでVector型のオブジェクトを返す関数を書きます。
そして、
var vec = getVector();
と宣言します。
わざわざ関数にしたのは他の箇所で使いまわすために便利だからです。
利用は簡単です。
vec.vx = 1;
vec.vy = 2;
vec.vz = 3;
などのようにして構造体のメンバ変数にアクセスします。
また関数に構造体を渡したい場合は、
var vec = getVector();
kansuu( vec );
function kansuu( _vec ) {
_vec.vx = -1;
_vec.vy = -2;
_vec.vz = -3;
}
などのように書きます。
呼び出し側の"vec"のメンバ変数は"kansuu()"を通して更新されますので、returnで変数を返す必要はありません。
つづく。