2006年01月10日
swfの読み込みチェック
swfファイル、自分自身の読み込み終わりをチェックする方法についてです。
・1,2,3のフレームをキーフレームにします。
・2フレーム目に”startloop”とラベルを付けます。
・3フレーム目のフレームのアクションに下記を入力します。
// 全体読み込みチェック
if (_root.getBytesLoaded() != _root.getBytesTotal()) {
_root.persent.text=int(_root.getBytesLoaded() / _root.getBytesTotal()*100);
_root.gotoAndPlay("startloop");
}
2行目はいりませんが、進行状況を見たければ”persent”と命名したダイナミックテキストを配置してください。
これで、全体を読み込んでから次のフレームに移行します。
WEB、書籍などにも同様の例は沢山のっているので、そちらを参考にしても良いでしょう。
テキストをスクロールさせたい
配置したテキストをスクロールさせる方法はいくつかありますが、単純なボタンにしてしまうと、1クリック1行のスクロールになってしまいます。
マウスを押している間、もしくはマウスがボタンにかさなっている間(マウスオーバー)、スクロースさせたい場合には、フラグを使います。
ボタンのプレス時にフラグをON。
リリース時にフラグをOFFにします。
スクロール対象のテキストをムービークリップのなかにいれ、毎フレーム(エンターフレーム時)にフラグをチェックして、スクロースさせます。
【サンプルFlaファイル】
scroll050110.zip
Flashをローカルで実行するメモ
Flashでムービーを作った物をWIndowsXpのsp2で実行しようとすると、デフォルトの設定の場合、警告が出ます。
面倒なので、
IEのメニューから
ツール
インターネットオプション
詳細設定タブ
セキュリティ項目の中の
「マイ コンピュータのファイルでのアクティブ コンテンツの実行を許可する」にチェック
以上で、ローカルのswfが実行できるようになります。
サーバーにアップすると動かない
サーバー上で動かない。
Flashをつくっていて、ローカルでは動作するのにサーバー上では動かないというのはよくあることです。
そのときの注意点をメモしておきます。
■サーバー上で動かない その1
以下の場合、サーバー上では動かないことがあります。
1)ファイル名に半角英文字以外の文字を使用している
2)パスの指定を間違っている
外部のTXTファイルを読み込んでいる場合、そのファイルも半角英文字でパスの指定には注意してください。
さらに、txtファイルはswf,htmlと同じ階層にしないと HTML上のswfファイルからtxtを読むときにはHTMLからの相対URLになります。(記憶が若干あいまいですが)
ということで繰り返しになりますが
1)すべてのファイル名を半角小文字で指定する。
2)HTML,swf,txtを同一のディレクトリにおく。
という事で、動くようになるかも。
どうしても違うディレクトリにファイルを置きたい場合には、一度同一ディレクトリで動作する事を確認してから改造してください。
■サーバー上で動かない その2 サイズが大きいSWFの場合
さらにコレでも動かない場合には、ボタンやgotoAndPlay命令で読み込んでいないフレームを実行しようとしている可能性があります。
サイズの大きいswfファイルは、ファイルの読み込み終了を待たずに動き出します。
最初のフレームにボタンが配置してあって、それをおすと読み終わっていないフレームに移動する場合、動きがおかしくなります。
■サーバー上で動かない その3 ファイルを読み込む場合
ファイル読み込みは発生する場合には、ファイルの読み込みをチェックする仕組みを入れておかないと、読み込み終了前に表示しようとすれば、うまくいかなくて当然です。
この場合も、ローカル上でなら問題は発生しにくいので、注意が必要です。
■ActivX対策のファイルをアップしそこねている
DWで作成したのならScriptsというフォルダと、その中身のAC_RunActiveContent.jsをサーバーにアップロードする必要がありあます。
(FlashでHTMLを書き出した場合には、同階層にあるAC_RunActiveContent.js)
WindowsのActivX対策のファイルがないと、swfファイルが表示されません。
対策ファイルを所定の位置にアップしましょう。