プロが教える店舗&オフィスのセキュリティ対策術

似たようなものをいくつか拝見しましたが、どうしても行き詰まってしまいましたので質問させていただきました。

バージョンはFlash8です。
内容としましては、
1)6つのmcを出来れば重複しないようにランダムで再生をおこない、以降ループ。
2)上記の動作に当たり、初回アクセス時に一番最初に再生されるmcのみ特定のフレームから再生。ループ処理後は通常通りmcの最初から始まる。
というものが出来ればと考えています。

現状、1)については
http://oshiete1.watch.impress.co.jp/qa4158655.html
を参考(ほとんどそのまま使用させていただいておりますが...)に配列を使ったもので何となくの形にはなっているのですが、2)についてはお手上げ状態です。
そもそも配列からフレーム指定でmcを再生をおこなっているところに、直接mcの動作指定を付けるのが無理なのでは?と思い色々調べてはいるのですが、その辺りも踏まえましてご教授いただけませんでしょうか。
宜しくお願いいたします。

A 回答 (1件)

sei0114さん、


ご要望に合っているかどうか分かりませんが、mcを外部SWFにする方法もあります。それぞれ、フレームラベル名をつけて、0.swf、1.swf・・・6.swfとして、外部におきます。
外部SWFを読み込むmain.fla側:
//ここから
var _array:Array = [0,1,2,3,4,5];//6つの数値の配列生成
_txt.text = "";//ロード時にShuffleされた配列を表示する
function Shuffle() {//カスタマ関数化して、見やすくする
var num:Number = _array.length;
for (var i:Number = 0; i<num; i++) {
var r:Number = Math.floor(Math.random()*num);// ランダムなindexを取得
// i とランダムなindexの中身を入れ替え
var t:Number = _array[r];
_array[r] = _array[i];
_array[i] = t;
}
}
Shuffle();//ロード時、Shuffle
_txt.text = String(_array);

this.createEmptyMovieClip("mc",0);//外部SWF読み込み用MovieClip生成
mc._y = 60;//位置決め→適当
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function():Void {
mc.gotoAndPlay("2nd");//指定ラベル名に飛んで、play続行
//trace(mc._currentframe);//その時のフレーム数
};
mcl.addListener(listener);
mcl.loadClip("./"+_array[0]+".swf",mc);//index0番目の配列要素に格納されている番号のSWFをロード

var n:Number=0;//カウントアップの初期値
function Move(){//setInterval();で呼び出すカスタム関数
clearInterval(myID);//ループ処理時定番のclearInterval();
n++;
if(n>=_array.length){//_array.length以上になったなら、
n=0;//0に戻して、ループ
}
mc.loadMovie("./"+_array[n]+".swf");//n番目の配列要素番号のSWFをロード
trace(_array[n]);
myID=setInterval(Move,6000);//再設定

}
myID=setInterval(Move,6000);//テストでは、外部SWFの最終フレームまでの時間が約5秒なので、これより、大きい数値とし、6秒とした
//ここまで
尚、外部読み込みが嫌な場合は、ライブラリーから、MovieClip.attachMovie("識別子","インスタンス名",深度);
で読み込んでもいでしょう。
一つの参考です。
    • good
    • 0
この回答へのお礼

確認が遅くなってしまい申し訳ございません。
構造的に個々に外部化出来るかも含めて早速試してみようと思います!
詳しくご明記いただきまして本当にありがとうございました!

お礼日時:2009/11/24 10:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!