<   2011年 10月 ( 6 )   > この月の画像一覧

原因究明中@Java SE 1.7

先日、Java7を試しにインストールしてみたのだが、
Swingで作成したアプリケーションに不具合が発生したので、すぐにアンインストールしてしまった。

再度、この不具合を試そうと再インストールしたのだが、
いつのまにか、Update 1 になってたんだな…(苦笑)

でも不具合は、解消されていなかった。

その現象だが、JTextField、JTextAreaに文字が入力できない、というもの。
その他の、チェックボックスやプルダウンメニューは通常通り使用できる。

…と認識していたのだが、少々違った。

元々↑で書いているSwingパーツには、FocusListenerが仕込んであって、
アクティブになったら色が変わるような細工がしてあるのだ。

チェックボックスやプルダウンメニューについて、動作はしているが、
この色が変化していない。

どうやら原因は「JFrameがアクティブになっていない」ということらしい。

アプリケーションを起動後、一度最小化でアイコン化し、
元のサイズに戻すと、通常通り、JTextFieldには文字が入力できるし、
カレントのパーツの色も変わるようになった。

起動時のWindowListenerのイベントを追うと、
起動時にはきちんと、WindowOpened() が呼ばれ、
最小⇒通常でアクティブ化すると、WindowActivate() が呼ばれているので、
この辺に問題はなさそうだが…。

ちなみに、ソースは同じで、JDK6に戻すと、ちゃんと動作する。
果たして、JDK7がβ版だから起こる不具合なのか、私のコードが中途半端なのか…。

現在回避策を模索中である。
[PR]
by miries | 2011-10-28 14:58 | ゲームを作る

mixiアプリ化

オープンソーシャルのテストとしては、mixiは良いな、うん。

というわけで、まだ出来てもいないJOGLアプレットを、mixiアプリとして連携テスト。

JavaScriptとの連携による、LiveConnectは以前にもやっていたので、
すんなりと連携はできた。

しかしやっぱりRESTful-APIを使いたいので、
これまた以前作っていたものを持ってきて、XREAサイトに設置。

ところがエラー。
どうやら、使用しているXREAのサーバーが古すぎて、PHP4であることが原因らしい。

私が持っているアカウントは、どれも10年来使ってるものだからなぁ。
そろそろ新しいサーバーに乗り換えた方がいいかもしれん。

ま、そんな中、s30という古いサーバーが、奇跡的にPHP5に変わっていたので、
そこで持っていたアカウントに、OAuth.php を設置。

自分のmixiステータスを取得することができた。
あとはこいつをJavaアプレットから取得できるようにするだけだが、
まぁ、HTTP読み込みが成功しているので問題ないだろう。

あとは…。
ローカルで開発できないと面倒なので、起動時オプションで、
スタンドアロンを判別する部分を作るだけか。

そこまでできたら、またゲーム本編を作る方に戻ろう。
[PR]
by miries | 2011-10-20 21:07 | ゲームを作る

XREAのクソが、何してくれとんじゃ!

バリュードメインを通して、ずっと独自ドメイン+レンタルサーバーで運用しているのだが、
今年5月くらいに、サポート用などに、メール転送を3つくらい設定しておいた。

で、久しぶりに設定画面にログインしたのだが、
そのメール設定がどこからも参照できなくなっているのだ。

メールの転送設定を選択しても、1つも設定されていないことになっている。
試しにそのアドレスにメールを送ってみると、ちゃんと転送されて届く。

つまり、どこかに転送設定がされているのだが、まったく参照できず、
メール設定欄は、デフォルトの5個が空欄のままだ。

試しに、その空欄のまま、設定変更ボタンを押したら…。
全ての転送設定が消えたぞゴルア!

さっきと同じアドレスにメールを送ると、エラーで戻ってくるようになった。
なんだよこれ。
バカにしてんのか?
[PR]
by miries | 2011-10-17 12:27 | デジタル系

2回目のメジャーアップデート for SH-03C

気づいたら、ドコモのスマフォ、LYNX SH-03Cが、
10/5に、2回目のメジャーアップデートをしていたらしい。

ということで、アップデートしようと思ったら、
「更新はありません」
はて?

どうやら、本体の更新ではなく、ソフトウェアの更新らしい。
相変わらず、更新時は、ドコモのモバイルネットワークに接続していないとダメで、
無線LAN前提の身には、パケットがつらいわー。

というわけで、無事にアップデートが完了し、
「Youtube 3D」のアイコンが出現。

モバイルネットワークをOFFにするのは忘れないようにっと。

しかし、あまり良い3D映像がないなあ。
[PR]
by miries | 2011-10-12 16:48 | デジタル系

JOGLテクスチャの問題を解決。

自宅ノートPCでの不明なエラーはグラフィックドライバーを更新したら直った。
おそらくOpenGLの対応バージョンの問題だろう。

これで、残る問題は、BufferedImageから直接テクスチャを生成する問題だけである。
ImageIOを使ってPNGのデータをbyte配列に出力して、そこからテクスチャを生成する、
というのがもっとも簡単だ。

ただ、512x512のテクスチャ生成に、1.2秒くらいかかる。
初回に15枚ほどフォントテクスチャを生成するので、約20秒も起動にかかってしまう。
遊ぶ人も嫌だろうが、この先デバッグしつつ開発するのに、毎回20秒待つのは嫌である。

ここを何とか改善する必要がある。

まず、考え付くのは、手動で画像をエンコードすること。
JOGLが対応しているフォーマットは、gif,png,jpeg,tga,sgiくらいだ。
この中で、tga,sgiというのは、知らないフォーマット。
gif,jpegは透過に問題があるし、pngか、tga,sgiという選択肢しかない。

しかし、実際使ってみると、tga,sgiは両方ともgifと同じで、透過が0/1の2値しか対応してない。

つまり、選択肢は png しかなくなったわけだが、自分でPNGエンコードを今更作るのは面倒だ。
しかし、ImageIOがある今、ネットで、PNGエンコーダを作っている人はいるのだろうか…?

いた(笑)

http://catcode.com/pngencoder/

ここからエンコーダクラスをダウンロードできる。
使い方も簡単で、

PngEncoderB pe = new PngEncoderB(BufferedImage img);
byte[] b = pe.pngEncode(bool useAlpha);

これだけで、バイトデータが取得できる。

ただし!
PngEncoderB.javaにはバグがあり、ダウンロードしただけでは、透過は使えない。
166行目に、以下を追加しよう。

this.encodeAlpha = encodeAlpha;

これで、かなり高速にテクスチャが生成できるようになった。
[PR]
by miries | 2011-10-11 18:10 | ゲームを作る

JOGLアプレットが動いたー!!

先日から、(開発中の)JOGLのアプレットがエラーを吐いて止まるようになった。

「jsr-231-1.x-webstart-current/jogl.jar に署名されていないエントリが見つかりました」

というものだが、私のだけではなく、どのサイトのアプレットも止まるようだ。
で、自分で署名すれば動くじゃん、というのが、先日の日記に書いた方法なのだが…。

なんのことはない。もっと良い方法があるんじゃないか。

今回のそもそもの原因は、本家JOGLを利用するときに必要とする、jogl.jar などの署名がなくなった(有効期限が切れた?)ことらしい。

しかし、本家のJOGLは、もうほとんど更新されておらず、今更再署名をするか怪しい。
と思ったら、JOGLプロジェクトが別のところにあったんだな。

http://jogamp.org/

JOGLだけでなく、他にも色々あるので見てみよう。

でも起動するとはいえ、かなりの手順・修正が必要となることは覚悟しよう。

まず、JOGLをビルドするために JDKのディレクトリにコピーした、
jogl.jar
glugen-rt.jar
は削除しよう。

変わりに、以下のところからファイルを持ってきて投入しよう。

http://jogamp.org/deployment/webstart/archive/

私はWindowsなので、

jogl-windows-i586.7z
gluegen-windows-i586.7z

この2つを取得して解凍、jogl.all.jar と gluegen-rt.jar をJDKにコピーした。

アプレットが動けばいいので、アプリケーションは試していないが、
上記に同梱されている、dllなどを使えば、アプリケーションも動くと思う。

さて、次にアプレットを動かすためのJNLPファイルだが、

http://jogamp.org/jogl/doc/deployment/JOGL-DEPLOYMENT.html

ここに書いてある情報を元に、自分のjnlpの設定を変えるだけだ。
元々、sunのwebstartを読むようにしていたところを、こっちに書き換えるだけですむはず。

そして最後が…覚悟が必要な部分。
当然のことながら、パッケージやメソッドが本家と違うわけで。

http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/

ここを参考に、がりがり書き換えよう。
こちらのJOGLは、本家より格段にグレードアップしており、
OpenGL ESや、OpenGL4なども使えるらしい。
ソース自体もGitで共有されており、誰でも更新できるようだ。

色々使えるようになっているため、どれを使うか、など、細かい指定が増えているので、
プログラムの修正は仕方ないが、その分、進化しているのでやる価値はある。

これらの修正を行った結果、無事にアプレットを起動することが出来たし、
起動時に署名が違うとか、インストールするか?などの、ダイアログもでなくなり、
スムーズに起動するようになったよ。

ただ、BufferedImageをそのままテクスチャとして利用する部分が
すぐに移植できなかったので、そこは修正中しないといけないんだけど。
[PR]
by miries | 2011-10-04 15:14 | ゲームを作る