2010年8月18日水曜日

FlyingLetters

FlyingLettersのページはこちら。

スマートフォントでやりたいことの1つ。この動きそのものがどうという話ではないが(もちろんこれ自体は面白い)、動きのある活字。Sign O' the Times @ priceのような派手な動きではなくとも踊るテキスト。テキストとしてみればフォントというのは変かもしれないが、フォントが組み合わさってこそのイメージがある。7人の小人。ただGIFアニメみたいな絵文字は自分的にはNG。あくまで文字の話。

それはさておき、Sign O' the TimesのぱちもんらしきVを見てたら、こういうアプリなら簡単に出来そうな気がしてしまった。早く気のせいじゃなくなるように。勢い、薄れた記憶を補おうと思わず本物のビデオクリップ集DVDがあったのでAmazonする。¥2622-。お金で買えない価値がある、アプリケーションをJavaFXで。

なんかいきなり警告だが、実行は問題ない様子。警告はバージョンが上がってきてることによるものではないだろうか。透明で面白い。文字だけそこにあって。ファイルはletters.fx 1個。

classの宣言の中でクラスと関係ないローカルな変数varを勝手に宣言するってのはいいんだっけ? なんか、あまりに当たり前な顔して書いてるように見えるけど、今までこんなのあったか? ないよね?(と勝手な思い込み) でも確かに
def rotation = Timeline {
var test:Integer;
...
}
も書けるね!
というか、Letters.fxではPanelの宣言で中にvar widthとheightをやってる。で透明な文字は面白いのだが動かせないのでドラッグを入れたかった。そこでMosaicからtopRectにくっついていたドラッグ関係の処理をパクってくる。と、あっけなく動いてしまった。ちゃんと理解しているわけじゃないというか、半信半疑で自分のモノになっていないのだが。そこはさっきの座標系がちゃんとしてない辺りに多くの要因がある、と思う。

足したコード:
var stageDragInitialX:Number;
var stageDragInitialY:Number;

def panel: Panel = Panel { <-この行は元々ある。この中に以下の2つの関数を貼る。
....

onMousePressed: function(e) {
stageDragInitialX = e.screenX - stage.x;
stageDragInitialY = e.screenY - stage.y;
}
onMouseDragged: function(e) {
stage.x = e.screenX - stageDragInitialX;
stage.y = e.screenY - stageDragInitialY;
}

....
}

元は単に Stage { だったものを変数に代入し、Panelで使えるようにした。
var stage = Stage {
...(省略)...
}

以上。

あと、まだ馴染めないもの。
def chars = for (i in [1..text.length()]) Text {
...(省略)...
}
とか、
anim.keyFrames = for (node in chars) {
とか。配列、もとい、シーケンスなのは分かるのだが、どうしても[]が恋しくなる。かといって、
def chars[] ... 
とは書けず、
def chars:Text[] ...
と書くのは憚られる。

0 件のコメント:

コメントを投稿