新ブログ「ごんフラブログG2」

WordPressで始めてみました

[海外]バンドルされた複数のゲーム・PCアプリが購入できるサイト
humblebundle.com


ごんたろうのぼやきトップ

2010年10月04日

Flash [予期しないファイル形式です]

Flashの疑問。
ファイルを開くといきなり「予期しないファイル形式です」というエラー。
 当方が使用したFlash MX、Flash CS3、Flash CS4の3つのバージョン
全てで起こりました。
原因は不明。解決法は現状ナシと言えます。
CS4に関しては、未だ未解決バグが多いみたいですが
ツールなどがCS3から比べて大幅にグレードアップしたため
開発側がそれに追いついていけていないという非常に悲しい悲しい
そしてせつないせつない事情があるためかと思います。
CS4の頻繁に起こる強制終了とファイルぶっ壊れ現象はそのためかと思われます。
 開発側を擁護するわけではありませんが、どう考えても
プログラムの中身と仕様を理解し切れていないという風にしか見えません。
ま、開発期間が充分取れないというのもあるんだけどね。
それでもそれを「売る」という意味では結構ヤバいギリギリのラインじゃないかなって
思います(苦笑)
対策法は現在見つかりませんが
CS4のシャレにならないくらいの頻繁に起こるエラーは問題外として・・・
CS3や、MXなどの場合(MX2004、8でも起こるかもしれませんが)
データを上書きした際などに、再度、別名ファイルで保存し、
保存したファイルが正常に起動するか、ファイルを読み込んで確認してから
Flashを終了する必要があるかと思います。
Flashの中身を知らないのであくまで推測のことですが、
もしかすると、毎回「名前を付けて保存」を行うといいかもしれません。
↑逆に「上書き保存」がいいかもしれませんw
(あるいはどちらも危険???ww) 

というのはネットで検索しても、結構ファイルが壊れて困るという方が
多いと言うことはやはり完璧なバグだと思えるからです。

プログラムかじりの当方としては「名前を付けて保存」と
上書き保存」の処理は違う動作をしているはずなので、
どちらかの処理の時にファイルが壊れる処理が動いているという風に
当方は考えます。


考えられそうな?挙動として、例えば
上書き保存の場合に、名前を付けて保存と違って、
はしょっている処理があり、その端折った処理が
実は良くない、ということが考えられるかもしれません。
(これらはFlashのプログラムを調べないとわからないことですがw)

仮に上記の理由が当てはまったとしたら、
何らかの動作の後に上書き保存をしてしまった場合に、
(例えば何かの設定をいじった後に上書き保存したとか)
ファイルぼっかん処理が作動する、のような感じ。

実は上記の挙動って結構あるんですよ。


あと、保存する処理に問題があるのではなく、
読み込む処理に問題があると言うことも考えられます。
(実はこっちの可能性が大きかったりして?w)


とにもかくにも、現状対処法はございません。
当方は一度「名前を付けて保存」で一貫し、そして
まめに別名ファイルで保存しておくことを心がけます。


知っての行いか、割と短時間でコーディングや絵描き作業が
進んだときにカナリ高い確率でファイルが壊れていますw
ついさっきも数時間作り込んだコーディングデータが壊れ、
大暴れしそうになっております・・・(CS3)

posted by ごんたろう(Gontaro-Soft) at 03:43 | Comment(0) | 開発関係(Flash含む)

2010年07月20日

Flashのバグ。

CS4での動作。
もしかしたらCS5も同じ動作をするかもしれません。
CS3は同じ動作をしないかもしれません。
ムービークリップイベントの「onClipEvent」の「keyDown」なんですが
何度やっても動きません。
■下記の例はコード81番(q)を押したらという例です。
例えば 
if(Key.isDown(81)){
trace("hogehoge1")
_root.test_str1="hogehoge1" 
}
if(Key.getCode()==81){
trace("hogehoge2")
_root.test_str2="hogehoge2" 
}
こういう2つのif文を書いたとします。
念のため、ステージに「ダイナミックテキスト」で
「test_str1」「test_str2」というテキストボックスを作成しておいて下さい。
中身的には「q」キーを押したらというものにかわりはありません。
実際、ムービープレビューをして動作させましたが、動きません。
正常な動作はtrace出力で「hogehoge1」「hogehoge2」と
でるはずなのですが出ません。
テキストボックスにも文字列が表示されません。
これは「ムービープレビュー」のバグっぽいです。


試しにswfファイルを開いて確認しましょう。
(新規作成状態だけではswfは生成されないので、
デスクトップにでもflaファイルで出力し、その後ムービープレビューを
実行すればswfファイルが出力されるでしょう
で、実行するとテキストボックスに文字列が出力されるはずです。

ムービープレビュー上だけではうさんくさいので
必ずswfでもチェックするようにしましょう。
ちなみに余談ですが
「onClipEvent(enterFrame)」で上記の
if文を書くとtrace出力されますが、
実行されるのは「isDown」のみで「getCode」の
部分は動きません。


もう一つ。
コンポーネントを使用した場合
(ライブラリにコンポーネントが有る場合)
ボタンオブジェクトでの「keyPress」などが
動かなくなるようです。
やってみるとわかるのですが、
ボタンオブジェクトを生成し、
on(keyPress "q"){
_root.test_str1="hogehoge button"
}
などと書きます。
普通に動かすとテキストボックスに文字列が表示されます。
(例によってムービープレビューでは動きません

swfファイルで確認しましょう)

その後にメニューの「ウインドウ」から「コンポーネント」を選びます。
コンポーネントから(私は「UIScrollBar」を選択しました)
なにかをえらんでステージに配置します。
そして再び実行して下さい。
キープレスが動きませんw
そして、ステージからコンポーネントを削除しても
キープレスが動きませんw
ライブラリーから削除すると動きますww
ちなみに動作確認はCS4です。
MXではこのバグは発生しません。
つまりコンポーネントを使用した場合にキーイベントを使う場合、
ボタンオブジェクトではなく、ムービークリップイベントで
作成しなければならない。。。ということになりますかね?
(KeyDownでKey.getCode()を使用)
ちなみにenterframeでisDown判定しちゃうと
1回ではなくキー押しをPCが認識している間動いてしまいますw
どういう動きかというと、1回しか押していないのに
押したコンマ何秒の間(正確にはフレーム数(fps)が影響)
キー押しの動作がtrueになってしまいます。
例えばtrace("キー押し")を実行してたとすると、
プログラマーとしては1回実行して欲しいのに対し、
「キー押し」という文字列がダダダダダー!と出力されますw
keyDownでif(Key.getCode()==81)などと書けば
キー押し時に1回だけ実行します。つまりボタンオブジェクトと
同じような動きをするわけですな。
やってみなきゃワカラナイバグですが、ワカラナイ間は
非常に時間を食うやっかいなバグです。
以上、少しでもお役に立てたら、チョットでイイです。
下のバナー(楽天市場)をクリックしていただくと大変有り難く

思います。m(_ _)m
>

posted by ごんたろう(Gontaro-Soft) at 13:39 | Comment(0) | 開発関係(Flash含む)

2010年04月13日

予期しないファイルエラーの原因

Flash CS4で起こる「予期しないファイル形式」です、のエラー。
原因の一つがわかりました。
■flaファイル内に使用されているテキストボックスなどの
 フォントがファイル(fla)を開いたPCに存在しない場合、
 予期しないファイル形式としてエラーになる。
(Flash MXなどでは警告が出ていたが、CS4では落ちるようです)
posted by ごんたろう(Gontaro-Soft) at 02:38 | Comment(0) | 開発関係(Flash含む)
ブログランキング・にほんブログ村へ
にほんブログ村

インターネット・コンピュータランキング