人類みんなごくつぶし

2004-03-11

[] ←しばらく、このテーマは、Developing Games in Java(ISBN:1592730051) を見て、ためしてみたこと、ふーんと思ったことのメモ

[] フルスクリーン表示

JFrame frame = new FirstFrame();
DisplayMode mode = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);

GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = environment.getDefaultScreenDevice();
	
frame.setUndecorated(true);
frame.setResizable(false);
device.setFullScreenWindow(frame);

device.setDisplayMode(mode);

[] アンチエイリアス

public void paint(Graphics g){
    if(g instanceof Graphics2D){
        Graphics2D d2 = (Graphics2D)g;
        d2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    }
    g.drawString("hello", 50, 100);
}

[] イメージ読み込み

Image image = Toolkit.getDefaultToolkit().getImage(name);

Toolkit#getImage()は、すぐに読み込まずに、バックグラウンドでロードを行っている。ロードするまでブロックするときはMediaTrackerを使う。

Image image = Toolkit.getDefaultToolkit().getImage(name);
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 1);
try {
     tracker.waitForAll();
} catch (InterruptedException e) {
    e.printStackTrace();
}

なお同じことがImageIconを使ってもできる(ImageIconの内部で上記のコードのようなことを行っている)。

Image image = new ImageIcon("bg.jpg").getImage();

[] ダブルバッファリング

ちらつき防止のためのダブルバッファリングは自分でそういうコードをかいてもよいが、BufferStrategy を使っても実現できる。

public void loopAnim(){
    
    createBufferStrategy(2);
    
    long startTime = System.currentTimeMillis();
    long nowTime = startTime;
    
    while(nowTime - startTime < 10 * 1000){

        long elapsedTime = System.currentTimeMillis() - nowTime;
        nowTime += elapsedTime;

        anim.update(elapsedTime);
        
        BufferStrategy strategy = getBufferStrategy();
        Graphics g = strategy.getDrawGraphics();
        g.drawImage(bgImage, 0, 0, null);
        g.drawImage(anim.getImage(), 100, 100, null);
        g.dispose();
        strategy.show();
        
        try {
            Thread.sleep(20);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

[] AnimationクラスとSpriteクラス

書籍中では、Animationクラスでアニメーションを行い、Spriteクラスでスプライトを実現している。SpriteクラスではAnimationクラスを利用している(アニメーションするスプライト)。この本のサンプルはすっきりしてて(無駄がなくて)いいなぁ。いまのとこ。

スキーマコンバータ「Trang」

http://thaiopensource.com/relaxng/trang.html

(from http://www.atmarkit.co.jp/fxml/rensai2/xmltool05/01.html#2)

これ便利。XMLスキーマがいるんだけど、DTDしかない。じゃあDTDXMLスキーマに変換とか簡単にできる。

[]EclipseプラグインXMLコードアシストするもの

とあるXMLファイルエディタ(コードアシスト付)を作ろうと思い調べてみた。


XMen

http://sourceforge.net/projects/xmen/


XMLBuddy

http://xmlbuddy.com/

オープンソースじゃないので、ソースは見れない


Bulletnote

http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletnote/

XMenを参考にされたとのこと。

コードアシストのロジックは難しいが、例えば、こんなやり方もあるんだなと思った(Eclipseプラグイン開発自分FAQより)

  • カーソル位置から逆方向に文字をたぐり、'<'に遭遇するまでの文字列を切り出す
  • タグ名一覧と切り出した文字列をString.startsWithメソッドを用いて比較
  • 一致するものを候補として列挙。その際にそのタグを閉じる文字列までを置換文字列として設定する

Hibernate Synchronizer

http://hibernatesynch.sourceforge.net/

かなりハードコーディングであるが、他のモジュールを使わずにここまでやってるのは素敵。ちょっとDTDを反映してない部分はあるけど。。。


Antエディタ

org.eclipse.ui.externaltools

これもあるコードアシスト付のXMLエディタではある。参考にするには巨大か。

Model2って何よ?

http://d.hatena.ne.jp/muimy/20040308#p3 のつづき

大分勘違いしてたが多分こういうこと。間違ってたらつっこんでいただけると幸い。


MVC Model1 GUIなどで利用されるいわゆるMVC

MVC Model2 Webアプリで利用されるMVC。いわゆるMVCと区別するため2と呼ばれる。


JSP Model1 JSPだけでやっちゃう

JSP Model2 ちゃんとサーブレットをフロントコントローラにする

JSP Model1.5 若干中途半端なもの。


2.5と言ってたのは勘違いでした。そしてJSP ModelとMVC Modelも取り違えてたかも。a-san様、nemo様ご助言ありがとうございます。


参考↓

オブジェクト倶楽部 POSAアーキテクチャ一覧

http://objectclub.esm.co.jp/Handbook/pdf/chapter-3.pdf


Kevin on Model 1, Model 1.5 and Model 2

http://www.brainopolis.com/jsp/mvc/KDuffey_MVC.html


@IT 現場に活かすJakarta Project 第12回

http://www.atmarkit.co.jp/fjava/rensai2/jakarta12/jakarta12_01.html

[]JSFの利点

メモです。だから何ということはないですが。

SunのJSF FAQ

http://java.sun.com/j2ee/javaserverfaces/reference/faqs/index.html

によると以下3点

  • Ease-of-Use
  • Standardization
  • Device Independence

[]JSFの利用対象者

FAQおよびSpecによると以下4名

  • Page Authors
  • Application Developers
  • Component Writers
  • Tools Vendors

[]JSF関連JSR

Specより

  • JSP1.2
  • Servlet2.3
  • J2SE1.3
  • JavaBeans 1.0.1
  • JSTL1.0
  • Portlet(JSR168) 将来対象になる

a-sana-san 2004/03/12 00:21 JavaGame気になります・・・。昔、Javaでシューティングを作ったので、よければ遊んでください。http://www.hcn.zaq.ne.jp/no-ji/game/game.htm

muimymuimy 2004/03/12 10:30 おお!SYLBIS素晴らしい。Javaでグリグリゲーム作れるようにこっそりがんばろ。

Connection: close