- ベストアンサー
ActionScriptで指定回数でループを止める方法
- ActionScriptを使用して、指定回数でループを止める方法について教えてください。
- 回数を指定せずにループさせると無限に動作しますが、回数を指定してループを停止する方法を教えてください。
- Flash8を使用していますが、for文とStop()を組み合わせても上手くいきません。どうすれば指定回数でループを停止できるでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> ブラウザの縦横サイズを設定 という部分が ActionScript では無理ですね。 ブラウザはブラウザであって,Flash の範疇ではありません。 つまり, documentクラス とか windowクラスというものが Flash には存在しないので, その大きさを指示したり,プロパティを取得することなどもできません。 というより, ブラウザのウィンドウは,普通 SWF 外にあるので, そういうところまでムービークリップを持っていくことがそもそも無理ですから, あっても無意味に近いと思います。 ActionScript で動かしたり表示させたり座標指定ができるのは,SWF 内止まりです。 HTML や ブラウザのエリアまで座標指定するのは無理です。 それに, ブラウザのサイズはモニタのサイズや手動による拡大縮小によって決定しますから, ActionScript では絶対に無理です。 また ステージの大きさも HTML で指定するのが普通ですから, そこら辺(HTMLのタグを書き替える)まで ActionScript が指示するのも不可能です。 そして,HTML や ブラウザ 内で, SWF をパーセント表示する場合も, モニタのサイズや手動による拡大縮小によって決定しますから, そこら辺(人間の意志を操作する)まで ActionScript が指示するのも不可能です。 ====================== しかし, SWF の 「ステージの縦横サイズを取得する」 まででしたらできますよ。 Stage クラスの widthプロパティ (Stage.width) や,heightプロパティ (Stage.height) で取得することができます。 その 3回 左から右に行く MC に書くスクリプト例です。 ---------------------------------------- onClipEvent (load) { // Loadされたら、MCの移動量を定義 idou = 10; // そしてステージの横サイズを取得 stgW = Stage.width; // 回数をカウントする変数 cnt 初期化 cnt = 1; } // onClipEvent (enterFrame) { // 毎フレームごとに移動量を座標に足す this._x += idou; // もしMCが右端+100の位置に来たら、 // なおかつ cnt の値が 3 未満であれば if (this._x>=stgW+100 && cnt<3) { // 回数をカウントする変数 cnt に +1 cnt++; // MCを左端-100に戻す this._x = -100; } else { /* ここに3回繰り返したらどうするのか書く (書かなくても良いですが) */ } } ---------------------------------------- for 文 というのは, スクリプトの処理を瞬時に繰り返すものです。 上のように同じ動作を3回繰り返す場合は, その動作を繰り返すたびにその都度何かを処理しなければなりません。
お礼
sassakun様 前回に引き続き、大変ご丁寧な解説を頂きまして 誠にありがとうございます。 ステージの大きさの件、十分に理解しました。 また、繰り返すスクリプトも非常に分かりやすいです。 いつも助けていただきまして、ありがとうございます。 お陰様で、ようやく完成できそうです。 本当にありがとうございます。