読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

rascut を使っていて、「既知のプレーヤーのダウンロードタイプではありません」と言われてニッチもサッチ行かなくなるのを解消する方法

actionscript flash ruby

注意

下記の取り消し線の情報の対応方法はものすごく間違ってたっぽいです。
さーせん/(^o^)\

ただ、問題の原因は分かった

単純に swf のパスが読み込めないからダメだっていう話だったみたい。
今のファイル構成の場合、 src 配下に swf を出力しないで、 bin に出力させたいので、

-c"-output bin/hoge.swf"

にしてるんだけど、そうすると、単純に swf が src に無いので、ロードできなくて、おかしな事になっていたようだ。
というわけで、swf のロードパスを指定するオプションを追加してみることにした。

config に項目を追加

rascut-0.2.1/lib/rascut/config.rb の63行目に以下を追加

op.on('--swf-path=VAL', "load swf path") {|v| @params[:swf_path] = v }
httpd.rb にちょっと追加

rascut-0.2.1/lib/rascut/httpd.rb の25行目に以下を編集

swf_path = Pathname.new(config[:swf_path]).realpath.parent.to_s || command.root.to_s

これで

 --swf-path bin/hoge.swf

とかやれば任意のパスを読むようになります。これで out-put を変えても追従できるようになりましたね!

rascut って便利ですよね

Flex Builder を使っていない貧乏人やおれは vim で開発したいんだ(キリッ)みたいな人にとって、rascut は無くてはならない存在ですよね。

しかし、あるときを境に

rascut を使って swf をロードしても、まったく動かなくなった。
Flash ログには「既知のプレーヤーのダウンロードタイプではありません」と出ている。 Flash Player のバージョンを上げたせいか?*1

そのため

一応、ビルドはきちんとやっているので、rascut でビルド→スタンドアロンプレイヤーで起動という方法をとっていたのだけど、それはまったくクソみたいに不便だったのでなんとか解決してやろうと思った。
だいたい、ダウンロードタイプではありませんとか言うくらいなので、ダウンロードする(swfをロードするときの)content-type あたりのチェックなのでは無いかと踏んで調べてみた。

どこを直すか

どうもリロードする際におかしくなってるっぽいので、以下を直してみた。

rascut-0.2.1/lib/rascut/httpd.rb

ここの103行目(reload_handlerメソッド内)の

head["Content-Type"] = "text/plain"

head["Content-Type"] = "application/x-shockwave-flash"

にする。

これで快適 rascut ライフが帰ってきた!

やったね!

と思いきや

この文章を書いている時に、修正前の状態でエラーが出る事を確認しようとしたところ、なぜか例のエラーがでない。
なんでだろう・・・。上記の修正をしたタイミングで rascut で元気に動かせるようになったのに・・・/(^o^)\

というわけで

なんか、根本的な解決方法ではなかったような気がするけれど、もし上記エラーでお困りでしたら、ためしに修正してみると直るかもしれません。

*1:あげた事すらよく覚えてないけどw