アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして、質問させていただきます。

flashで、いくつかのムービークリップをランダムに表示させようとしています。
いろいろ調べてみて、swfファイル単体では表示させれるようになったのですが、なぜかhtmlで出力させようとすると何も表示されなくなってしまいます。タグが間違ってるのかと思って他のフラッシュでも試してみたのですが、このフラッシュだけが表示されません。
ためしにバージョンアップもしてみましたがダメでした。
よろしかったらご回答お願いします。

htmlに貼り付けたタグ

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab …
WIDTH="300" HEIGHT="300">
<PARAM NAME=movie value="img/top/random.swf">
<PARAM NAME=quality value=high>
<PARAM NAME=bgcolor VALUE=#ffffff>
<PARAM NAME=loop value=true>
<PARAM NAME=wmode VALUE=transparent>
<EMBED src="img/top/random.swf" quality=high
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/ind … type="application/x-shockwave-flash"
WIDTH="300" HEIGHT="300" loop=true>
</EMBED>
</OBJECT>

フラッシュのスクリプト

1フレーム目に画像を置かずにフレーム自体に
gotoAndStop(2 + random ( 4 ));

2フレーム~5フレームにムービークリップ

A 回答 (1件)

Flash はバージョンがわからないと回答できない部分が多いのですよ。


仕様やスクリプトも,作るべきムービー自体の構造も変わるので。
質問する場合は,
わざわざバージョンを隠すのではなくて,なるべく書くようにしてください。


まず,本題とはあまり関係のない部分からですが,
random関数は Flash 4 以前の関数です。
しかし,書かれている文型は Flash 5 以降の文型です。
Flash 5 以降のバージョンをお持ちであるか,
または,
Flash Lite(携帯用Flash)1.0 ,1.1 にパブリッシュするのではない場合は,
random関数の使用はさけて Mathクラスの randomメソッド を使うようにしましょう。

Flashドキュメンテーション (Flash 8 のヘルプ)
「random 関数」
http://livedocs.adobe.com/flash/8_jp/main/000017 …
 ~引用~
> Flash Player 5 以降では使用しないでください。
> この関数の代わりに Math.random() を使用します。

「Math.random() でランダムな整数を取得する方法」
http://www.adobe.com/jp/support/flash/ts/documen …

したがって,ここまでで,次のように変更されます。

gotoAndStop(2 + random ( 4 ));
 ↓ 変更 ↓
gotoAndStop(2+Math.floor(Math.random()*4));


次に本題ですが,
Flash の SWF ファイルは基本的にストーリーミング再生されます。
特別なことをしないかぎり,
フレーム1 から順次ロードされて,
ロードをしながらそれと並行して再生もされます。
無茶な gotoAndStop() などをしない普通に流れるアニメーションの場合,
このストリーミング再生に関してはあまり気にする必要もないのですが,
ご質問の場合は無茶な gotoAndStop() をしているので,
この点に気を付けなければなりません。

ロードが完了していないフレームにいきなりジャンプしようとしても,
ロードされてしていないのですから表示されるはずがありません。
ロードが完了していないフレームにいきなりジャンプすると,
真っ白な画面で止まったままになってしまいます。

ですから,

 フレーム1が読み込まれる
  →フレーム1が再生される
   →全てのフレームが読み込まれるのを待つ
    →読み込まれてからジャンプ

という読み込み待ち処理を入れなければなりません。

簡単には,
次のようにします(Flash MX 以降のバージョンで使えるスクリプトです)。

-------------------------------------------------
// とりあえずストップ
stop();
// 1フレーム進む時間ごとに繰り返し実行
_root.onEnterFrame = function() {
// 読み込まれた容量/全体の容量 が 1 以上になれば
if (_root.getBytesLoaded()/_root.getBytesTotal()>=1) {
// フレーム2 ~5 にランダムジャンプ
gotoAndStop(2+Math.floor(Math.random()*4));
// この _root.onEnterFrame を削除
delete _root.onEnterFrame;
}
};
-------------------------------------------------


しかし,このままだと,
何もない(何かあっても)フレーム1でしばらくストップします。
そこで,よく見かける,「Now Loading...」 と表示されてバーが動く物や,
「読み込み中」が点滅するようなものを表示させて,
見てもらう側に「故障ではないという表明」や「暇つぶしのサービス」をする必要が出てくるのです。

ローディングバーなどの作り方やサンプルは,
適当に検索して良い物や好みの物を見つけてください。
http://www.google.co.jp/search?hl=ja&q=NowLoadin …
    • good
    • 0
この回答へのお礼

的確なご回答有難うございました。
flashのバージョンはMX proの7.0.1でした。
頂いたスクリプトを埋め込んだら表示されるようになりました。
gotoAndStopでただ飛ばせばいいというわけではないのですね。
とても参考になりました。有難うございました。

お礼日時:2007/06/05 00:13

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