trick7
インスタンスが存在するかどうか調べるAS3
- 2010-03-19 (金)
- action script
インスタンスが、表示リストに存在しているかどうかは、getChildByName()メソッドを使って判定することができます。(via FlashゲームPG講座 for AS3.0)(contains を使った判定方法もこの類かと)
それとは違い、インスタンスを作ったかどうかを判定したい時がありましたよ!というのが今回のテーマ。
- Comments: 3
- Trackbacks (Close): 0
ActionScript 3.0 イメージエフェクト
- 2010-03-02 (火)
- books
ActionScript 3.0 イメージエフェクト – スクリプトで作る画像効果
という日本語訳本が出てますね。ActionScript での画像処理にフォーカスして良著だった原典:
Foundation ActionScript 3.0 Image Effects (Foundations)
を既にもっている(まだあんま読んでない)だけに、買おうかどうしようか迷います。
今やビットマップ処理系のスキルが必須なのは、wonderfl本
ブラウザで無料ではじめるActionScript 3.0 ―It’s a wonderfl world―
で多くの記事が draw メソッドを使ったビットマップの転写テクニックを使っていたことでも明らかなので、時間があればじっくり勉強したいところ。
- Comments: 0
- Trackbacks (Close): 0
FLVPlayback コンポーネントのバッファまわり
- 2010-03-01 (月)
- action script
再生コントロールバーのない、高画質垂れ流し動画を使うケースは、なるたけロード時間を短くすることを心がけると思います。
FLVPlayback コンポーネントを使う場合、
- 再生の途中で途切れない程度に十分にダウンロード(バッファ)できたら再生開始
- それでも途中でバッファがなくなったら「ローディング中ですよ」アイコンとか表示
- そこからある程度バッファが貯まったら再生開始
という実装が良さそう。
まず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は変わってるのになぁ?)で呼び出されないケースがあるからこれから独自実装しようとしている。
- Comments: 0
- Trackbacks (Close): 0
UIと面白さが結びつくケース
- 2010-03-01 (月)
- diary
前のエントリーで、初見で分かりにくいけど、触って気付けると快感っていう UI はサイトじゃなくってツール向きだって書いたけれども、そういや真骨頂はゲームだった。
「Squareball」という iPhone アプリがあります。(無料体験版もあります。)
このゲームを導入部分を一切見ずに、いきなりゲームしてみてください。「あーなるほど!」ってなります。
前のエントリで挙げたのと同様に、画面がシンプルだからとりあえず触ってみたくなる。気づいた時の嬉しさ。人に教えたくなる説明しやすさ。それらもちゃんとあります。
※ただこのゲーム、僕自身が下手すぎてイラッとするw。
ものすごく当たり前のことを書いてるけども、でもそういう独自 UI であることの向き不向きを考えることで、独自 UI であることが多い(or ならざるを得ない)、Flash コンテンツの向き不向きを考える時の参考にもなるかと思う。
あとは音。この Squareball といい、以前紹介した「CANABALT」や「Continuity」といい、BGM がすごく効いてる。そんなに長尺じゃなくてもいいので、DTM もかじってみたいところ。
- Comments: 0
- Trackbacks (Close): 0
iPhoneアプリ版PaPaPaRoulette作った時にUIについて考えたこと
- 2010-02-26 (金)
- works
無料iPhoneアプリとして「PaPaPaRoulette(パパパルーレット)」というルーレットアプリを公開しました。
http://mtl.recruit.co.jp/sandbox/terai/roulette/
アプリ自体はシンプルですし、上記リンクをご覧いただけばと思いますが、今回このiPhoneアプリのUIを作っていたときに考えた仮説、自分の趣向に気づきました。
- Comments: 0
- Trackbacks (Close): 0
FITC のライブビデオ見た直後の感想
いやー、すごいですね FITC。Jared Tarbell さん初めて見ました。
鑑賞してて、口が開いてしまう系のFlashとその制作者のオンパレード。Flasherというかアーティストとか数学者が混ざったような明らかに天才な人達。Flash vs HTML5 論争といった俗世の騒動とは別次元のモノヅクリをしてらっしゃる。
以前どっかのエントリで、クリエイターとしてPS3派かWii派かみたいなこと書いた記憶があるけど、作品を見て圧倒されて口がポカーンと開いてまう点で、FITC の登壇者の作品はPS3派なのかしら。Wii派はこちらの宮本茂さんのような、モニタの外側でコミュニケーションが生まれることに念頭をおいたものづくり。どちらも素晴らしくかっこいいですが、みなさんはどちら派なのでしょう。
そんな FITC を見にカナダ・トロントへツアーで行こうよ!っていうプロジェクトが、CINRA.net さんと CBCNET さんコラボで実現。募集締め切りもうすぐなので http://www.tour-project.com/ をチェックしなはれ。
コードでアートする登壇者の作品に口開けっ放しのヨダレダラダラ、さらに作品を盛り上げる重低音サウンドが子宮に響きます。(ないけど)
- Comments: 0
- Trackbacks (Close): 0
FLV使う時さぁ
- 2010-02-15 (月)
- action script
- FLV動画をタイムラインに貼付け、タイムライン上で所定の場所にフレームスクリプトを書いて制御する
- 動画にキューポイントを設定し、制御する
で、1を選ぶデメリットって何だろうなと。
→追記:swf全部ロードしてからでないと再生が始まらないことか。
→さらに追記:これ嘘でした。子swfのルートのタイムラインに貼り付けたFLVはプログレッシブダウンロードできます。feb19様にいただいたコメントを参照!
親swfから子swfをロードする構成で、子swfのタイムラインに直接貼るか、子swfにFLVPlaybackコンポーネントを貼るかの違いであれば、どっちでもいいような、むしろ1の方が手っ取り早いように思えてきた。親swf自体にFLVPlaybackコンポーネントを用意するのが(unloadのやり方が下手くそな僕には)メモリリーク対応的にはベストかもだけど、今回それはやらないとして。やっぱりそうしたほうがいいな。最終的にはコメントに追記したような仕様にしました。メモリリークも解決しました。
- Comments: 4
- Trackbacks (Close): 0
FLV/F4Vのキューポイント
- 2010-02-15 (月)
- action script
動画をそのまま再生させて終わりというのではなく、動画の最後までいったらちょっと戻してループさせるとか、映像の特定のタイミングで関数を呼び出したりするときは、
- Comments: 0
- Trackbacks (Close): 0
子swfから親swfの変数・メソッドを呼び出す
- 2010-02-10 (水)
- action script
flvビデオをタイムラインに貼付けてちょっとフレームアクション追加してswf化、それを子swfとして、親swfからロードして使うというケースがあるとします。
その中で再生中のムービーのあるタイミングで親swfのメソッドを実行したいことがあります。
つまり表題のように子swfから親swfの変数・メソッドを呼び出すというケース。
- Comments: 2
- Trackbacks (Close): 0

