各SWFが同時に進行することが非常に重要な場合は、JavaScriptで制御します。
各SWFファイルが単純なMovieClipであると仮定すると、次のようになります。
各FLAファイルのドキュメントクラスを次のように設定します。
package {
import flash.display.MovieClip;
import flash.external.ExternalInterface;
public class ExternalInterfaceControlledMC extends MovieClip {
public function ExternalInterfaceControlledMC() {
this.stop();
if (ExternalInterface.available) {
try {
ExternalInterface.addCallback("setFrame", jsSetFrame);
} catch (error:Error) {
trace("An Error occurred:", error.message);
}
} else {
trace("ExternalInterface is not available");
}
}
private function jsSetFrame(value:String):void {
var frameNumber = int(value) % this.totalFrames;
this.gotoAndStop(frameNumber);
}
}
}
JavaScriptでは、SWFの各インスタンスの参照を配列に追加し、タイマーを使用して各SWFにフレーム番号に進むように指示します。
var swfElements; //Array
var currFrame = 1;
function onPageLoad() {
//Init timer
setInterval("progressFrame", 1000 / 30); //30 fps
}
function progressFrame() {
for (var i = 0; i < swfElements.length; i++) {
swfElements[i].setFrame(currFrame);
}
currFrame++;
}
このコードについては何もテストされておらず、私の思考の流れを説明するためにのみ使用されることに注意してください。