ただ見上げるより この手を伸ばしてみたくなるだけ (ポコアポコ/カヒーナムジカ)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 気取って「それがツクリテの生き様だろ?」とか自分で言う訳ですが。
 ほんとに一歩進むごとに壁が出てきますね(ため息)。
 どうしてこう、ひっかかってくるかなぁ。

 javascriptでmidiをなんとか鳴らせるようになり。
 あとはflashと連携させるだけさ…ってところでやっぱりトラブル。
 既にflashとjavascriptの連携方法について書いたサイトも見つけてあって、「なんだ、簡単じゃないか」と思っていたのですが。
 その簡単な方法、実はFlashPlayer8.0以上。
 私の使っているFlash2004MXは7.0なんですなぁ(苦笑)。
 
 もういい加減、バージョンアップすべきだなぁ。CS4は手が出ないけど、AS2.0対応のサイドパーティ製ソフトなら安く買えるし…などと思いながらも。
 「8.0対応ということは、7.xまでに使われていた方法が何かあるはずだ。flashは互換をきっちり残すから、昔の方法でも使えるはずだ」
 と信じて探し回り。

 見つけました見つけました。getURL( )を使って上手く鳴らせます。(詳しいやり方は省略。以下も同じ)
 …ってFireFox+QuickTimeならばそれでちゃんと動いたのですが、IE+WindowsMediaPlayerでは何故かフェードアウト開始時に演奏が止まってしまう。しかし演奏が止まった後に、フェードアウトのための音量操作がちゃんと動いている。
 意味わかんねーよー!
 とか思いながら夕食の準備して、ふと。
 「ユーザーボリュームを変更しても演奏止まらないかな?」
 (※今回のヴィジュアルリプレイでは、フェードアウトなどのスクリプトが操作するボリュームと、ユーザーが調整するためのボリュームが別にある)
 試してみたら、それでも音量停止。ちなみに演奏中にPlayボタンを押しても演奏停止(笑)。
 どうやら操作内容に関らず、何かすると演奏が止まるらしい。
 何故だろうとさらに考えて。
 「あ、getURLだからだ!」
 getURLというのは本来、htmlをリンク先に移動するメソッドなので。
 つまりプラグインの操作がページ遷移だと認識されて、それで音が止まったのですね。
 (調べてみたら同じことを書いていたサイトがあった)

 そりゃ上手く動かないはずだ、ということで、fscommandというグローバル関数を利用することに。
 しかしこの関数、どうして一つの関数しか呼び出せないのだろう(苦笑)。
 まあ変数で場合分けして、それぞれのケースで別の関数を呼び出せば済むので、それでも困らないのですが。ただちょっと無駄な関数噛ませているのが嫌なだけ。

 あれ、IEだとfscommandからJavaScript呼び出せないの?
 …真剣に勉強する気がないVBScriptを使うらしいですよ。
 ま、ここは前と同じようにコピペで誤魔化そう(笑)。
 とりあえずVBScriptからJavaScriptの関数を呼び出したら、後は全部JavaScriptかJScriptで処理。

 …お、何とか無事に動いた。
 今度こそ、本当に上手くいったんだよね?


 それにしても。
 getURLでつまづいたときは、最初は全く見当がつきませんでした。
 虱潰しに一つずつ原因を調べて行く訳ですが、解決しない。
 「どーやったら解決できるんだよー。原因が全くわかんねーよー」と半ばやさぐれつつ考えていたのですが、「ページ遷移だっ」と気がついてしまえばあっと言う間でした。
 スクリプトがこういう詰まり方をした時って、何か全然違う経路から、インスピレーションが降って湧くと解決できるんですよね。
 最初に来たインスピレーションが見当違いでも、一回インスピレーションが来ると、次が思いつきやすくなります。
 こういう事が重なると、「スクリプト書きも霊感かも」とか言い出しそうなんですが、私の認識って変なんですかね?
 …まあ、単純にgetURLがどうブラウザ側から認識されているのか、という点とか勉強不足なんじゃないかと言われると、その通りかも知れませんけど(笑)。


追記を閉じる▲
 
 もういい加減、バージョンアップすべきだなぁ。CS4は手が出ないけど、AS2.0対応のサイドパーティ製ソフトなら安く買えるし…などと思いながらも。
 「8.0対応ということは、7.xまでに使われていた方法が何かあるはずだ。flashは互換をきっちり残すから、昔の方法でも使えるはずだ」
 と信じて探し回り。

 見つけました見つけました。getURL( )を使って上手く鳴らせます。(詳しいやり方は省略。以下も同じ)
 …ってFireFox+QuickTimeならばそれでちゃんと動いたのですが、IE+WindowsMediaPlayerでは何故かフェードアウト開始時に演奏が止まってしまう。しかし演奏が止まった後に、フェードアウトのための音量操作がちゃんと動いている。
 意味わかんねーよー!
 とか思いながら夕食の準備して、ふと。
 「ユーザーボリュームを変更しても演奏止まらないかな?」
 (※今回のヴィジュアルリプレイでは、フェードアウトなどのスクリプトが操作するボリュームと、ユーザーが調整するためのボリュームが別にある)
 試してみたら、それでも音量停止。ちなみに演奏中にPlayボタンを押しても演奏停止(笑)。
 どうやら操作内容に関らず、何かすると演奏が止まるらしい。
 何故だろうとさらに考えて。
 「あ、getURLだからだ!」
 getURLというのは本来、htmlをリンク先に移動するメソッドなので。
 つまりプラグインの操作がページ遷移だと認識されて、それで音が止まったのですね。
 (調べてみたら同じことを書いていたサイトがあった)

 そりゃ上手く動かないはずだ、ということで、fscommandというグローバル関数を利用することに。
 しかしこの関数、どうして一つの関数しか呼び出せないのだろう(苦笑)。
 まあ変数で場合分けして、それぞれのケースで別の関数を呼び出せば済むので、それでも困らないのですが。ただちょっと無駄な関数噛ませているのが嫌なだけ。

 あれ、IEだとfscommandからJavaScript呼び出せないの?
 …真剣に勉強する気がないVBScriptを使うらしいですよ。
 ま、ここは前と同じようにコピペで誤魔化そう(笑)。
 とりあえずVBScriptからJavaScriptの関数を呼び出したら、後は全部JavaScriptかJScriptで処理。

 …お、何とか無事に動いた。
 今度こそ、本当に上手くいったんだよね?


 それにしても。
 getURLでつまづいたときは、最初は全く見当がつきませんでした。
 虱潰しに一つずつ原因を調べて行く訳ですが、解決しない。
 「どーやったら解決できるんだよー。原因が全くわかんねーよー」と半ばやさぐれつつ考えていたのですが、「ページ遷移だっ」と気がついてしまえばあっと言う間でした。
 スクリプトがこういう詰まり方をした時って、何か全然違う経路から、インスピレーションが降って湧くと解決できるんですよね。
 最初に来たインスピレーションが見当違いでも、一回インスピレーションが来ると、次が思いつきやすくなります。
 こういう事が重なると、「スクリプト書きも霊感かも」とか言い出しそうなんですが、私の認識って変なんですかね?
 …まあ、単純にgetURLがどうブラウザ側から認識されているのか、という点とか勉強不足なんじゃないかと言われると、その通りかも知れませんけど(笑)。

【2009/03/01 23:30】 | 天地未だ形れざるとき
トラックバック(0) |
コメント
この記事へのコメント
コメントを投稿
URL:

Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。