ドキュメントクラス超解説 †某beinteractiveさんによる超解説 †ドキュメントクラスが実行されるのは、1フレーム目がロードされきった時なので、 「いろいろ」の部分を 2フレーム目に持っていき、ドキュメントクラスをすぐ実行できるようにしたい。 ドキュメントクラスはどうするか?
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.utils.getDefinitionByName; public class DocumentRoot extends MovieClip { public function DocumentRoot() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.LEFT; addEventListener(Event.ENTER_FRAME, _initialHandler); } private function _initialHandler(e:Event):void { //3フレーム目まで到達すればロードが完了 if (currentFrame == 3) { removeEventListener(Event.ENTER_FRAME, _initialHandler); stop(); initialize(); } else { var percent:Number = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100; trace("Loading... " + percent + "%"); } } protected function initialize():void { //var s:Sample1 = new Sample1(); var sample1:Class = getDefinitionByName('Sample1') as Class; var s:Sprite = new sample1(); } } } 基本的に、「あるクラスが使うクラス」は、そのクラスが実行される前に全てロードされてる必要がある。 で、ここで出てくるのが getDefinitionByName? となって、見事 2フレーム目に埋め込まれる。 そうすると、1フレーム目では Sample1 クラスはロードされていないんだけど、 サンプル †
参考 †Comment †
Counter: 16044,
today: 3,
yesterday: 3
|