●FlashでのRSSリーダー2
昨日、エントリーあげた時点では気づいていなかったんだけど、
他ドメインのxml情報ってFlashの仕様で基本的に引っ張ってこれないのね・・・
サーバーにあげたら記事でないからおかしいなぁなんて思ってたんだけど、こんな罠があるとは。
でも解決法がないわけでもないそうなので、
いろいろ試しています。
ここに来て、javascriptとかphpとかつかわなきゃいけないのがすげぇ苦痛だけど、
できれば完成させたい。
昨日、エントリーあげた時点では気づいていなかったんだけど、
他ドメインのxml情報ってFlashの仕様で基本的に引っ張ってこれないのね・・・
サーバーにあげたら記事でないからおかしいなぁなんて思ってたんだけど、こんな罠があるとは。
でも解決法がないわけでもないそうなので、
いろいろ試しています。
ここに来て、javascriptとかphpとかつかわなきゃいけないのがすげぇ苦痛だけど、
できれば完成させたい。
FlashでのRSSリーダーを作ってみた。
まぁまぁ良いでき。
ただ、汎用性がイマイチない使用条件として
atom以外、配信タグの指定あり
というものなんだが、特定のサイトのRSSリーダーとしてカスタムするのはできる。
つまり、サイト指定して決めウチで作るのはできるけど、
どのサイトでも使える訳じゃないって所。
Flashliteまで落とし込めるとなかなか使えそう。
つか、できるのかなぁ?
flvを再生した後何かしらのアクションを起こすときには下記のようなスクリプトを書いておく。
//オブジェクトを作成 obj = new Object();//動画の再生終了後の操作
obj.complete = function(){
アクションの内容();
};//オブジェクトを登録
ステージ上に配置してあるflvのMC名.addEventListener( "complete" , obj );
stop();
flvをFlashに取り込んでコンテンツ作る機会がなかったので、普通に動画ファイルをFlashに取り込んでswf再生するのと何が違うんかいな?って思っていたんですが、実際にやってみてわかりました。
同条件で81.4MBの動画を同条件(音声品質、画像品質、フレームレート)でコンバート
FLV:3,573KB
swf:3,555KB
と、容量はほぼ変わらず。
が、
再生してみると、
swfに音声のタイムラグが・・・・
そういえば、今まで音声付きのムービー扱うことがあまりなく、結構長めのムービーは確かに音声がずれて取り込まれて、どのときには音声と動画部分を分けてタイミング見計らって力業で再生してたなぁ・・・
FLVにしちゃえば問題ないじゃない!!
あぁ、今頃こんな事に気づいて恥ずかしいなぁ。
それに若干画質が良い気もする(たぶん気のせいと思うくらいのレベル、つか、気のせい)
<まとめ>
ムービーはVideo EncoderでFLVにしてからFlashに取り込もう!
再生コントロールもついてくるしw
ファイル→読み込み→ビデオの読み込み→参照ボタンでFLVファイル指定
→「Webサーバーからのプログレッシブダウンロード」を選択、
再生コントロールのタイプ選んで終了
サーバーアップ時には取り込んだときと同じディレクトリ構造でFLVもアップすることが必要
flvをFlashに取り込んでコンテンツ作る機会がなかったので、普通に動画ファイルをFlashに取り込んでswf再生するのと何が違うんかいな?って思っていたんですが、実際にやってみてわかりました。
同条件で81.4MBの動画を同条件(音声品質、画像品質、フレームレート)でコンバート
FLV:3,573KB
swf:3,555KB
と、容量はほぼ変わらず。
が、
再生してみると、
swfに音声のタイムラグが・・・・
そういえば、今まで音声付きのムービー扱うことがあまりなく、結構長めのムービーは確かに音声がずれて取り込まれて、どのときには音声と動画部分を分けてタイミング見計らって力業で再生してたなぁ・・・
FLVにしちゃえば問題ないじゃない!!
あぁ、今頃こんな事に気づいて恥ずかしいなぁ。
それに若干画質が良い気もする(たぶん気のせいと思うくらいのレベル、つか、気のせい)
<まとめ>
ムービーはVideo EncoderでFLVにしてからFlashに取り込もう!
再生コントロールもついてくるしw
ファイル→読み込み→ビデオの読み込み→参照ボタンでFLVファイル指定
→「Webサーバーからのプログレッシブダウンロード」を選択、
再生コントロールのタイプ選んで終了
サーバーアップ時には取り込んだときと同じディレクトリ構造でFLVもアップすることが必要
サーバーへのコール&レスポンス処理
Flashからcgiなりphpにデータを渡して返り値を処理するのに
FlashからはsendAndLoad("送り先ファイルURL",返り値受け先,"送信方法");でデータ送受信、
返り値の受け先はあらかじめ定義しておく必要あり(ex: receivedData = new LoadVars();)
んで、受け取ったデータが更新されたら、onLoadハンドラで処理をいろいろと思って書いては見たモノのonLoadハンドラが実行されない。
おっかしいなぁ、記述方法間違ってたかなぁなんて思いながらデバック2時間後・・・・
謎が解けました。
sendAndLoadを実行する一連の流れ(同一ファンクション内)で実行しなきゃいけなかったのね。
sendAndLoadを実行するファンクションとは別に記述していたのが原因で、
sendAndLoadを実行するファンクション内に納めたらうまく動きました。
Flashクイズなどでランダムに出題し、尚かつ問題が重複しないように乱数の発生を配列を使って管理する。
いろんなサイトを見て参考にして、自分なりに記述。
これで重複しないで乱数を発生させることが出来る。
//値総数宣言
var Dtotal = X;
//問題発生回数リセット
Dnum=0;
//問題番号格納用の並列作成
var Qbox = new Array();
//問題設定ファンクション
function xQuestion(){
//問題数<値総数が第一条件
if(Dnum < Dtotal){
//Y問目カウント
Dnum++;
if(Dnum==1){
//値総数を乱数発生、一回目は素直に加
Qnum = Math.floor(Math.random() * Dtotal);
//発生した乱数を配列に格納
Qbox.push(Qnum);
}else{
Qnum = Math.floor(Math.random() * Dtotal);
//重複チェック用に現在の配列の要素数を求める
var Qlen = Qbox.length;
//重複チェック
loop_flg=0;
while(loop_flg != 1){
//重複ループを抜けるフラグを先に立て、チェックに引っかかったらフラグ変数を変えて再度ループさせる
loop_flg=1;
for(i =0; i<=(Qlen-1) ; i++){
if(Qbox[i] == Qnum){
//配列要素全てと発生させた乱数をチェックし、重複があった場合は再度乱数発生
Qnum = Math.floor(Math.random() * Dtotal);
loop_flg++;
}
}
}
//発生した乱数を配列に格納
Qbox.push(Qnum);
}
}
}
xQuestion();を実行するたびに乱数を発生させることが出来ます。
※はっきりしたことは言えないが値の総数が非常に多いと処理落ちするのかなぁ・・・
Flash Liteでメモした変数がらみのパス。
Flash Liteじゃなくて普通のaction scriptでの変数がらみのパスの設定の仕方にしばらく躓いていました。
モバイルコンテンツ作りすぎてて普通のFlashの作り方を忘れてしまっているようだ・・・orz
ということでメモ
_root["文字"+ 変数 + "文字"+ 変数].〜〜〜〜
ここで大事なのが【 [ ] 】を使う前には【 . 】(ドット)入れたらアカンってことな。
階層深くなっても一緒。
>_root.インスタンス["文字"+ 変数 + "文字"+ 変数].〜〜〜〜
あー、スッキリした。
今夜の英語でしゃべらナイトにノエルがでるらしい。
飲み会に行かねばならんので見れず!
再放送かYouTubeでチェックだなw
噂によると、僕らの音楽にもそのうちでるらしい。
ソースはmixi[oasis]コミュ
ここ半年Flash漬けなので、色々Flashについての知識が増えているわけで、
最近は携帯用Flashの作成にいそしんでいます。
この携帯用Flashっていうのがかなりの制限が付いていて、
現行のFlashなら簡単に出来ることでも出来ないって縛りがあったり色々大変なんですよ。
しかも、携帯用Flash(Flash Lite)についての文献がほとんど無く、
あっても全然使えないモノばかり。
結局ネットで検索する日々だったりまします。
毎回毎回、検索するのもおっくうなんで、自分のブログでメモ書きとして使っていきたい。
もし、コレを見て参考になったなんて人が居たら幸い。
最近ずっとflash漬けで、
ビックリするくらい技能が上がっている気がします。
簡単なゲームなら再現できそうなくらいw
がー、そんなことはクライアントはわかってくれず、無理難題をおっしゃるw
flashどんとこーい!って感じ
いや、まだまだなんだけどね。