通常、引数を指定する時は次のように書きます。

function hoge(_a,_b,_c):Void{
  trace(_a);
  trace(_b);
  trace(_c);
}
hoge("a","A",123);
//結果 --> a,A,123 

でも、arguments オブジェクトを利用すると引数の設定をしてなくても、引数を使うことができます。

function hoge():Void{
  trace(arguments[0]);
  trace(arguments[1]);
  trace(arguments[2]);
}
hoge("a","A",123);
//結果 --> a,A,123 

関数の中では各引数は指定された順番ごとにargumentsオブジェクトに格納され
配列のように扱うことができます。

さらに、引数の数を戻す、lengthプロパティもあります。

function hoge():Void{
  for(var i=0;i a,A,123

不特定多数の引数を前提に設計したい場合なんかにとても便利です。

外部ファイルのURLの末尾に乱整数を指定してあげると 毎回違うファイルとして認識するのでキャッシュから読み込まれることなく 常に最新のデータを読み込むことができます。

ただし、単純にファイル名をいじってしまうと ローカルでチェックする場合にファイルを認識してくれないので その辺りも考慮したクラスを作ってみました。

class Cash {
    static function clearCash(_fileURL:String):String {
        var reStr:String;
        var urlHead:String = _root._url.substr(0, 4);
        if (urlHead == "http") {
            reStr = _fileURL+"?"+Math.floor(Math.random()*999);
        } else {
            reStr = _fileURL;
        }
        return reStr;
    }
}

clearCash関数に読み込みたいファイルのURLを渡すと 戻り値としてキャッシュ対策をしたURLが戻ってきます。

今回は保存するデータの型についてです。

特に制限はないらしので調べてみました。

Number型

var localData:Number, newData:Number, lastData:Number;

newData = 2;

var so:Object = SharedObject.getLocal("nanlow");
so.data.localData = newData;
so.flush();

lastData = so.data.localData;
trace(lastData+"/"+typeof (lastData));
//出力:2/number

String型

var localData:String, newData:String, lastData:String;

newData = "nanlow";

var so:Object = SharedObject.getLocal("nanlow");
so.data.localData = newData;
so.flush();

lastData = so.data.localData;
trace(lastData+"/"+typeof (lastData));
//出力:nanlow/string

Boolean型

var localData:Boolean, newData:Boolean, lastData:Boolean;

newData = true;

var so:Object = SharedObject.getLocal("nanlow");
so.data.localData = newData;
so.flush();

lastData = so.data.localData;
trace(lastData+"/"+typeof (lastData));
//出力:true/boolean

Array型

var localData:Array, newData:Array, lastData:Array;

newData = new Array(1, 2, 3);

var so:Object = SharedObject.getLocal("nanlow");
so.data.localData = newData;
so.flush();

lastData = so.data.localData;
trace(lastData+","+typeof (lastData));
//出力:1,2,3/object

Array型の戻り値がobjectなのは以下を参照してください。
-->変数の型を調べる『typeof』

少し前まで、XMLデータとかと同じ認識でなんとなくStringでしか読めないと思ってました。

前回の続きです。

今回は書き込んだデータの使用・管理についてです。

まずはローカルデータにアクセスします。

var so:Object = SharedObject.getLocal("nanlow");

「data」プロパティを介して任意の名前の変数を取り出します。

lastDate=so.data.lastAccessDate;

これで、前回保存した変数データを使用することができます。

次にローカルデータをリセットしたいときです。

最初、すべての変数にundefindを渡していたんですが
調べてみたらもっと便利な物が。

so.clear();

この一行ですべてのデータを消去し、さらにローカルのファイルも削除してくれます。

ブラウザのクッキーに似てるけどFlashから直接変数とかを突っ込めるから結構便利。
フォームの一度記入した内容を保存したり、超簡易的なアクセスカウンターだってできます。

ローカルにデータ保存用のファイルが生成します。

var so:Object = SharedObject.getLocal("nanlow");

引数のストリングが保存するデータの名前です。
指定のデータがあればそれにアクセスし、読み取りが可能になります。

so.data.lastAccessDate=nowDate;

「data」プロパティを介して好きな名前の変数にデータを割り当て。

so.flush();

上で割り当てたデータを保存します。

データの保存先は以下の通り。

win
C:¥Documents and Settings¥"ユーザー名"¥Application Data¥Macromedia¥Flash Player¥#SharedObjects

mac
ユーザ¥"ユーザー名"¥ライブラリ¥Preferences¥Macromedia¥Flash Player¥#SharedObjects

3  4  5  6  7  8  9  10  11  12  13