誕生日にもらった意外なもの

全てActionScriptだけで、動作させています。

・Loadされたら、MCの移動量を定義
・フレームに入ったら、ブラウザの縦横サイズを設定
  {毎フレームごとに移動量を座標に足す
    {もしMCが右端+100の位置に来たら、
     (MCを左端-100に戻す) }

上記の{ }部を3回繰り返したら停止する、というものを作成したいのですが。
for文を入れて+Stop();を最後に記載したのですが、ダメでした。
回数を指定しないと、ちゃんと動作しますが当然ながら無限に動きます。

すみません、どなたかご教示頂けませんでしょうか。
どうぞよろしくお願いします。

※当方Flash8にて制作しております。

A 回答 (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回繰り返す場合は,
その動作を繰り返すたびにその都度何かを処理しなければなりません。
 
    • good
    • 0
この回答へのお礼

sassakun様

前回に引き続き、大変ご丁寧な解説を頂きまして
誠にありがとうございます。
ステージの大きさの件、十分に理解しました。
また、繰り返すスクリプトも非常に分かりやすいです。
いつも助けていただきまして、ありがとうございます。
お陰様で、ようやく完成できそうです。
本当にありがとうございます。

お礼日時:2007/05/27 12:13

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


おすすめ情報