AS3.0でローディングバー
ActionScript2でこれまでローディングバー(boading bar)を使っていましたが、
AcstionScrip3でローディングバーを制作しました。
仕組みは変わらないのですが、AS3特有の表示オブジェクトやイベントリスナー、クラスなどにも慣れ親しみたいと考えたからです。
実際のソース
=====================================================
stop();
var info:LoaderInfo = root.loaderInfo;
root.addEventListener(Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc(event){
this.lm.lbm.width = Math.floor(info.bytesLoaded/info.bytesTotal*100);
if(info.bytesLoaded == info.bytesTotal){
root.removeEventListener(Event.ENTER_FRAME,EnterFrameFunc);
this.gotoAndPlay(2);
}
}
=====================================================
基本的にはAS2のときの変わりません。クラス名が違ったり、イベントリスナーを入れているだけです。
一番頭を悩ませたのはMCに対して"_root"指定ができないことです。AS3ではstageやrootと表記するみたいですが、その指定方法では同じようにエラーを起こします。
絶対パスの指定ができず。相対指定this.〜としています。
ところが、ちょっと調べたら判明しました。
Object(root).lm.lbm.width = Math.floor(info.bytesLoaded/info.bytesTotal*100);
『Object(root)』
だそうです。いきなりAS3のオブジェクトを叩きこまれたわけであります。
まだまだ不明なことが多いので、あとで「あぁ、そうなんだ」と理解できることも多いのではないかと期待に胸を膨らませております。