http://www.hyuki.com/yukiwiki/wiki.cgi?EfficientJavaScript

js構築で結構重要なことがたくさん。

いまさらながら、イベントハンドラメソッド定義でのターゲット指定を全然理解していなかった。
イベントハンドラメソッド内は、そこはもう別の世界なんだと理解。

3つのボタンがあり、それぞれロールオーバーしたときに、それぞれの中でgotoAndPlayする、というものを作るばあい、

間違った例 : tgtMC.gotoAndStop("over")


for (var i = 0; i<3; i++) {
var tgtMC = this["menu"+i];
tgtMC.onRollOver = function() {
initButtons();
tgtMC.gotoAndStop("over");
};
}

正しい例 : this.gotoAndStop("over")


for (var i = 0; i<3; i++) {
var tgtMC = this["menu"+i];
tgtMC.onRollOver = function() {
initButtons();
this.gotoAndStop("over");
};
}

ここを読んでみて、わかったようなわからないような。というかthisが本当にわけわからない。
逆に、これを記述したフレームのメソッド(initButtons())を、イベントハンドラメソッド内から使う場合、あたりまえにthisから始めると認識されない。

pokealimg.jpgなんとなく復活させてみた。ログインできない、検索できない、全然すすんでない。というかAS3でpopforge使って書き直すのが当面の目標。

なんとなく復活版はこちら

browser.jpgAIR開発しようといろいろ試行錯誤してるけど、Flash CS3を使うのが超早くて便利。
アプリケーション作成までボタンだけで操作可能。

ということで、 Flash CS3 でゼロからはじめよう AIRアプリケーション作成講座 Vol.1
に挑戦してみたところ、なんとブラウザもどきがあっという間に完成した。
今回もAIR Beta3アップデートによる修正が必要だった。


import flash.html.HTMLLoader;
import flash.net.URLRequest;

//読み込む外部HTMLデータの設定
var urlReq:URLRequest = new URLRequest("http://www.apple.com/jp/");

//HTMLデータの読み込みと表示設定
var html:HTMLLoader = new HTMLLoader();
html.width = stage.stageWidth;
html.height = stage.stageHeight;
html.load(urlReq);

//表示処理
this.addChild(html);

とりあえず最初のサンプルだけやってみた。
修正はHTMLControlをHTMLLoaderにするだけ。

本当にブラウザにしてしまうには、たくさんコードを書く必要があるが、ここには可能性を感じる。
例えばファイルをアップするときに、いちいちファイル選択ダイアログを開いて...とやらなくてもドラッグ&ドロップだけで済んでしまう。

Movable Typeを4.1にアップデートした。
今回の新機能で注目すべきなのは、何といってもカスタムフィールド。
待ちに待っていた標準機能。

フィールドを自分なりにカスタムするには、今まではrightfieldcustomfieldsなどを使うしかなかったが、これが標準装備されたことになる。

使い勝手もなかなかよさそうなので、後日ポキールを復活させる予定。

FlashからXMLやphpなどのデータを取得する場合、おなじみクロスドメインが必要。
書き方はこんな感じ


<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy >
<allow-access-from domain="*.yourflashpage.co.jp" secure="false"/>
</cross-domain-policy>

普通のクロスドメインと違うところは、
secure="false"
が必要だという点。

O'REILLY出版「Mind Hacks」を読んでいる。URLがたくさん出てくるので、
http://www.oreilly.co.jp/books/4873112710/links.html
から引用。さらに自分用にカスタムしていく予定。











あまり意識して考えたことがなかったけど、メタ認知について。
仕事(プログラミング・ウェブデザイン)をしていると必ず問題にぶちあたる。そしてパターンがる。

1. 小さな問題(~10分)
2. 前にも似たような経験をした問題(~1時間)
3. ハマる問題(1時間~)

1は比較的短時間で解決できてしまう、すぐに解決法が思い浮かぶ問題。
2は作業しているうちに、「ああこういうのは前にもぶちあたった」と思い出すので、
そのうち解けるだろうとなんとなくわかる問題。
3は、2かと思いきや見事に裏切られて原因の憶測すら困難な問題。

経験の積み重ねで、3だったものがどんどん1のほうへシフトしていき、1に堆積するイメージ。
不思議なのは、3を解決する瞬間というのは、だいたいが休憩を入れた直後だということ。

それはなんでか?と自問自答してみた。

だいたいの場合、1と2の延長で3をやっているので、完全に解決法がパターン化されてしまっている。すでに発想が出尽くしているのにもかかわらず、そこに執着し続けている。2のパターンに違いないと信じて、これでもか、これでもか、と頑張って本当に2ならいいのだが、それでもダメなときは「もうだめだー」と言って休憩する。実はこれが今までの方法には見切りをつけようという合図。休憩中は同じ回路に信号を流さないので、ちょっとRAMがクリアされる。そして再開したとき、「2の中に答えはないから3へ旅をはじめよう。」と要点をある程度客観視できる。そこにそれまでと大きな違いがある。重要なのは、それまでのフローをいかに忘れているかどうか。

絵を描いていたときのことを思い出す。描いた絵はひっくりかえしたり、顔を傾けてみてみたり、遠くからながめてみたり。
作曲をしていたときのことを思い出す。一度つくりあげたものを壊すと、全く新しい聴こえ方になるのが楽しくてしょうがなかったり。

何をするときも同じだと思った。3の前に妥協するという技術が一般的なのかもしれないが、それを解決したときの快感はこの上ないからやめられない。
そして、小さな単位で毎日それの繰り返しなのだが、生き方においてもっと休憩が必要だなと思う今日このごろ。
人間の、「忘れる」という能力はすばらしいと思う。

*追記
そういえば2や3で、人に相談すると自己解決するパターンもある。人に説明しているうちに勝手に要点がまとまって、まだ試していない選択肢が思い浮かぶからだ。

任意のアルバムアートワーク画像の探し方を探していたら、みつかったのでメモ。

http://forums.macosxhints.com/showthread.php?p=325382
こちらから引用:


These are Persistent IDs, which you can find in iTunes Music Library.xml and folder structure is like this:

Library Persistent ID -> decimal value of last hex digit in tracks persistent ID -> dec value of before last hex digit -> dec value of 3rd hex digit from the end -> Library persistent ID - Track persistent ID .itc


まず、XMLの先頭にあるLibrary Persistent IDという部分がある:


<key>Library Persistent ID</key><string>B77A88149B472EF5</string>

そしてそれぞれのトラックは下記のように、ひとまとまりのエレメントになっている。


<key>142</key>
<dict>
<key>Track ID</key><integer>142</integer>
<key>Name</key><string>ハニー・ムーン</string>
<key>Artist</key><string>Tei Towa + Natural Calamity</string>
<key>Composer</key><string>細野晴臣</string>
<key>Album</key><string>細野晴臣トリビュート・アルバム Tribute to Haruomi Hosono [Disc 1]</string>
<key>Genre</key><string>Pop</string>
<key>Kind</key><string>AAC オーディオファイル</string>
<key>Size</key><integer>4811001</integer>
<key>Total Time</key><integer>294293</integer>
<key>Disc Number</key><integer>1</integer>
<key>Disc Count</key><integer>2</integer>
<key>Track Number</key><integer>9</integer>
<key>Track Count</key><integer>11</integer>
<key>Year</key><integer>2007</integer>
<key>Date Modified</key><date>2007-12-11T16:21:09Z</date>
<key>Date Added</key><date>2007-11-18T07:02:11Z</date>
<key>Bit Rate</key><integer>128</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Rating</key><integer>20</integer>
<key>Album Rating</key><integer>40</integer>
<key>Album Rating Computed</key><true/>
<key>Compilation</key><true/>
<key>Artwork Count</key><integer>1</integer>
<key>Persistent ID</key><string>34B5886AA718721C</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/L:/stage/nanmaci/%E3%83%8D%E3%82%BF/1-09%20%E3%83%8F%E3%83%8B%E3%83%BC%E3%83%BB%E3%83%A0%E3%83%BC%E3%83%B3.m4a</string>
<key>File Folder Count</key><integer>-1</integer>
<key>Library Folder Count</key><integer>-1</integer>
</dict>

その中の、<key>Persistent ID</key><string>34B5886AA718721C</string>という部分を使う。

これらを組み合わせて下記のように解析できる。
Library Persistent IDが
B77A88149B472EF5
Persistent IDが
34B5886AA718721C
の場合、
Persistent IDの
下1の桁の値「C」を10進数にして13
10の桁の値「1」を10進数にして01
100の桁の値「2」を10進数にして02
なので、

アートワークがiTunesで自動的にダウンロードされたものなら、
iTunes > Album Artwork > Download > B77A88149B472EF5 > 13 > 01 > 02 > B77A88149B472EF5-34B5886AA718721C.itc

アートワークが自分で追加したものなら、
iTunes > Album Artwork > Local > B77A88149B472EF5 > 13 > 01 > 02 > B77A88149B472EF5-34B5886AA718721C.itc

という感じ。とりあえず今回はiTunes7.5.0.20、Windows XP環境でのチェックのみだったのでMacでのフォルダ構造については不明。この複雑な仕組みは、別ソフトなどで画像を簡単に利用されないようにアップルが工夫したものな気がする。なのでiTunesのバージョンアップで変わる可能性がおおいにあり。

*ただし、アルバム単位で画像を決めている場合、トラックごとに画像が保存されているわけではなく、共有画像として動いているらしいが、その仕組みはよくわからない。

*以前はjpgで保存されていた気がするが、今はitcという拡張子になっている。itcファイルに関してはここここを参考。


<div id="A">
<p><a>something link</a&></p>
</div>

となっているときに、<a>タグが効かないことがあった。
その場合、
#A {position:static;}
とすると動くようになった。もともとrelativeだった。理由はよくわからないけど、iepngfixが絡んでいる可能性あり。