背負い投げとENTER_FRAME

Icon

なんちゃってWebクリエイターがFlashやらActionScriptやらを淡々と書く。ときとき柔道の話しもする。

Commands(AS2.0用)をクソ分かりやすく解説する!

久しぶりのActionScriptネタ

一度でも、Progressionとかで仕事したことがあるなら、
「addCommand」みたいな同期・非同期処理の便利さに感動を覚えたはず。

・関数1を実行する
・0.5秒後に関数2を開始

とか、間隔をあげて処理することがよくあるので、
addCommandみたいなのがないと
仕事できない・したくない体になってしまった。

ということで、CommandのAS2.0バージョンを必死で探してみた。
まず、非同期処理の元祖? そーめん = Thread はAS2.0用バージョンがあるが、
資料が少なく、書き方を調べるのが面倒だから、パス!(Beinteractiveの中の人ごめんなさい)

Spark ProjectにCommands(2.0用)があったら、早速使ってみる。

まず基本

以下で新規コマンド(SerialCommand)を作る
[as]
var sCmd:SerialCommand = new SerialCommand().execute();
[/as]
new SerialCommand()の括弧の中に、
実行したいコマンドをどんどん追加していく

[as]
var sCmd:SerialCommand = new SerialCommand(
new TraceCommand(“コマンド1”),
new TraceCommand(“コマンド2”)
).execute();
[/as]
オイラはいつも怒濤のコピペで、
うっかり最後のコマンドも「,」を入れちゃったままで
コンパイラーに怒られる。

そして肝心のコマンドだが、いろいろ用意されてるみたい。
とりあえずよく使いそうなもの

TraceCommand

名前通り、traceだけ
[as]new TraceCommand(“FuseCommand スタート”)[/as]

TimerCommand

時間指定で関数を実行。下記引数の内約は
・this = 実行場所、thisで多分大丈夫(無責任!)
・fun1 = 実行する関数
・[“hoge”,karaMC] = 実行関数に渡す引数。型は何でもOK。
 複数の場合は「,」で区切る。
 下記の例では「hoge」というストリングと「karaMC」というmcを渡す。
 何も渡さないときはnull。
・1500 = 1.5秒後に実行
・1 = 実行回数1回
[as]//引数を渡す
new TimerCommand(this,”fun1″,[“hoge”,karaMC],1500,1)
//引数を渡さない
new TimerCommand(this,”fun1″,null,1500,1)[/as]

LoaderCommand

mcに何かロードする(試してないけど、多分swfも行ける、多分…)
下記引数の内約は
・http://farm3.〜 = ロードするもののURL、ここは絶対パスだが、相対でもOK。
・karaMC = 入れ物。先に用意しておこう!
[as]//karaMCというMovieClipに「http://farm3.〜」という画像をロードすること。
new LoaderCommand(“http://farm3.static.flickr.com/2555/3755792762_824380999f_m.jpg”, karaMC)[/as]

実行

二つの書き方
[as]//その1 書いてすぐ実行!
var sCmd:SerialCommand = new SerialCommand(
new TraceCommand(“コマンド1”),
new TraceCommand(“コマンド2”)
).execute();

//その2 書いといて、実行部分は別に!
var sCmd:SerialCommand = new SerialCommand(
new TraceCommand(“コマンド1”),
new TraceCommand(“コマンド2”)
);

//実行するのだぁ!
sCmd.execute();[/as]

残念はことに

Progressionなら、[]でコマンドをまとめたら
[]内のコマンドは同時に実行するが、
このCommandsでは動かない…
ソースを読むと、ちゃんと機能として書いてあるが
実行できなかった。バグかな?
[as]//このソースだとコマンド1で止まっちゃう。
var sCmd:SerialCommand = new SerialCommand(
new TraceCommand(“コマンド1 FuseCommand スタート”),
[
new TraceCommand(“コマンド2 同時実行”),
new TraceCommand(“コマンド3 同時実行”)
],
new TraceCommand(“コマンド4 FuseCommand 終了”)
);[/as]

このエントリーをはてなブックマークに追加  

Category: Action Script 2.0

Tagged: , ,

Leave a Reply

中の人のプロフィール

柔道歴約20年だが諸理由で未だ初段。162cm、60kgくらいの軽量級。得意は背負い投げと巴投げ。2009年、左ヒザ前十字靭帯損傷。ただ今柔道復帰を企んでいる真っ最中。仕事では最近、ActionScriptを書いたり、WordPressをいじったりの日々が続いてる。@renowanにてつぶやいてる。

アーカイブ

Flicker

This movie requires Flash Player 9.0.0