だれでも書けるFlash MX アクションスクリプト
3-18(P.150)「load_02.fla」の訂正
3-18の応用ファイル「load_02.fla」に、『フレームを追加すると、ムービーの最後まで勝手に再生されてしまう』という不具合が見つかりました。原因と修正内容を記します。
 
修正後のファイル「load_03.fla」
 
【原因】
このムービーでは、1フレーム目に次のようなスクリプトを記述していました。
this.onEnterFrame = function() {
	percent = Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100);
	if (percent == 100) {
		this.nextFrame();
	}
};
 
「onEnterFrame」は命令を継続的に実行するイベントハンドラです。メインタイムラインに「onEnterFrame」を記述すると、その中の命令はムービーが終わるまで繰り返し実行されます。このムービーでは、2フレーム目に再生ヘッドが移動した後も、パーセントの計算と判定が行われ、「this.nextFrame();」が繰り返されています。なので、3フレーム以降を作ると、最後のフレームまで進んでしまうのです。
 
【修正内容】
「onEnterFrame」の使用をやめました。
1フレーム目の後ろに2フレーム目を挿入し、1フレーム目と2フレーム目に、それぞれ次のスクリプトを記述しました。
 
・1フレーム目に記述したアクション
percent = Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100);
 
・2フレーム目に記述したアクション
if (percent < 100) {
	_root.gotoAndPlay(1);
} else {
	_root.gotoAndStop(3);
}
 
これは、ムービーが全部読み込まれるまでは1〜2フレーム目を繰り返し、ムービーが最後まで読み込まれたら(percentが100になったら)3フレームを再生して止まる、という命令です。「load_01.fla」でも同様の設定を使いました。
 
【解説】
パーセントの計算や判定は、ムービーがすべて読み込まれるまで行うもので、その後は必要ありません。ですから、「onEnterFrame」の命令として記述したのは、適切ではありませんでした。ずっと計算を続けると、システムに無駄な負荷がかかってしまうため、以上のように訂正しました。
 

4-5「frog_09.fla」の訂正
同様の理由から、4-5「frog_09.fla」も訂正します。
 
修正後のファイル「frog_10.fla」
 
【修正内容】
1フレーム目に記述したアクションの一部を削除し、カエルのMovieClipオブジェクトにアクションを追加しました。
 
・1フレーム目から削除したアクション
this.onEnterFrame = function() {
	if (counter1 > 30 || counter2 > 15) {
		_root.gotoAndStop(2);
	}
};
 
・カエルのMovieClipオブジェクトに追加したアクション
onClipEvent (enterFrame) {
	if (_root.counter1 > 30 || _root.counter2 > 15) {
		_root.gotoAndStop(2);
	}
}
 

   Macintosh
(sitファイル)
Windows
(lzhファイル)
修正データ  
flashmx_shusei.sit
(2.7MB)
 
 
flashmx_shusei.lzh
(3.7MB)
 
  
←BACK

Copyright (c) 2002 MdN Corporation  All rights reserved.