| Name |
ゆう |
| Date |
2008年03月24日 (月) 16時21分 |
| Message |
皆さんこんにちは
「 JpgとSwfを読み込ませランダム表示させたい」の書き込みで
TOYAMAさんの作品で
外部読み込みではなく
ライブラリからattachMovieでムービークリップを読み込むにはどうしたらよいでしょうか?
リンケージ名がth0,th1,th2,th3な感じで
ちょっと応用した感じでできますでしょうか?
お助けお願いします。 |
Response
01
|
| 2008年03月24日
(月) 21時02分> TOYAMA
|
|
1フレーム(1フレームのみ)に下記のアクションを書けばよいでしょう。
しかし、「th0」、「th1」、「th2」、「th3」、「th4」、「th4」、「th5」はライブラのムービークリップ名の書き出し名です。
var myclip:String = "th0,th1,th2,th3,th4,th5";//文字列を作成
var clipArray:Array = new Array();//配列を作成
var m:Number;
var n:Number;
this.createEmptyMovieClip("mymc", 1);//空ムービークリップ作成
clipArray = myclip.split(",");//配列の設定
function displayClip() {//ムービークリップのアタッチ関数
removeMovieClip(mymc["my_mc"]);//ムービークリップの削除
m = clipArray.length;//配列の長さの取得
if (m>0) {//配列の要素があるときの処理
n = Math.floor(Math.random()*m);//配列のからランダムに要素を抜き出す
mymc.attachMovie(clipArray[n], "my_mc", mymc.getNextHighestDepth());//アタッチを行う
clipArray.splice(n, 1);//アタッチした要素を削除
} else {//配列の要素がなくなったときの処理
clipArray = myclip.split(",");//配列の再設定
m = clipArray.length;//配列の要素数を取得
n = Math.floor(Math.random()*m);//ランダムに数を決定
mymc.attachMovie(clipArray[n], "my_mc", mymc.getNextHighestDepth())//アッタチする
clipArray.splice(n, 1);//アッタチした要素を削除
}
}
displayClip();//アタッチ関数呼び出し
setInterval(displayClip, 2000);//アタッチ関数を2秒ごとに呼び出し
http://www.geocities.jp/jin_toyama/index.html
|
|
Response
02
|
| 2008年03月25日
(火) 15時42分> TOYAMA
|
|
配列は何回も繰り返して再設定、消滅を繰り返す訳ですが、配列の変わり目で同じ要素が稀に続くことがあります。これを避けるには若干の修正をすればよいでしょう。
oldname、newname、と同じ要素が続いた場合の処理をするfunction selectclip()関数を追加します。
var myclip:String = "th0,th1,th2,th3,th4,th5";
//文字列を作成
var clipArray:Array = new Array();
//配列を作成
var m:Number;
var n:Number;
var s:Number;
var newname:String;
var oldname:String;
this.createEmptyMovieClip("mymc", 1);
//空ムービークリップ作成
clipArray = myclip.split(",");
//配列の設定
function displayClip() {
//ムービークリップのアタッチ関数
removeMovieClip(mymc["my_mc"]);
//ムービークリップの削除
m = clipArray.length;
//配列の長さの取得
if (m>0) {
//配列の要素があるときの処理
n = Math.floor(Math.random()*m);
//配列のからランダムに要素を抜き出す
s = mymc.getNextHighestDepth();
mymc.attachMovie(clipArray[n], "my_mc", s);
//アタッチを行う
if (m == 1) {
oldname = clipArray[n];
}
clipArray.splice(n, 1);
//アタッチした要素を削除
} else {
//配列の要素がなくなったときの処理
clipArray = myclip.split(",");
//配列の再設定
m = clipArray.length;
//配列の要素数を取得
n = Math.floor(Math.random()*m);
//ランダムに数を決定
newname = clipArray[n];
if (oldname == newname) {
selectclip();
} else {
s = mymc.getNextHighestDepth();
mymc.attachMovie(clipArray[n], "my_mc", s);
//アッタチする
clipArray.splice(n, 1);
//アッタチした要素を削除
}
}
}
function selectclip() {
m = clipArray.length;
while (oldname == newname) {
//配列の要素数を取得
n = Math.floor(Math.random()*m);
newname = clipArray[n];
}
s = mymc.getNextHighestDepth();
mymc.attachMovie(clipArray[n], "my_mc", s);
clipArray.splice(n, 1);
}
displayClip();
//アタッチ関数呼び出し
setInterval(displayClip, 2000);
//アタッチ関数を2秒ごとに呼び出し
http://www.geocities.jp/jin_toyama/index.html
|
|
Response
03
|
| 2008年03月26日
(水) 12時07分> ゆう |
|
TOYAMAさん
はじめまして。
ご返信ありがとございました。
本当にたすかりました。
よくscriptを見て勉強します。
私はパソコンを触り始めて今年で二年目です。
htmlのコーディングから始め
個人のホームページぐらいは作れるようになりました。
しかしflashをやり始め苦戦の嵐です。
まず、数学と言うより算数の低学年レベルしかわからず
今は勉強しとけばよかったと悔やみます。
いまさら勉強しても遅いなど言われますが
独学を支援くださる皆様には感謝です。
今は1フレームにすべてのscriptを書くというのが私の課題です。
|
|