FLASH タグ記事

バーベタイム

2010-01-16 (土)カテゴリ興味関心タグ

バーベタイム

おしゃれなPC用の外部機器(USBなど)を取り扱っている海外の会社「verbatim(バーベタイム)」
そのスペシャルサイト「全日本バーベタイム選手権


ついつい面白くてやってしまった…
こういうの作りたいけど、3Dの技術とか色々必要ですなぁ

AS3.0のTweenが動作しない場合の対処

2009-06-30 (火)カテゴリ制作, 興味関心タグ,

ここ数日FLASHに触っていて悩んだことメモ。

AS2.0でお世話になりまくったTweenですが、どうもAS3.0ではきちんと動かないで終了してしまう場合があるようです。

対処方法として、各Tweenインスタンスをすべて配列に保持して終了と同時にきちんと削除してあげる必要があります。

Action Script
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;

var tween_arr:Array = new Array();
var myTween:Tween = new Tween(obj, "alpha", Strong.easeIn, 1, 0, 2, true);
tween_arr.push(myTween);   // 配列にTweenインスタンスを保持
myTween.addEventListener(TweenEvent.MOTION_FINISH, onFinish);

function onFinish(e:TweenEvent){
//処理
  var myTween:Tween = Tween(e.target);
  xDispose(myTween);   // 配列からTweenを削除
}

// 配列からTweenインスタンスを削除する関数
function xDispose(obj:Tween):Boolean {
  var nLength:int = tween_array.length;
  for (var i:int = 0; i<nLength; i++) {
    if (tween_array[i] == obj) {
      tween_array.splice(i, 1);
      return true;
    }
  }
  return false;
}

どうやら「弱い参照」というものをTweenが採用しているためだそうです。詳しくは以下。
Tweenのアニメーションが途中で止まる