3D

JavaFXに3D描画機能が追加されるらしい。デモを見る限りではCore Animationそのものだと思うんだけど、俄然興味が湧いて来た。何かメジャーなファイルフォーマットに対応してくれればやりやすいんだけどな。
CPUが早くなっているとは言え未だVMだけで3D描画を賄えはしないだろう。Papervision3Dと違ってモバイルプラットフォームを視野に入れるなら尚更。WebKitをブラウザエンジンに採用する話もあるし、JavaFXでは積極的にVM外にブリッジを架けるつもりだろうか?

CSS transition/transform

Safariも3.1になった事だしクライアントサイドデータベースを触ってみようかと取り敢えず見つけたサンプル。
肝心のデータベースよりも閉じるときのDashboardライクなアクションの方に気を取られてしまった。WebKitCSSでAnimationだのTransformだのを実装しているのは知っていたけど、実際に見るとやっぱり印象が違う。

        var duration = event.shiftKey ? 2 : .25;
        this.note.style.webkitTransition = '-webkit-transform ' + duration + 's ease-in, opacity ' + duration + 's ease-in';
        this.note.offsetTop; // Force style recalc
        this.note.style.webkitTransformOrigin = "0 0";
        this.note.style.webkitTransform = 'skew(30deg, 0deg) scale(0)';
        this.note.style.opacity = '0';

独自拡張やりたい放題だなApple。まぁAcidテストで頑張っているからいいけど。

SVGを埋め込めた

mxmlcコンパイルしたSWFをDashcodeプロジェクトに取り込んで、wmodeをtransparentにすると表示がおかしくなる。
本来はアルファチャンネルも含めてクリアしなければならないピクセルに、何も考えずに上書きルーチンを呼び出してブレンドしてしまうようだ。Flashから書き出したSWFならそんな事は無いのだけど。
AIRアプリケーションとして実行すれば問題ないので、おそらくWebKitの問題だろう。
念の為にWebViewを貼付けただけのCocoa Applicationで背景に透明色を指定してHTMLとSWFを読み込ませてみたら、ちゃんと実行された*1SVGの件もあるし、どうもDashboard/DashcodeにリンクされているWebKitは若干古いんじゃなかろうか。
ならば、新しいWebKitをロードすればいい。
と言ってもDashboardをハックする腕は無いので、プラグインという形をとる事にした。
適当なMIMEタイプに対応するインターネットプラグインのViewにWebViewを貼付けてビルド。
Dashcodeでプラグインを取り込んで、「メインに指定されているHTML」に上述のMIMEタイプで「SWFを埋め込んだHTML」を埋め込む。
これで問題なく透過背景なFlashが動くWidgetが作れた。以前頓挫したSVGの埋め込みもこれで解決。

以下コード。

*1:陰がおかしかったりはしたけど

続きを読む

オーガナイザ

一言で言うと、登録したフォルダに応じたコマンドラインを実行するアクションを設定できる環境。エディタも付いてる。
便利なことにXcodeプロジェクトファイルやAnt buiild.xmlファイルがあるフォルダは自動でビルドや実行のアクションが設定される。
.svnなフォルダにsvn updateやsvn commitをアクションとして設定するとより便利に*1
似たような事はXcodeプロジェクトのターゲット作成でも可能なのだけど、オーガナイザは隠蔽された専用プロジェクトにフォルダに対応したターゲットを設定していくようだ。
~/Library/Application Support/Developer/Shared/Xcode/Organizer.xcorganizerがそれっぽい。
Apple内部でExternal buildターゲットを多用してコマンドラインベースの開発環境を利用する一派がいたので専用のUI付けちゃえとなったに違いない。
Antに限らずコマンドラインベースで作業するなら無理にXcodeプロジェクトを作るよりオーガナイザを利用した方が早そう。
以下Flex SDK用のAnt build.xmlのコード。

*1:こっちも自動で設定してくれれば言うこと無いんだけど

続きを読む

Flex on Mac OS X

上記のサイトに紹介されているActionScriptの定義ファイルをXcodeにインストール。

Xcode 3.0の場合は~/Library/Application Support/Developer/Shared/Xcode/Specificationsに置けばいいらしい。
問題はプロジェクトの方で、それっぽいXcodeプロジェクトテンプレートなのだけど致命的なことにライブラリが指定できない。
External buildなターゲットなのでコマンドを書けばいいとは言え、やっぱりフォルダに突っ込んで自動的にリンク*1させたい。
折角mxmlcもcompcもAntタスクなんだから全部Antで書いてしまえとプロジェクトテンプレートを作った。
Java Toolプロジェクトテンプレートをあちこちいじって、Xcodebuild.xmlをビルドとクリーンにしか使ってないことに気がつく。
要するにrunターゲットはほかの環境に配慮した蛇足。
実行やデバッグはターゲットではなく実行ファイルの方で指定する。JavaデバッガとGDCが前提の模様。
ここまでやって、「オーガナイザ」なるものに気がついた。

*1:Flashだから埋め込み?