速習Webデザイン ActionScript3.0を読む その10

速習Webデザイン ActionScript 3.0

速習Webデザイン ActionScript 3.0

part8 ビデオ/サウンド

    • キタ━━━(゚∀゚)━━━ !!
  • 01-01
    • サウンド再生はSoundクラス、停止と音量の調整はSoundChannelクラス、音量に関する調整はSoundTranceformクラスを使う。
    • もうこのあたり慣れました。クラスの生成とプロパティの割り付けなど!
    • Sound.play()メソッドを実行すると、Soundオブジェクトに関連づけられたサウンドサウンドチャンネルに割り当てられ再生を開始する、と、なんとなく分かったような分からんようないつもの感じ。
    • つまりSound.play()メソッドはサウンドの再生に割り当てたサウンドチャンネルをSoundChannelオブジェクトに返す、と。
    • RPG風に解釈するとモンスター(サウンド)を召還する人と、操作する人が別になってるイメージ?
  • 01-02
    • コントロールしたいサウンドはSoundオブジェクトと関連づけるためにアセットクラスとして設定する必要がある。←そんな気がした!
    • 単純にボタン押して音を鳴らすようにすると、音が重なってしまうのでそれを阻止する処理(p205)。なるー。
    • 音量処理では直接プロパティを書き換えず変数を挟んで処理している。(p206)
  • 01-03 外部MP3ファイルのコントロール
    • ここ一番実用的かな。課題にも出そうな感じ。
    • Soundオブジェクト作成時にダウンロード。書式は以下。

var 変数:Sound = new Sound(URLRequestオブジェクト);


引数指定しないやり方

var 変数:Sound = new Sound();
変数.load(URLRequestオブジェクト);

    • MP3はプログレッシブダウンロード再生*1が行われるのでDL完了を待たずに再生可能。
  • Let's TRY!!
    • 予想外に一時停止ボタンの実装とな!

var sndCh:SoundChannel;
var snd:Sound = new Music;
var posi:Number = 0;

play_btn.addEventListener(MouseEvent.CLICK, xPlayClick);
stop_btn.addEventListener(MouseEvent.CLICK, xStopClick);
pause_btn.addEventListener(MouseEvent.CLICK, xPauseClick);
  function xPlayClick(evt:Event):void{
    if(sndCh==null){
      sndCh = snd.play(posi,1000);
    }
  }

  function xStopClick(evt:Event):void{
    if(sndCh != null){
      sndCh.stop();
      posi = 0;
      sndCh = null;
    }
  }

  function xPauseClick(evt:Event):void{
    if(sndCh != null){
      posi = sndCh.position;
      sndCh.stop();
      sndCh = null;
    }
  }

try_08-01_01.fla

    • 始めに再生と停止ボタンだけ実装して動作確認してからヒントを参考にポーズボタンも実装。
    • 最初ポーズの方に「sndCh = null;」やり忘れてて、ポーズボタンを押したら再生が行われない状態になってた。
    • そこに気付いたらちゃんと動きました。
    • そういえばCS4になってサウンド周りが変更されたのか、アセットクラスに設定する画面がテキストと違ってた。

part8 ビデオ/サウンド のつづき

  • 02-01 FlashとFLVPlaybackコンポーネント
    • Flashとビデオと言えば埋め込みよりも外部FLV。
    • テキストp212,213にならって実際にFLVPlaybackコンポーネントを使って外部ビデオの読み込みをやってみる。ものすごく簡単にできてびっくり。
    • skinパラメータで設定したコントローラーは別SWFとして書き出される、と書いてあったけど実際に「SkinOverPlayStopSeekMuteVol.swf」が生成されていた。
    • 実際WEBページで使う場合はこのコントローラーSWFもサーバにあえておく必要がある。

*1:ストリーミング再生と似てるけどちょい違うらしい