[Flash] カラー輝度、人間の目とコンピューターの違い
Tags: FLASH
左側が赤(赤255 = #FF0000)と黒(#000000)を使ってチェック柄に塗りつぶした四角形、右側が明るさ半分の赤(赤128 = #800000)で塗りつぶした四角形。チェック柄が見えなくなるぐらい十分離れた位置から見るとどちらの四角形も同じ”半分の明るさの赤色”に見えるはず。しかし実際はそうではないのが面白い。人間の目の色の輝度特性がコンピューターみたいに線形じゃないかららしくて、この目に見える違いを補正するのがガンマ補正だそう。
[Books] 気になるが気が遠くなるほど発売が先のiPhone app開発関連の本二冊
Tags: Books, FLASH, iPhone, Objective-C
発売はどちらも2009年7-8月予定。先すぎて死ねる。
- The Essential Guide to Iphone Application Development for Flash Users
Flash専門の感のあったFriendsofEDがとうとうiPhone app本出すらしい。ただし単なるiPhone本ではなくFlashユーザーのため、としているところが一風変わったところか。ここのFlashユーザーのためのPHP本がわかりやすかったので興味はある。Essentialと付いているのでチンカス本の可能性もなきにしもあらず。
- Cocoa Design Patterns
Cocoaデザインパターン本。CocoaやObjective-Cを題材にしたデザインパターンの本は存在しないので非常に興味がある。iPhone SDKプログラミング大全の著者、木下誠がダイナミックObjective-C | コラムでObjective-Cを題材にしたデザインパターンのネット解説を行っているがタイトル通りコラムの域を超えておらず、この手の内容は書物としてしっかり読みたい僕としては満足できない。
ちなみにデザインパターンの発祥はCocoaらしい。すげーなCocoa!イマイチしっくりこないけど!
もっとも、正確に言えば、Cocoaがデザインパターンを応用しているのではなく、デザインパターンがCocoaをもとにして作られた訳だが。GoF本では、パターンの実例として、Cocoaの前身である、NEXTSTEPが何度も取り上げられている。また、パターンの1つであるChain of Responsibilityという名前は、明らかにAppKitのResponder Chainから取られていると考えられる。
Flex Builder 3が首筋に噛み付いた
年の瀬なんで泣ける小話でも。
******
Flex Builder 3では、Flex Builder 3で作った各プロジェクトをFlex Builder 3から削除する際に二つオプションが選べる。
- Flex Builderからプロジェクトの参照だけを削除し、ファイル自体はマシン内に残す(デフォルト)
- Flex Bulderからプロジェクトの参照を削除し、さらにファイル自体もマシンから削除する(ゴミ箱に移動させるわけではなく、マシンから抹消する)
使用者が指定しない限り、前者の削除方法が選ばれる。しかし、例えばプロジェクト名を中途半端に間違えて作ってしまい、「あ、やべ、ミスった。消そ」とか、同じ名前のプロジェクトを作り直したい場合なんかは後者を選ぶ方が楽な場合がある。僕自身も面倒が少ないからという理由で後者の削除方法を使うことが少なからずあるのだけど、この後者がやばい。後者のファイル削除の範囲はプロジェクトと関係あるかないかに関わらずそのプロジェクトのディレクトリ配下全部だからである。以下実例。
Aさん(僕じゃないよ)の場合
Aさん(僕じゃないよ)は、普段Flex Builder 3のデフォルトのドキュメントディレクトリを使ってプロジェクトを作成していた。Macの場合だと
/Users/USERNAME/Documents/Flex Builder 3/
普通にFlex Builder 3を使っているとプロジェクトは全てこの階層配下に作成されるようになっている。(デフォルトの場所を使用するにチェックが入っており、他の場所へのプロジェクト作成がロックされた状態)。しかしそのときは、どうしてもローカルサイトでテストする必要があり、localhostにプロジェクト(PROJECT_JP)を作成した。
/Users/Username/Sites/PROJECT_JP/src/ /Users/Username/Sites/PROJECT_JP/bin-debug/ /Users/Username/Sites/PROJECT_JP/bin-release/
かくしてPROJECT_JPは完成したが、PROJECT_JPをローカライズしたもの(PROJECT_EN)を作成する必要があった。同様にしてローカルサイトにプロジェクトを作成するが、普段デフォルトのFlex Builder 3ディレクトリしか使っていなかったため、思わぬミスを犯す。一階層上をプロジェクトディレクトリにしてしまったのだ(つまりSites)。PROJECT_ENの内容は以下のようになった(PROJECT_EN内にPROJECT_JPが混在した状態)。
Aさん(僕じゃないよ)が予定していたディレクトリ構造
/Users/Username/Sites/PROJECT_EN/src/ /Users/Username/Sites/PROJECT_EN/bin-debug/ /Users/Username/Sites/PROJECT_EN/bin-release/ /Users/Username/Sites/PROJECT_JP/src/ /Users/Username/Sites/PROJECT_JP/bin-debug/ /Users/Username/Sites/PROJECT_JP/bin-release/
実際に作ったディレクトリ構造
/Users/Username/Sites/src/ /Users/Username/Sites/bin-debug/ /Users/Username/Sites/bin-release/ /Users/Username/Sites/PROJECT_JP/src/ /Users/Username/Sites/PROJECT_JP/bin-debug/ /Users/Username/Sites/PROJECT_JP/bin-release/
Sitesをプロジェクトのトップディレクトリに設定しているにもかかわらず、Flex Builder 3上ではこのプロジェクトディレクトリは”PROJECT_EN”と表示される点がポイント。Flex Builder 3のデフォルトのドキュメントディレクトリ配下のプロジェクトでは、Flex Builder 3上のプロジェクトフォルダ名とマシン上のフォルダ名は必ず一致するが、デフォルトではない場所にプロジェクトを作成した場合必ずしも両者は一致しない。
すぐに作成場所のミスに気づいたAさん(僕じゃないよ)は、PROJECT_ENを削除して作り直そうとした。その際横着をして前述の「プロジェクトの参照を削除し、なおかつファイルをマシンから抹消する」方法をとった。つまり「Flex Builder 3上でPROJECT_ENと表示されているプロジェクトの参照を削除し、さらにそのプロジェクトファイルをマシンから抹消する」方法をとったのである。その結果プロジェクトはたしかにマシンから削除され、以下のような構造になった。Sites配下には何も残っていない。っておい。
/Users/Username/Sites/
PROJECT_ENは正しく削除されたが、PROJECT_EN配下に存在していたPROJECTも跡形もなく削除されたわけだ。幸いPROJECT_JPのバックアップは前日にとってあったが、一日分の作業が跡形も無く抹消されたわけである。さらにローカルサイトという特別な場所に作成したのが災いした。ローカルサイトには今回とは無関係なフォルダが多数あったのである。例えば
/Users/Username/Sites/phpMyAdmin/
など。これらも同様に跡形も無く消去された。
教訓
今後は以下を死んでも遵守する、とAさん(僕じゃないよ)は言っている。
- Flex Builder 3のプロジェクトは可能な限りデフォルトのドキュメントディレクトリを使う
- 不要なプロジェクトは参照だけを削除する。実際のファイル削除は面倒でも手動で行う
- バックアップは頻繁に行う。そのためにコミット回数が増えても気にしない
ちなみにマシンルートに作ったFlexプロジェクトの完全削除とかどうなるのだろう。マシン破壊?誰か試してみて。トラウマになりそうでできんわ。
MacのFirefox 3でstage.stageWidthなどが取得できない
ずいぶん前(忘れた)からStageクラスのstageWidthとstageHeightが取得できなくて困っている。» テストムービーにアクセスすると、stage.stageWidth: 550, stage.stageHeight: 400と表示されるところが何故か
stage.stageWidth: 0 stage.stageHeight: 0
と表示される。Stageクラスのその他のプロパティは正しく取得できる。Safariも問題なく取得できる。誰か原因わかる人教えて!
環境
- Mac OSX 10.5.5 (Intel Core 2 Duo)
- Firefox 3.0.4
- Flash Player 10.0.0.591 (デバッグ機能付きのやつ)
- Flex SDK 3.1
追記2008/12/11
色々メモ
- Constructor内でstage.StageWidth等が取得できていない。Constructor外では取得できている。
- Fkex SDK 3.2ではConstructor内でも取得できた!!!
- Firefox 3だと取得したステージサイズが微妙に小さい。(550, 400)のはずが(500, 364)
-
良い記事発見。
Stage RESIZE and the stageWidth and stageHeight Bug | hubflanger.com
この記事によると(僕が確認したものはその旨を末尾に表示)、
- Mac/Firefoxの場合、Event.RESIZEが発動するまでははstage.stageWidth = 0, stage.stageHeight = 0である (確認済み)
- Win/IEの場合、Event.RESIZEが発動するまでははstage.stageWidth = 0, stage.stageHeight = 0である (未確認)
- Mac/SafariはEvent.RESIZEを発動しないし、最初からstage.stageWidth,stage.stageHeightに正しい値がセットされている (確認済み)
- Win/FirefoxもEvent.RESIZEを発動しないし、最初からstage.stageWidth,stage.stageHeightに正しい値がセットされている (未確認)
[ActionScript] 25-Line ActionScript Contest 投票開始
Tags: ActionScript, FLASH
ActionScript 25行以内で何ができるかに焦点を絞ったコンテストの最終選考が一般投票形式でスタート。優勝賞品がCS4一式というのが関係あるのかしらんけど作品がどれも熱い!
The 25-Line ActionScript Contest » November/December Finalists
自分は最終選考には残らんかった。というか最終選考に残ってるやつどれも25行以内のActionScriptで動いてるとは到底思えんので自分的には納得してる。パッと見た限りでは木がランダムに生えるやつがキレイでツボ。メタボールのやつがソースコードがスッカスカでびびる。アスキーアートのゲームもネタ的に面白い。いやーしかしこれは良い刺激になったなあ。次回も是非参加したい。
ちなみに僕が応募したやつは[Flash] Unknown Pleasures - boreal-kiss.comを改良したやつ。ファイナリストに日本人見かけなかったけど他に日本人で応募した人とかいたのかしら。なんとなくドイツ人が多かった感じがした。