※ ChatGPTを利用し、要約された質問です(原文:[AS3]ループするたびに変数等は新規生成される?)
[AS3]ループするたびに変数等は新規生成される?
このQ&Aのポイント
Actionscript3.0を使ってループ処理を行う際、変数やインスタンスはループするたびに新しく生成されるのか疑問です。
具体的な例として、シーンのジャンプによって生成される変数やムービークリップについても触れています。
AS3について調べているとメモリ解放やリスナの削除に関する情報も見つけたため、生成されたインスタンスのメモリ消費についても気になっています。
[AS3]ループするたびに変数等は新規生成される?
Actionscript3.0
Adobe Flash Professional CS5
いつもお世話になっております。
独学でActionscript3.0を触っています。
基本的なことですが、調べても思っている答えが出てこないので質問させてください。
for文やシーンのジャンプなどによって、いわゆるループ処理をするたびに、「var」で生成されている変数やインスタンスはどんどん増えていくものなのでしょうか。
たとえば今私が作っているものですが
シーン2にムービークリップ「botan1」~「botan4」があります。
どれかをクリックしたら、シーン3ないし4に飛びます。行き先はランダムで決めています。
そしてシーン3・4にある「戻る」ボタンをクリックしたらシーン2に戻ってくる仕組みです。
実際に実行した場合、シーン2に
var Flag:int;
var botan1:MovieClip=new MovieClip();
botan1.addEventListener(MouseEvent.CLICK,botan1Push)
function botan1Push(e:MouseEvent){
gotoAndPlay(3);//実際はランダムに飛ぶ
trace("ボタン1が押されました");
}
//以下略
と書いてあったとして、初回実行時にFlagやムービークリップが生成され、またイベントリスナも生成されますよね。
そしてbotan1をクリック→シーン3に飛ぶ→シーン2に戻ってきたときに
新たにFlagやMC、イベントリスナは作成されたりするのでしょうか。
それとも、上書きでもされるのでしょうか。
変数やムービークリップだけでなく、「var urlReq:URLRequest=new URLRequest("URL");」などのURLリクエストやローダーについても気になります…。
AS3について調べていると、メモリ開放…とか、要らなくなったリスナはremove…とか書いてあるので、
もしシーンに戻るたびに生成されているならば、40回くらいループする上実際は上記よりももっと沢山生成するので、その容量たるや…?といった感じです。
本当に初歩的な質問で恐縮なのですが、どなたかご教授ください。。
(PrivateやPublicの違いすら分かっていません…)
お礼
shockatz様 ご回答ありがとうございます! なるほど、ではイベントリスナのみ気にしておれば良いのですね。 イベントリスナ(マウスクリック)からのfunction内に、trace("ほにゃらら");を記入していると、ループ回数が増えるにつれて、出力される「ほにゃらら」の行数も増えていってしまい困っておりました。 シーン3ないし4に移るたびにイベントリスナをremoveするようにすると、問題は解決しました。 ボタン以外にもaddしっぱなしのイベントリスナがたくさんあるので、ちゃんと処理を記述していこうと思います。 わかりやすく解説してくださり、本当にありがとうございました! おかげさまで助かりました。 しかしバグ…みたいなものなのですね。早く改善していただきたいです^-^;