基本的なループ表現

フレームスクリプトでループ表現

ActionScript3.0では、ムービークリップに onClipEvent (enterFrame) {} とは書けません。
ループを表現するには、ムービークリップ内の1フレーム目に、以下のように書きます。

var count:int	= 0;

// 毎フレームの処理を行う関数.
function process( eventObject:Event ) :void {
  trace("test loop!"+count);
  count++;
}

// イベントリスナとして登録.
addEventListener( Event.ENTER_FRAME, process );

こういう関数の登録の仕方が、ActionScript3.0の基本となります。

ドキュメントクラスでループ表現

ドキュメント自体のループに関しては、ドキュメントクラス、ということで定義すると、フレームスクリプトは全く書かなくてもループが表現できます。
ただし、ドキュメントの設定をする必要があります。

package {
  import flash.display.Sprite;
  import flash.events.*;
  
  public class BasicClass extends Sprite {
    var count:int = 0;
    
    // コンストラクタ.
    public function BasicClass()
    {
      // イベントリスナを登録.
      addEventListener( Event.ENTER_FRAME, process );
    }
    
    // 毎フレームの処理.
    public function process( eventObject:Event ) :void {
      trace("test loop!"+count);
      count++;
    }
  }
}

以上のスクリプトをBasicClass.asとしてflaファイルと同じ位置に保存して、ドキュメントクラス設定をBasicClassとすると、ループが確認できると思います。

テキストフィールドの文字

ステージ上に配置したダイナミックテキストの中身を参照したり、中身を変える場合には、若干アクセス方法が変わるので注意です。
ActionScript3.0では、ダイナミックテキストの「変数」という名前が設定できなくなっていて、その代わりにインスタンス名でアクセスします。
ステージ上に配置したダイナミックテキストオブジェクト(インスタンス名: aTextArea)の文字を変更する場合、それを含むムービーのフレームスクリプトで以下のように記述します。

aTextArea.text = "初期化済み";

// もしくは↓のような感じでthis.アクセスすると構造が分かりやすい。
// this.aTextArea.text = "初期化済み";

(インスタンス名).text としてtextパラメータにアクセスするのです。

FlashからCGIにバイナリを送りファイルを作成する

Flash(ActionScript3.0)からPOSTメソッドでCGIにバイナリデータを送る、そのシンプルな流れをメモしておきます。

Flashから送信(ActionScript

下記はFlashのテスト部分を抜き出したものです。
ByteArray()がバイトストリームで、本来は画像データや、ファイルフォーマットになっているものを突っ込むのですが、今は分かりやすく、適当な4バイトのデータを作って送ってみます。

var bytes:ByteArray = new ByteArray();
// とりあえずバイナリデータを作成.
bytes.writeByte( 1 );
bytes.writeByte( 2 );
bytes.writeByte( 3 );
bytes.writeByte( 4 );

var cgipath:String = new String('http://localhost/cgi-bin/testpost.cgi')
var request:URLRequest = new URLRequest(cgipath);

request.contentType = 'application/octet-stream';
request.method = URLRequestMethod.POST;
request.data = bytes; //送るデータをセット.

// 送りっぱなしで終了.
sendToURL( request );

// 別ウィンドウで開くなら下記の形で送信.
//navigateToURL( request, "_blank" );

CGI受信、ファイル作成(Ruby

POSTメソッドで送られたデータはSTDINに入ってきますので、それをそのままファイルに書き出すスクリプトを書きます。
自分の分かりやすいスクリプトとしてCGIRubyを使っていますが、PerlでもPHPでもPythonでもなんでもいいです。

#!c:/ruby/bin/ruby
# ↑もちろんここは適当なパスを.

print "Content-type: text/html\n\n"
print "<html><body>"
print "Hello Ruby CGI:" + ENV['CONTENT_LENGTH']
print "</body></html>"

# そのまま書き出し.
open( "test.dat", "wb" ){ |file|
  $stdin.binmode # バイナリモードにする.
  file.write $stdin.read
  # 大きなサイズのファイルを読み込む場合には、
  # 小さめのサイズで読み込み、whileで回すと無難.
}

上記CGIでは、なんらかの出力があったほうが見栄えがいいので、適当なprintをしていますが、基本的にprintの行はなくても問題ないです。
以上で、Flash→(POST)→CGI→(ファイル)というデータの流れを作ることが出来ます。