Diary?

2008-01-05
Sat

(23:55)

やはり Flash でも使って Web ページでそのまま音楽が聴けるようになってた方がいいよなあってことで、ちょっと Flash で簡易プレイヤーを作り始めたのだけど、これが非常に難儀した。というかムカついた。何がムカつくって、

  • どうも Flash 作成は専用のオーサリングツールがほぼ前提
    • コードをガリガリかいてコマンドラインでコンパイルなんてのは全然主流じゃないらしい
    • 俺が知りたいのは Flex じゃねえ
      • 本題からは離れるけど、既に同名の超有名ツールがあるんだからバッティングするような名前付けるんじゃねえ
  • Adobe のサポートページが酷い
    • 何でリファレンスに404 Not Found なページがあるんじゃ
      • リンク先の間違ってる奴もあるし
        • そもそも使いにくいし
    • 別のリファレンスマニュアルはまともなので、こっちを読むように。サポートページの方は地雷だ
  • JavaScript との連携が面倒臭い
    • これは仕方のない部分も多いのだけど、でもこの互換性の怪しさとわかりにくさは酷い
  • 使えるサウンドフォーマットは MP3 のみ。これは前から知ってたけど、ふざけてるとしか言いようがないな
  • そもそも俺は ECMA Script の系統が嫌い

というわけで非常に面倒な思いをしたのだけど、後はプレイヤーに使う画像さえ用意すればどうにかなるかなってところには来ている。そして問題はその画像であり、俺の一番の苦手分野だ。どうすっかな。

とりあえず、 Audacious のスキンから適当な奴をぶっこ抜いてきた。昨日アップした耳の腐りそうな音楽が流れるので、うっかり精神に悪影響を受けても俺は知らんぞ。

追記: 役に立つかわからんけど、以下は一応現時点でできてるソース。 SWFTools の SWFC 用のコードね。

.flash bbox=100x24 version=6 fps=50 filename="sample.swf" compress
  .box bg width=100 height=24 color=grey fill=#002436
  
  .png play "play.png"
  .png pause "pause.png"
  .png stop "stop.png"
  
  .button play_button
    .show play as=idle
    .show play as=hover
    .show play as=press
  .end
  
  .button pause_button
    .show pause as=idle
    .show pause as=hover
    .show pause as=press
  .end
  
  .button stop_button
    .show stop as=idle
    .show stop as=hover
    .show stop as=press
  .end
  
  .action:
    audio = new Sound();
    playing = false;
    resume = 0;
    loaded = false;
    filename = "";
    this.getUrl('javascript: setFileName()');
    
    play_button.onPress = function() {
      if (!loaded) {
        audio.loadSound(filename, true);
      }
      if (!playing) {
        audio.start(resume / 1000);
        playing = true;
      } 
    };
    
    pause_button.onPress = function() {
      if (playing) {
        resume = audio.position;
        audio.stop();
        playing = false;
        play_button.setLabel("play");
      }
    };
    
    stop_button.onPress = function() {
      audio.stop();
      loaded = false;
      playing = false;
      resume = 0;
    };
    
    audio.onSoundComplete = function() {
      resume = 0;
      loaded = false;
      audio = new Sound();
    };
    
    audio.onLoad = function() {
      loaded = true;
    };
  .end
  .put bg x=0 y=0
  .put play_button x=10 y=4 below=bg
  .put pause_button x=30 y=4 below=bg
  .put stop_button x=50 y=4 below=bg
.end

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。