【AS3】FlashDevelop【フリー】 (601レス)
【AS3】FlashDevelop【フリー】 http://mevius.5ch.net/test/read.cgi/swf/1216151218/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
160: Now_loading...774KB [sage] 2009/08/16(日) 12:40:30 ID:BH5EXFvM あぁ、書こうと思ってた心配事がとりあえず的中。 原因はつまり、>>158 氏の話の通りだ。 多分過去の仕様を引き継いで 強引に形を変えつつ、増築を繰り返してる&API仕様の整理が出来て無いのか、ライブラリがバラバラ。 具体的にどういう事があったかメモしとくとこんな感じ。 丁度 >>159 の話ともリンクするけど、 俺がやろうとしてた事は、かいつまんで言えば画像、音、動画(FLV)を、特に分け隔てもせずに動的にロードしつつ、再生するものだった。 実際には他にも色々行っているけど、その中の一部として、これをやりたかった。 そしてハマった。 結果、結局さんざん調べてどうやら出来ないとの結論に達して、別の観点で自分で整理して、継承したクラスいくつか作って 再管理する形にしたけど、この 「どうやら出来ない」 って結論に辿り着いた理由ってのが、まさにこのバラバラな作りのせい。 何かの役に立つかもしれないので、念のためまたメモしとく(続く) http://mevius.5ch.net/test/read.cgi/swf/1216151218/160
161: Now_loading...774KB [sage] 2009/08/16(日) 13:08:53 ID:BH5EXFvM (続き 1/2) 差し当たり、自サバのCGI(Perl/PHP)にパラメタをPOSTして、そのレスポンスとして flv ファイルを取得し、それを表示したかった。 画像と音はさくっと完成。 しかし flv でハマる。 結果、GETで投げれば普通に出来たんだが、POSTじゃないと困る部分があったので、そうしたかった。 しかし出来なかった。 その理由を具体的に以下に記す。 原因は上でも書いた通りクラスが一部独自仕様になっており、絶妙にバラバラに作られてたせい。 まず前提として、 flash.net.URLStream と flash.net.NetStream がまったく別物。 一見似てるけど全然別物。 どういう事かと言うと、 継承関係がまず Object ← EventDispatcher ← ほげほげStream となっていて、Stream 抽象クラスのような物は無いし、インタフェースインプリメントの状態もまったく別。 と言うか、 NetStream は IDataInput インタフェースを実装していない。 かと言って、上で書いたダックタイプな手法でごまかそうにも、メソッドのシグネチャが違うので無理。 つまり、この2つは相互に入れ替えが出来ない。 やろうとした事から考えると、NetStream がもしもインタフェースインプリしてたら、自前クラスで機能補完できたんだけど、 それも出来ず、かといって AS3 は多重継承も出来ないので、結果、出来ない。 http://mevius.5ch.net/test/read.cgi/swf/1216151218/161
162: Now_loading...774KB [sage] 2009/08/16(日) 13:11:50 ID:BH5EXFvM (続き 2/2) それならばと、URLStream でバイナリデータを自前でロードし、それを使おうと思ったが、今度は NetStreamにバイナリデータを受け取る口がない。 それならばと目の前の目的である flash.media.Video に渡そうと思ったが、それ自身バイナリデータを受け取るインタフェースが無い。 よって自前でロードして渡す案も出来ない。 それならば仕方が無いので、画像、動画、音声の共通抽象クラスを定義して自前で再実装、NetStream と URLStream に自前で共通のインタフェース定義して、 それをベースに書いてしまえと書いてみたが、ここで致命傷発覚。 つまり、NetStream には POSTデータが渡せない。 というか、HTTP-POSTを投げる方法が無い。 URLStream ならば、URLRequest を引数に取るのでどんなHTTP-METHODでも送信できるが、NetStream は NetConnection とだけ仲良しで、自由なHTTP送信は出来ない。 そして、flash.media.Video は、NetStream, NetConnection しか受け取らない。 そして、flv ファイルのデコードは、flash.media.Video 内のネイティブ実装コードが行っている。 という訳で、ここで詰んだ。 ちなみに現状は、とりあえずもっと上位レベルで自前で管理を揃えてます。 画像、音声、動画を同じように非同期でロードしつつ、どれも同じように 扱えるクラス書いて。 NetConnection/NetStream って、どうやら Flashサーバ向けの固有実装っぽい。 ハードコード祭りらしく、その理由はおそらく >>159 http://mevius.5ch.net/test/read.cgi/swf/1216151218/162
163: Now_loading...774KB [sage] 2009/08/16(日) 15:58:16 ID:BH5EXFvM ちなみに、flv ファイルを簡単に扱える VideoClip クラスを作ってあるのでソース貼っとく。 もし必要な人いたらどうぞ。 使用方法他はテキスト中で。 作りはシンプル ttp://flpannex.so.land.to/memo/memo4.txt http://mevius.5ch.net/test/read.cgi/swf/1216151218/163
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.217s*