MovieClipLoaderのサンプル
対応バージョン :
MX2004
概要
(2006/7/30公開)
FlashMX2004(プラグインはFlash7)から
MovieClipLoaderというクラスが新たに追加されています。
このクラスを使うと簡単にSWFや画像ファイルをムービークリップなどに読み込むことができます。
さらに、読み込み時のエラー処理や読み込みの途中経過の取得、読み込み完了時の処理の実装などが簡単に行えます。
ですが、いつも使うたびにヘルプを眺めて無駄な時間を過ごす自分がいるので
サンプルを作ってみました。
「読込開始」ボタンをクリックすると右側に画像が表示されます。
「読込開始(NG)」ボタンのほうは存在しない画像を表示しようとしてエラーになります。
テキストエリアにはイベント毎のデバッグ文が表示されます。
解説
下のソースは1フレーム目のすべてのソースです。
見てのとおりシンプル?です。
あとはヘルプなどを参考にどうぞー
//Flash Player 7以降で利用可能
var mcLoadArea:MovieClip = this.createEmptyMovieClip("loadarea", this.getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
//読み込み開始時のイベント
listener.onLoadStart = function(mc:MovieClip) {
//読み込み中のイベント
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
//読み込み完了時のイベント
listener.onLoadComplete = function(mc:MovieClip, httpStatus:Number):Void {
//読み込みが完了して先頭フレームが実行される時のイベント
listener.onLoadInit = function(mc:MovieClip) {
//読み込みに失敗したときのイベント
listener.onLoadError = function(mc:MovieClip, errorCode:String, httpStatus:Number) {
//リスナー設定
mcLoader.addListener(listener);
//ボタンクリック時読み込み開始
btnStart1.onPress = function() {
//ボタン(エラー)クリック時読み込み開始
btnStart2.onPress = function() {
//デバッグ用
function debugWrite(s) {
var mcLoadArea:MovieClip = this.createEmptyMovieClip("loadarea", this.getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
//読み込み開始時のイベント
listener.onLoadStart = function(mc:MovieClip) {
debugWrite("\n--- onLoadStart");
};//読み込み中のイベント
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
debugWrite("\n--- onLoadProgress");
debugWrite(bytesLoaded + "/" + bytesTotal);
}debugWrite(bytesLoaded + "/" + bytesTotal);
//読み込み完了時のイベント
listener.onLoadComplete = function(mc:MovieClip, httpStatus:Number):Void {
debugWrite("\n--- onLoadComplete");
debugWrite("httpStatus = " + httpStatus);
debugWrite("mc._width = " + mc._width);
debugWrite("mc._height = " + mc._height);
}debugWrite("httpStatus = " + httpStatus);
debugWrite("mc._width = " + mc._width);
debugWrite("mc._height = " + mc._height);
//読み込みが完了して先頭フレームが実行される時のイベント
listener.onLoadInit = function(mc:MovieClip) {
debugWrite("\n--- onLoadInit");
debugWrite("mc._width = " + mc._width);
debugWrite("mc._height = " + mc._height);
//位置設定
mc._x = 260;
mc._y = 20;
//サイズ調整(横幅120pxに調整)
var scale = int(120 / mc._width * 100);
mc._xscale = mc._yscale = scale;
}debugWrite("mc._width = " + mc._width);
debugWrite("mc._height = " + mc._height);
//位置設定
mc._y = 20;
//サイズ調整(横幅120pxに調整)
var scale = int(120 / mc._width * 100);
mc._xscale = mc._yscale = scale;
//読み込みに失敗したときのイベント
listener.onLoadError = function(mc:MovieClip, errorCode:String, httpStatus:Number) {
debugWrite("\n--- onLoadError");
debugWrite("errorCode = " + errorCode);
debugWrite("httpStatus = " + httpStatus);
}debugWrite("errorCode = " + errorCode);
debugWrite("httpStatus = " + httpStatus);
//リスナー設定
mcLoader.addListener(listener);
//ボタンクリック時読み込み開始
btnStart1.onPress = function() {
//scaleを等倍に戻しておかないと2回目のサイズ取得がおかしくなる
mcLoadArea._xscale = mcLoadArea._yscale = 100;
mcLoader.loadClip("sample.jpg", mcLoadArea);
txtDebug.text = "";
debugWrite("loadClip call");
}mcLoadArea._xscale = mcLoadArea._yscale = 100;
mcLoader.loadClip("sample.jpg", mcLoadArea);
txtDebug.text = "";
debugWrite("loadClip call");
//ボタン(エラー)クリック時読み込み開始
btnStart2.onPress = function() {
mcLoader.loadClip("notfound.jpg", mcLoadArea);
txtDebug.text = "";
debugWrite("loadClip call");
}txtDebug.text = "";
debugWrite("loadClip call");
//デバッグ用
function debugWrite(s) {
txtDebug.text = txtDebug.text + s + "\n";
trace(s);
}trace(s);
ダウンロード
上の解説で使用したサンプルファイルは、
こちらでダウンロードできます。
# このFlaファイルは自由に使用していただいて結構です。
ただしこのまま二次配布することは禁止します。
コメント
現在コメントはありません