[技術ネタ] Java でグラフィックスする場合のお勧め本
また、技術ネタで失礼いたします![]()
最近購入したJavaのグラフィックス「Filthy Rich Clients」の日本語版が中々面白かったのでご紹介しておきます。
~・~・~
この本、結構前に英語版が出ていて、必要そうな項目だけ拾い読みしていたのですが、昨年11月に日本語版が登場し、立ち読みしてみたところ細かい記述に「へぇ」という部分が多く、日本語版も購入(英語で全文読む英語力と体力があれば必要なかったんですが
)。
Javaでグラフィックスをやるという酔狂な方は必携の一冊。
(ちなみに、Javaでグラフィックスをやる魅力は何と言ってもMacユーザさんに喜んでもらえることかと。Live2Dのユーザさんは推定3割ぐらいMacのようです。)
滅多に触れられていないSwingの描画やイベント処理、スレッドに関する重要なことや、パフォーマンスに関する注意事項が盛りだくさんです。もちろん、グラッフィクスについても基礎から応用(床の反射表現や、Swingのアニメーション化など)までたっぷり600ページも記載されています。
~・~・~
例えば、AWT/Swingの処理は単一のEDT(イベント処理スレッド)で処理しないといけない約束なのは割とどこにでも書いてあるのですが、下記のように main() でSwing記述も本当は許されないのだとか。
ちなみに、WikipediaのSwing の項目ですら下記のように書いています。
import javax.swing.JFrame;
import javax.swing.JLabel;
public class HelloWorld {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JLabel("Hello, world!"));
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
}
「Filthy Rich Clients」によると、下記のように書くのが正解なのだそうです。
public static void main( String[] arg){
SwingUtilities.invokeLater( new Runnable(){
public void run(){
JFrame frame = new JFrame() ;
...
}
}
}初心者だったら、何が何だか…これだとSwingの普及に益々歯止めが掛かりそうなんですが
こういった細かい原理と、高速にグラフィックス処理するためのTipsなどが盛りだくさんですので、ますます酔狂になりたい方は是非。
英語版と日本語版ソックリですのでくれぐれもご注意ください(笑)
当社の本棚にはこの二冊が仲良く並んでます。。
1月 23, 2009 | Permalink | コメント (2) | トラックバック (0)
この機能、普通のグラフィックツールには当たり前に備わっているのですが、Live2Dでは線幅を自由に変えられるため、すこし計算、処理が面倒で先延ばしになっておりました。
これまでは一度曲線を閉じると二度と開くことができないという、奇抜な仕様でしたが、点を削除(Deleteまたは BackSpace)することで、開くことができるようになりました。
違うパラメータのときのキャラクターを表示しておいて、違いを確かめながら処理する機能が、少し前のバージョンアップ以降使えなくなっていたバグを修正しました。