lastdigsound.spiraldelight.comhttp://lastdigsound.spiraldelight.comflash習作、前の続き。仕事の合間とかに作ってました。Last.fmのサービス使った音楽検索。自分のLast.fmアカウント入力→アーティストサムネイルクリック→レコ屋などへリンク。index.html?User=以下に自分のLast.fmのユーザー名入力すると入力が省けます。BackupWin.jsfl今度はFlash版を作成。[AS3,PHP,XML]BlogParts制作のメモブログパーツでやってる事の備忘録を色々。■レコ屋リサーチお気に入りから色々開いてパラメータなどを確認。http://www.spiraldelight.com/blogparts/recordShop/recordShop.htmlこれはエクセルのデータを作ってHTMLに書き出したもの。Recordシートとmp3_データの上から15個を入れてます。以下勉強メモになります。■Flash→PHP→XMLサーバーサイド絡みを少しやってみました。Flashの方でsendToURLでPHPに文字列を送りそれをxmlで保存。「search」か「open」の検索ボタン押した後そのxmlをFlashでまた読み込んでカウントを動的に表示。下記はアナログバージョンだけのデータの保存の仕方。○01_FlashAS2だとsendAndLoadでAS3だとsendToURL。スクリプトはタイムラインとクラスで混合してます。下記はフレームアクション。URLVariables();//phpに渡す変数入れる。phpでdiggedArtistとarShopNameの文字列を受け取る。リクエストをサーバーに送信しますが、応答は無視します。メソッド使ってイベント経由で進捗具合とかを調べるのが確実っぽいです。encoding="UTF-8"?><dig></dig>XML宣言とルートエレメントだけ書いてとりあえずサーバーにあげます。パーミッションは666。下記のPHPで文法を組んでくれます。}}//XMLで吐き出す形、ここでXMLの文法を組みます。使うユーザーがたくさんいる場合ファイルが壊れる事があるから注意と言われました。ユーザーが多数使う場合、phpのライブラリがあるからそれ使用した方が安全かつ便利らしいです。何千何万人とかいったらDB使用なのかな。このブログパーツ需要無さそうなんでとりあえずこれで使用してます。○04_XMLFlashの方で表示してないですが後でやろうとしてる事があるのでアーティスト名と選択したお店も取得してます。XMLではこんな風に追加されていってます。</searchlist></dig>○05_Flash(フレーム)カウントをとる処理。XMLの読み込みのやり方はたくさんあると思いますが、AS3でとりあえず初めてやってみました。searchlistタグのlength取得してます。最後にアナログとデジタルの検索数を足して表示させてます。Count=xml.searchlist.length();}これで配列traceすれば一応アーティスト・お店を取得できる事が確認できました。upload」部分だったり、Flash+αで使われてるの見ました。boreal-kissさんのところでFlexibleFactoryの簡単にmp3をロードできるパッケージを発見。ここのMP3FileReferenceLoaderLib.zipを一式ダウンロードしてMP3FileReferenceTest.asを少しいじり、SoundChannelクラスのstopを追加して使用してるだけです。下記ソースではmcSoundsにクラスを割り当ててます。スタート、ストップはフラグで制御。よくないと思いますが、mcのstartとstopの表示切り替えはvisibleでやっちゃってます。音源をロードしてから変えてます。音楽繋がりでなんとなく追加した機能です。}}■正規表現、置換メモスペースを+に変換。Twin」とアーティスト名入力して、search_key=Aphex+Twinと「+」でパラメータを送っていたので「+」に変換。置換しなくても勝手に「%20」とかにしてくれて検索できるのですが、ほとんどのレコ屋は+で文字列繋いでたので一応対応しておきました。「/」を「」に変換(なくす)。"");}他にもXMLのタグに影響する「<」「>」は禁止にしています。こちらのブログを参考にさせてもらいつつ作成。■navigateToURLでいっぱいウィンドウ開く普通にforループで大丈夫かと思ったら、たまにXMLの書き込み時に失敗してました。PHPの処理が間に合ってないのかも。一度XMLのパーサエラーになりました。エンターフレームでカウントさせて時間差でリンク先を開いて対応してます。2(内容)前回のに加え、エフェクトモードや世界地図を追加。「send」ボタンを押した後、そのユーザーが住んでる地域に世界地図がズームイン。「effect」ボタン押すと色が変化。ユーザー画像クリックでLast.fmのそのユーザーページに飛ぶ。スクリプトモーションもエフェクトが目立つようにちょっと調整。(制作メモ)Last.fmの画像はLoader使って動的に読み込めるけど、そのままだとBitmapDataのdraw()を使用できない。■ASで別ドメインの画像を読み込むときの注意点http://d.hatena.ne.jp/nitoyon/20071112/crossdomain_imghttp://blog.boreal-kiss.com/2008/05/09185722.htmlLast.fmのcrossdomain。世界のcrossdomainたくさん。対策としては一回PHPを経由して画像を読み込む。自分のサーバーにあるかのように見せかけるやり方。URLRequest(phpPath+"lm.php?image="+artistdata.artists[i]['thumbnail']);こんな感じでimageパラメータを渡して読み込む事ができた。PHPの方は会社の先輩に教えてもらいました。世界地図がズームする値と座標は自分で調べて直接入力。Kingdom、France、、238ヶ国もある。量あるんでまだ30ヶ国くらいしか設定してない。ヨーロッパ単位にしたりブラジルとチリを同じ座標とサイズにまとめて設定。世界地図はスムージングかけたらめちゃくちゃぼけたのでかけてない、でも大きい画像にしたらマシンにかかる負荷が大きい。エフェクトについてはブラーかけてColorTransformで色をいじってブレンドモードしてるだけです。自分の環境だと問題無いけどBitmapDataが横1400px縦1100pxもあって処理重いかも。アーティストとユーザーの画像はトリミングされた状態ではこない。今ユーザーの画像は縦と横のサイズを無理やり設定。今後はマスクかけて対応したい。他にもまだまだやりたい事があってこのLast.fmのサービス使ってレコ屋とかmp3販売してるサイトと絡めていきたいと妄想中。ソースも整理しないと、ローディングとかもやってない。音についてはダブミニマルみたいなループを作成。それとFlashPlayer10、すごいなぁ。機能取り上げてるブログ見させてもらいました。API(内容)ユーザー名(Username)を入力後「send」ボタンを押す。デフォルトはspiraldelightを入れてます。そのユーザーが聞いてるTOP50のアーティストのサムネイルをロード。これ使ってますが、artistdata.artistsの配列の中身は50個までしかひっぱってこれないようです。登録さていないユーザー名を入力するとエラーになります。サムネイルが登録されてないアーティストは画像無し。最高で3ユーザーのTOP50のアーティストのサムネイルがロードできます。入力後そのユーザーのご近所さん(入力したユーザーの聞いてる音楽の趣味が近い人)のユーザー名(Neighbours)を取得。これを使用していて、テキストフィールドにご近所さん5人を表示します。これコピペしてUsernameに入力するとまたその人のご近所さんの5人のユーザー名を返します。「change」ボタンでサムネイルの並びが変わる。「play」・「stop」で音楽の再生・停止。音にサムネイルが反応します。音は適当に作りました。「kill」ボタンでデータをアンロード。(メモ)最近音楽SNSのLast.fmを始めた。AS3ライブラリがあって、仕事も落ち着いてきたので勉強がてら触ってみました。XMLデータをひっぱってきて表示。ソースはhttp://code.google.com/p/lastfm-as3/にあります。「kill」ボタンの処理がはまった。ガベージコレクション、メモリリークの問題とかちゃんと覚えないとまずいなぁ。コンテスト2008でFlex賞取ったJukingAirっていうめちゃくちゃすごいのありますが、これとは視点変えて今度また触ってみる予定。[AS3]SoundSpectrum(内容)「play」で音再生。マウスを左右に持っていくとパンできる。RCAのオーディオケーブルと一緒でRed(右)、White(左)となってます。ステージの真ん中にマウス持ってくると音が小さくなる。ステージクリックすると丸と線の切り替えができる。(メモ)試してる人はちょこちょこ見るけど覚えたかったのでやってみました。Last.fmのサンプルにも絡めたかったし。Cookbookのチャプター15のサンプル。ここのExampleを触ってみる。これこのままだと動かない。import忘れとかいきなりエラーでる。出だし不調で初心者に厳しい本だ。他のサンプルもしかり、この本なんなんだろ。SoundMixerクラスのcomputeSpectrum()メソッド、ヘルプ見つつ勉強。