最新版FLASH PLAYERで突如未ロードになる現象が発生(11.6.602.168)

flash未ロード状態に

統合されたFLASH PLAYERのアップデート直後からこうなってしまって一切の操作不可能。
こういう現象にモロに制作物で引っ掛かるなど……。
アップデート前のPCなら問題なく動作するし、ぐぐっても見つからないし、
これはどうしたら……と思っていたら。

aobeのフォーラムより
http://forums.adobe.com/message/5101516#5101516

11.6.602.168のflash playerより、インスタンス中に極端に長いAction Scriptが含まれたswfは
突然ムービーが停止するようです(突如ムービーが未ロード状態になります)。
以前までのバージョンのflash playerでは動作するswfが、このバージョンのflash playerより動作しない場合があります。

flash制作ツールなどにコピー&ペーストを繰り返すことで長いActionScriptを作ることで、人為的に再現可能です。
最新のadbe flashで制作されたものに再現性があるかはわかりません。
Flash MX仕様のActionScriptで、比較的古いゲームでのみ発生する可能性が高いです。
(他にも何らかの条件があるのかもしれません)

フリーウェア等で制作されている場合には注意が必要かもしれません。


OnClipEventに糞長いアクションスクリプトを入力していたので
それを複数のスプライトへ分割したところ、解決しました。
……メモリ管理の仕様でも変わったかな?


まあリリース直前に発覚して不幸中の幸いといいますか。

過去にリリースした作品は影響を受けない……はずです。多分。
そちらの方が心配ですねー。
line

吉里吉里からFLASHへ変数を送る

[macro name=flash]
;flashタグで変数がswfファイルへ送られるようになる
[playvideo * storage=&f.data]
[endmacro]

[video visible=true left=112 top=100 width=800 height=600 loop=false mode="overlay"]
[eval exp="f.test1=100"]
[eval exp="f.test2=200"]
[eval exp="f.nanikoko='なにココ'"]

[eval exp="f.data='ファイルネーム.swf?test1='+f.test1+'&test2='+f.test2+'&nanikoko='+f.nanikoko"]

[flash]

これで、test1、test2、nanikoko変数がflash側で管理できるようになりますす。ただし、呼び出しの時だけにしか引数は受け渡しができませんので、リアルタイムでの連携は無理ですが、単にFLASHを小間切れにしておけばいいだけです。

 あまり大量の変数は送れませんが、FLASHゲームに必要な変数を絞り込んでおけば問題ありません。逆はflash側からfscommandを呼び出すことで吉里吉里へ取り出せます。
 利点としては
1.FLASHのわけわからんセーブ機能を排除し、吉里吉里の栞で変数管理ができる。
2.FLASHと吉里吉里の完璧な連携
 flashゲームでの得点やステータスなどを吉里吉里とSwFで共有できます。
 FLASHと吉里吉里の連携できますので、アクションシーンはFLASHで、アドベンチャーシーンは吉里吉里で、といった使い方もできます。一番効果を発揮するのはアドベンチャーシーン+お触りエロゲーですけれど。

 欠点は
1.動的な連携はできない。
 FLASH       ――――↓     ――――・・・
 吉里吉里 ――――↑    ――――↑      ・・・
 このようにすべきです。

2.吉里吉里と同時起動しているとバグを起こしやすい。
 上の図のように吉里吉里→FLASH→吉里吉里・・・のような連携方法であれば回避できます。フラッシュを再生したらとにかくwaitを掛けておけばほとんど問題は発生しなくなります。
 スプライトを駆使したflashのキー操作関係はちょっとおかしいくなります。一次は問題解消できていたのですが、どうやったのかわからなくなってしまいました。
 一定の周期おきに、リセットがかかっているというのはわかるのですが・・・。fscommandoもたまに取りこぼすことがありますので、連発した方がいいかもしれません。

 あとの厄介な問題はFLASH再生中にフルスクリーン切り替えを行う際に画面が狂うことですが、FLASHよりも吉里吉里のサイズを大きくする、VGA用・ワイド用のコンフィグを用意してプレイヤーに選択して貰う等の対策しか思いつかないです。解像度切り替え方式は市販ゲームでもアス比が狂うか、表示の乱れることが多いです。
line

フラッシュで外部ファイルを読み込む際のカレントディレクトリ

フラッシュで親swfと子swfがあって、親swfでLoadMovieNum関数などを使って子swfを呼び出したとする。
子swfのディレクトリが別の場所であっても、子swfで外部ファイルを読み込む際のカレントディレクトリは親swfと同じディレクトリィになる。

こう書くと意味がわかりづらいけれど、早い話、フォルダ構成は変わることがありますよ、ということ。
デバッグでは問題なく外部ファイルを読み込むことができたのに、完成品のパッケージにしたら外部ファイルが読み込めない……という時にはこのカレントディレクトリが違っている可能性が高い。

実を言うと、以前はこれに気づかずに
「あれ動かないよ? どうしよう?」
と、慌てて外部ファイルを読み込む方式から、一つのバイナリに組み込む方式に変更したことがあります。
line

Macではwavファイルが鳴らない

blogの更新方法を忘れてしまって更新できなかった今日このごろです。
ちゃんと編集ページをブックマークしておけばいいのですね。

さて、本題ですがFLASHでもマッキントッシュではwavファイルが鳴らないそうです。
これは不意打ちでした。
四月ばかではありません、本当の話しです。

実際にマッキントッシュ上で走らせてみると
ザーっとホワイトノイズが鳴るそうです。
もしかすると、対応する周波数等が異なるのかもしれません。

さて、無圧縮PCMファイルが鳴らない、となると処理の都合で問題が出てきます。
mp3に変換してしまえば問題は消失するのですが、
それでは効果音などが大量に重なった場合処理が重くなります。

シューティングゲームなど、一瞬の動作が決め手となるものでは大問題です。

対応策としては、windows専用と、mac専用と分けてしまえば済むのですが……。
line

LoadMovieNum();関数は要らない子?

現在作っているのはシューティングゲームということで
ステージ毎にswfを用意しているのですが
その読み込みに、軽くつまづいていました

loadMovie();関数を使ってみたのですが、画像が表示されないという……
完全に独立したswfでは_rootが干渉してダメなようです
ステートを渡せるので、非常に便利なんですが

一方のloadMovieNum();では
_levelごとに_rootの共存ができるので
こちらを採用することにしました

ただし、_level毎の管理なので動的に弄くるには不便です
(尤も、弄くる機会はありませんけれども)

LoadMovieNum関数は要らない子で
新しいActionScriptでは削除されているそうです

はじめから共存させることを前提で組むか
もしくは新しい命令を用いるか、でしょうね

質問箱などでもLoadMovieNum関数がやたら要らない子扱いされているのを見ましたが
どの質問者も入れ子にして操作することが前提で
どうにも私とは全く用途が違うようです
line
line

line

バンダイチャンネル

違法配信を失くし公式の配信で視聴しましょう
TVスポンサーに頼らない新しいアニメ放送の形態に期待します

Profile

てすと荘

Author:てすと荘
連絡先:info@purple-ray.cside.to

line
Latest Entries
line
Latest Comments
line
Latest Trackbacks
line
Monthly Archive
line
Category
line
Search Form
line
RSS
line
Link
line
Add Friend Form

Add this person to blog friend

line
sub_line