Home > action script Archive

action script Archive

インスタンスが存在するかどうか調べるAS3

インスタンスが、表示リストに存在しているかどうかは、getChildByName()メソッドを使って判定することができます。(via FlashゲームPG講座 for AS3.0)(contains を使った判定方法もこの類かと)

それとは違い、インスタンスを作ったかどうかを判定したい時がありましたよ!というのが今回のテーマ。

Continue reading

FLVPlayback コンポーネントのバッファまわり

再生コントロールバーのない、高画質垂れ流し動画を使うケースは、なるたけロード時間を短くすることを心がけると思います。
FLVPlayback コンポーネントを使う場合、

  1. 再生の途中で途切れない程度に十分にダウンロード(バッファ)できたら再生開始
  2. それでも途中でバッファがなくなったら「ローディング中ですよ」アイコンとか表示
  3. そこからある程度バッファが貯まったら再生開始

という実装が良さそう。
まず1は FLVPlayback コンポーネントのデフォルトのバッファ時間は0.1らしい(via:godagoda.net)ので、5秒ぐらいにする。僕もプログレッシブダウンロードなんで「低速環境で画質アップ」効果を期待。

//バッファタイムをデフォルト0.1から5秒に変更
my_flvPlayback.bufferTime = 5;

2は bufferingStateEntered イベントを監視して、途中でバッファの為に動画が一時停止したらローディングアイコンをaddChildして表示する。bufferingStateEntered は途中で止まる時だけじゃなく、しょっぱなも呼び出されるイベントだということに注意。

再び再生が開始されたら playingStateEntered イベントでローディングアイコンを消す。
このときの再生って、また bufferTime で設定した秒数ぶん(5秒)バッファできたら再開するってことでいいのかな。
(※今から2,3を実装するところ)
FLVPlayback コンポーネント上に FLV ロードするような場合、ローカル環境上の「ダウンロードのシュミレート」ではシュミレートできないらしく、サーバーにアップして試すんだけど、今時ネットも高速回線なので、なかなかこういった低速回線用のデバッグが面倒。

追記:Firefox Throttle(Windowsのみ) というアドオンを使えば、回線速度を低速シミュレートできると kinkuma_design さまに教えていただきました。

追記2:上記2,3も実装。シークバーのないビデオコンテンツだとしても、ローディング状況を確認しつつ開発したい時は、コンポーネントインスペクタから、SeekBarをステージ上に配置して、インスタンス名 sb(任意)とした時

my_flvPlayback.seekBar = sb;

とするだけでローディング状況をバーで知ることができて簡単。あとはお好みで BufferingBar も使えます。こちらはバッファ状態になった時だけ床屋のくるくるみたいなのが表示されるというパーツ。
別方法として FLVPlayback コンポーネントにスキンをあてる方法もあるけど、なぜか当て込むと コンポーネントのwidthが2倍に算出されておかしかったのでやめた。スキンの場合はスキン用のswfも別途アップロードするのを忘れずに。

追記3:バッファ状況も十分なのに映像が止まることがある。裏側でガベージコレクションが発動してる疑惑。もしそうなら、動画再生中は強制的に GC を止めたい。できるのか?

追記4:ここまでの記事を全部見直し。再生が始まった後で、ダウンロード待ちの状態に戻して十分にダウンロードされてから自動的に再生を再開するには、pause() メソッドを使用し、次に playWhenEnoughDownloaded() メソッドを使用します。とある。3 の playingStateEntered も「バッファリング状態に移行してから再生状態に移行することが多いので、play() メソッドを呼び出した直後または対応するコントロールをクリックした直後には、イベントが発生しない場合があります。」とあるので、上記リスト通りの実装すると信頼性低くなるなこりゃ。

playingStateEntered がデリケートなんだったら stateChange で監視しようと思ったんだけど、同じ動画を再度見ようとすると STATE_CHANGE すら動かない場合がある。困った。
ここまでわかったのは、VideoEvent.READY だからといって、即 playWhenEnoughDownloaded() とは限らないので、playWhenEnoughDownloaded() で再生スタートしたタイミングで任意メソッドを動かしたいんだけど、playingStateEntered も stateChange も(ローカルでは動くのに、ネットに上げると)バッファされないケース(でもstateは変わってるのになぁ?)で呼び出されないケースがあるからこれから独自実装しようとしている。

FLV使う時さぁ

前のエントリ

  1. FLV動画をタイムラインに貼付け、タイムライン上で所定の場所にフレームスクリプトを書いて制御する
  2. 動画にキューポイントを設定し、制御する

で、1を選ぶデメリットって何だろうなと。
→追記:swf全部ロードしてからでないと再生が始まらないことか。
→さらに追記:これ嘘でした。子swfのルートのタイムラインに貼り付けたFLVはプログレッシブダウンロードできます。feb19様にいただいたコメントを参照!

親swfから子swfをロードする構成で、子swfのタイムラインに直接貼るか、子swfにFLVPlaybackコンポーネントを貼るかの違いであれば、どっちでもいいような、むしろ1の方が手っ取り早いように思えてきた。親swf自体にFLVPlaybackコンポーネントを用意するのが(unloadのやり方が下手くそな僕には)メモリリーク対応的にはベストかもだけど、今回それはやらないとして。やっぱりそうしたほうがいいな。最終的にはコメントに追記したような仕様にしました。メモリリークも解決しました。

FLV/F4Vのキューポイント

動画をそのまま再生させて終わりというのではなく、動画の最後までいったらちょっと戻してループさせるとか、映像の特定のタイミングで関数を呼び出したりするときは、

Continue reading

子swfから親swfの変数・メソッドを呼び出す

flvビデオをタイムラインに貼付けてちょっとフレームアクション追加してswf化、それを子swfとして、親swfからロードして使うというケースがあるとします。
その中で再生中のムービーのあるタイミングで親swfのメソッドを実行したいことがあります。
つまり表題のように子swfから親swfの変数・メソッドを呼び出すというケース。

Continue reading

addEventListenerで実行するメソッドにパラメーター渡す

タイトルの通り、そういうことをしたい時があります。

探したら apeirophobia さまのブログに書かれていました。
apeirophobia: addEventListenerで一緒に引数を渡したい

addEventListener(Event.SELECT, hoge(3));
private function hoge(num:int){
	return function(e:Event):void{
		trace("番号:"+num);
	}
}

みたいな感じにするそうな。
hogeメソッドにvoid指定するとなんでエラーになるのかとか、そういうプログラム的なことにあまり興味が湧かずにコピペして動いて安心してしまう僕はプログラマ属性ゼロだなぁと思ったりした。

ある条件下でのフレームのランダム移動における再帰処理

あまりこんなケースはないと思うけれど、
あるムービークリップシンボルのフレーム内を直前のフレームと重複がないように移動させたい。ただし次に移動すべきフレームは配列として[1,4,5,10]のような配列に記録されている時:

Continue reading

ランキング作る時の配列(Array)操作

ランキング用のデータとして「ID」「点数」を配列につっこんで保存する方法をとることがあります。

Continue reading

AS3 の addChildAt

AS3 の addChildAt(displayObject, 0);
は Flash IDE ステージ上に直接配置しているシンボルよりも下に来るのでありがたい。とにかくある DisplayObject を表示リストで最背面に配置したいんじゃいという時に助かる。

AS2 は ステージ直接配置のシンボルより下に attachMovie するのは面倒でした。
そんなこともあるので AS3 と 2 を交互に書いたりしてると軽く混乱する。

Adobe Docs – DispleyObjectContainer

JActionScripters 始動!

jas
JActionScripters.com

日本の Flash/ActionScript を世界にみんなで紹介するプロジェクト「JActionScripters.com」ブログが始まりました。
twitter 上での fladdict さんの呼びかけから3日で本オープン。海外への扉となりますね。

Home > action script Archive

AS3習得本
AS3の全容を学習できる本。この中でどれか1冊自分に合ったものを。
Adobe Flash CS4 詳細!ActionScript3.0入門ノート ActionScript3.0 プロフェッショナルガイド 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 詳説 ActionScript 3.0 Actionscript 3.0 Cookbook
AS3発展本
ASでアニメーションさせる面白さを知るための本。
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ActionScript 3.0 アニメーション AdvancED ActionScript 3.0 Animation (Advanced)
AS2
"Flash"ではなく"ActionScript2.0"学習のための良著。他にもいろいろ読んだけど、この4冊を読んだ後、自分が成長できた感じがしました。
FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] Essential Actionscript 2.0 Flash 8 Essentials Foundation Actionscript Animation: Making Things Move (Foundation)

あわせて読みたいブログパーツ

Return to page top