flashのアクションスクリプトについて


下記のコードのflashを表示すると
数十秒後にブラウザがもの凄く重くなります。
解決するコードを教えてください。

お願いします。


onClipEvent (load) {
c = 50;
i = 0;
}
onClipEvent (enterFrame) {
c++;
if (c > 50) {
c = 0;
if(i > 15){ i = 0; }
i++;
_root.attachMovie("ring", "ring"+i, 1+i);
eval("_root.ring"+i)._x = Math.floor(Math.random() * 1000);
eval("_root.ring"+i)._y = Math.floor(Math.random() * 1000);
}
}

回答の条件
  • 1人1回まで
  • 登録:2008/10/24 21:41:46
  • 終了:2008/10/30 10:52:44

ベストアンサー

id:okmt_masaaki No.2

okmt_masaaki回答回数59ベストアンサー獲得回数62008/10/30 10:16:15

ポイント100pt

ルートに↓の書いたらいけると思います。

Flashのヘルプの例そのままです。

var intervalId:Number;

var count:Number = 0;

var maxCount:Number = 15;

var duration:Number = 100;

function createMC():Void {

this.attachMovie("ring","ring"+count,count);

this["ring"+count]._x = Math.floor(Math.random() * 1000);

this["ring"+count]._y = Math.floor(Math.random() * 1000);

count++;

if (count >= maxCount) {

count=0;

}

}

intervalId = setInterval(this, "createMC", duration);

id:worldtravel

コードまでありがとうございます。

思い通りの動作になりました。

重くもなく快適です。

ありがとうございました。

2008/10/30 10:52:15

その他の回答(1件)

id:octech No.1

octech回答回数12ベストアンサー獲得回数12008/10/24 22:44:40

ポイント20pt

attachMovieで同じ名前、同じ高さに配置しているので、特に問題ないように見えますが、attachMovieの直前に以下のコードを入れてみてください。

if( eval("_root.ring"+i) != null ){
  eval("_root.ring"+i).removeMovieClip();
}

自分のところの環境ではこれで特に問題がないようです。

id:worldtravel

ありがとうございます。

残念ですがあまり変わっていないような気がします...

ブラウザが重くなると言うよりパソコン全体が重くなります。

他にもお心当たりがありましたら皆さんお願いします。

2008/10/24 23:08:22
id:okmt_masaaki No.2

okmt_masaaki回答回数59ベストアンサー獲得回数62008/10/30 10:16:15ここでベストアンサー

ポイント100pt

ルートに↓の書いたらいけると思います。

Flashのヘルプの例そのままです。

var intervalId:Number;

var count:Number = 0;

var maxCount:Number = 15;

var duration:Number = 100;

function createMC():Void {

this.attachMovie("ring","ring"+count,count);

this["ring"+count]._x = Math.floor(Math.random() * 1000);

this["ring"+count]._y = Math.floor(Math.random() * 1000);

count++;

if (count >= maxCount) {

count=0;

}

}

intervalId = setInterval(this, "createMC", duration);

id:worldtravel

コードまでありがとうございます。

思い通りの動作になりました。

重くもなく快適です。

ありがとうございました。

2008/10/30 10:52:15
  • id:octech
    例えば、以下のようなコードで最初から16個出していたときはどうでしょうか?
    最初から重いですか?
    >||
    onClipEvent (load) {
    c = 50;
    for( i=1; i<=16; i++ ){
    _root.attachMovie("ring","ring"+i,1+i);
    eval("_root.ring"+i)._x = Math.floor(Math.random()*500);
    eval("_root.ring"+i)._y = Math.floor(Math.random()*400);
    }
    i = 0;
    }
    ||<

    また、ステージサイズ、および、フレームレートはどうなっていますか?
  • id:worldtravel
    遅くなりましてすいません。

    教えていただいたコードを試すと気持ち重くなります。
    また、16を30にしてもそれほど変わりは感じませんでした。


    ステージサイズは800x600、フレームレートは30です。
    ringのデータは一つの画像が30秒かけて拡大していくようになっています。
    とりあえず

    if(i > 15){ i = 0; }



    if(i > 10){ i = 0; }


    とすることで多少は良くなった気がします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません