重要なお知らせ: このブログの更新は終了しました!詳しくはこちら "ブログ移転しました。" をご覧ください。

便利なCallback Class


Flashサイトの作成で、
メニューの切り替わり時など、表示部を変更させるとき
「今表示しているのを隠して、次のを表示させる」という感じの処理がしばしばある
そのときに、単純にそれならいいんだけど
「今表示しているのぼわんと隠し、次のが横からスライドインして表示させる」
など、A開始→A終了 B開始→B終了 次の処理… という感じで
開始と終了の間にモーションが入るときが厄介;
最近流行のパーマリンク・ブラウザコントロール対応だとさらに厄介。

なのでCallbackクラスを作ってなんとかましに。

ようは、メソッドをたたくところをまとめておいて、必要なときに実行するというもの。

シンプルな使い方として

var myCallback = new Callback(this,hogehoge,[”ほげほげ”])
function hogehoge(msg){
 trace(”呼ばれたよ”)
 trace(”message:” + msg)
}

後は好きなところで

myCallback.execute()

よくあるパターンとして
モーションAのあとモーションB、そのあとモーションCといったとき

motionA(new Callback(this,motionB,[new Callback(this,motionC)]))

function motionA(c){
 var mytween = new Tween(- 省略
 mytween.onMotionDone = function(){
  if(c) c.execute()
 }
}

function motionB(c){
 var mytween = new Tween(- 省略
 mytween.onMotionDone = function(){
  if(c) c.execute()
 }
}

function motionC(c){
 var mytween = new Tween(- 省略
 mytween.onMotionDone = function(){
  if(c) c.execute()
 }
}

いちいち、メソッドの受け取りにつけなきゃいけないんだけど、まぁなんとか

そのほかに 何ミリ秒後に実行

new Callback(this,trace,[”1000ミリ秒後に実行された”]).delayedExecute(1000);

処理の追加

var c = new Callback(this,trace,[”もともとの処理”])
c.push(this,trace,[”追加された処理”])

処理の追加 Callback instanceどうしをくっつける

var c = new Callback(this,trace,[”もともとの処理”])
var c2 = new Callback(this,trace,[”もともとの処理に追加された処理”])
c.concat(c2)

Callback.as

コメントをどうぞ