メモ書き程度のちょっとしたことなのでここに纏める(`ω´)
SWTを用いた JavaからWin32APIへのアクセス サンプル
内容:
・Windowsに 現在表示されているウインドウの中から タイトルメッセージをもとにウインドウハンドルを取得し、
そのウインドウのサイズを変更し、またウインドウに文字を送出するサンプル。
・Windowsのデバイスコンテキストを用いて描画を行うサンプルです。画面上に黒い線が ずずずっと描画されます。
・Windowsのレジストリにアクセスして、DirectXのバージョンを取得するというものです。
Java3D API v 1.3.1
三次元描画ライブラリOpenGLやDirect Xを利用してJavaで三次元画像を生成するためのパッケージです。
[ インストール ]
SunのサイトからJava3D for Windows SDK for JDK(includes Runtime)のインストーラをダウンロードします。
DirectX版とOpenGL版がありますがどちらでもかまいません。ダウンロードしたインストーラをダブルクリックして起動し、インストーラの指示に従ってインストールを実行します。
ディスプレイドライバとの相性などで一方がうまく動作しない場合はもう一方を試してみて下さい。
[ ダウンロード ]
Java3D v 1.3.1 : http://java.sun.com/products/java-media/3D/download.html
Java Media Framework API 2.1.1e
Javaで音声、ビデオ等のメディアを使用可能にするパッケージです。
[ インストール ]
ダウンロードしたインストーラをダブルクリックして起動し、インストーラの指示に従ってインストールを実行します。
[ ダウンロード ]
Java Media Framework API : http://java.sun.com/products/java-media/jmf/index.html
ゲッター・セッター(get関数、set関数)の存在理由
・ゲッター
単純にリターンするのではなく、コピーをリターンする。
これによってデータ保護の視点からカプセル化が守られる。
・セッター
範囲外の値を入力しようとしたときは例外を発行する。
これによってデータ保護の視点からカプセル化が守られる。
[http://www.fureai.or.jp/~rsc/prog_lang/java/java.htm]からの引用
………ま、わざわざ書くことに意味があったりするんですよ(´_`)
Webプログラミングでは、Beansとも呼ばれる。
まぁ、SetterとGetterもってればBeans…。
フェード処理について
(プログラムサンプル省略)は、黒いバックの真中に白い長方形が表示されますが、この白長方形を黒にフェードアウトさせたいのです。
RGBカラーをつかいたいのですが、長方形の現在の色を取得する関数がわかりません。
docも一応見てみたんですけど。
どうかよろしくお願いします。
はじめまして Yasuと申します。
自分も初心者なのですが・・。
docを調べてみましてが、そういう関数はないようですね。
方法としては、色を管理して、変更するのがよいと思います。
- 例えば
public class A
{
public int a,b,c;
public void paint(Graphics g)
{
Color color = new Color(a,b,c);
g.setColor...のようにして、a,b,cのメンバ変数を替えて、paintメソッドを呼べば、変更できます。
フェードアウトするためにタイマでもつけると大丈夫だと思いますよ。
特にjavaってわけじゃないけど……
200 :名前は開発中のものです。:2006/01/26(木) 16:52:43 ID:ITPJnSj3
まず根本的なことからなおしましょう
キーのイベントで処理は入れないように
メインループでのみ処理するようにしてください
イベントではフラグの上げ下げのみで
333 :名前は開発中のものです。:2006/05/27(土) 14:12:56 ID:8ehQx4Ia
キーイベントではキーの入力フラグを上げ下げするだけ
そしてゲームのループ内でそのフラグを読み取る
これでおけ
335 :名前は開発中のものです。:2006/05/27(土) 14:52:54 ID:8ehQx4Ia
ループ内は60fpsとか固定でチェックするから問題ないよ
というか、普通のゲームはイベントで処理するところはほとんどないから
それを隠すためのフレームワークというかそんなもの
とにかくメインループで取得して状態に応じてswitchで戦闘時なのか移動時なのか
キャンプコマンド中なのか分離するようにかけばおけ
「javaでゲーム作成 2本目」スレ
(☆Д☆)キュピーン!! 透過処理で思い付いたぞ!メモ(SWT)
テキストを表示するラベルの背景に、全部透過してるの画像をセットすれば背景が見えるっ! ――かも?
まぁ問題は透明度の調節が出来ないってことですね(*´□`) はいダメですね。
ImageDataとかGCの使い方
クリップ-ボードについて。
クリップボード
Javaでもシステムのクリップボードを参照することが出来る。
それとは別にJavaが提供するクリップボードもある。
クラスなので複数のクリップボードを持つこともできマッスル。
でもシステムのクリップボードのほうが遥かに有用な気がする。
トップレベルウィンドウを透明に?
Q3.5 透明なウィンドウや矩形以外の形をしたウィンドウを作りたいのですが?
プラットホームに依存しない良質な方法は, ありません.
Swingの中には、透明にできるコンポーネントもありますが、問題はトップレベルのウィンドウです。
ウィンドウはつねに矩形ですし、ウィンドウを透明にできるJavaの
実装系はほとんどありません。
状況やプラットホームによっては、以下の方法が使えることもあります:
1)醜い裏技…Java 1.3以上、全プラットホーム
java.awt.Robot.createScreenCapture(rectangle) を使って背景画面のスナップ写真を撮り,
それをウィンドウのバックグラウンドイメージに使うと, 透明の錯覚を作り出せます.
しかし画面が変われば, その錯覚もばればれです.
http://www-128.ibm.com/developerworks/java/library/j-iframe/
はJFrameのサブクラスで、Robotを利用して透明性を加えています。
2)Windows
このサイトにあるSkinルック&フィールの:
のnativeskin.jarは、Windowsの上で矩形でないウィンドウを作る機能を提供しています。
それには、ネイティブのWin32のライブラリも同梱されています。
もちろん、使えるのはWindowsの上だけです。
Windows 以外のGUIシステム向けに、こんなライブラリを書くことは可能でしょう(たとえばX11のshape拡張が使えるでしょう)。
4)アプレット
アプレットの場合は, こんなやり方があります:
http://java.sun.com/docs/books/faq/src/app/MatchBackgroundExample.html
Q6.1.2“透明なウィジェットをどうやって作りますか? ”と、Q6.1.3“矩形でないウィジェットをどうやって作りますか? ”も見てください。
出典 Java GUIプログラミングの、とてもBasicなFAQ
http://homepage1.nifty.com/algafield/JavaGUIFaq19j.html
分岐が多いときに、IFを数多く書いたり、ネストが深くなるのは保守性の面から考えてよくない。
そこで条件を二次元配列に定義し、ループを使いチェックを行わせると便利である。
String [][] id = {
{"ID","true","true","0"}
}
などと定義しておく。優先順位を考えて書くとなおよい。
↑の例でいうと、0の手前までをチェックし、全て一致したら0を返す。
などとすることができる。
JARに画像とかつっこむ方法
http://osima.jp/blog/resources_in_jar.html
JARにまとめて突っ込む
http://www.fk.urban.ne.jp/home/kishida/kouza/old/javajar.html
音を出す
http://www.hellohiro.com/sound.htm
javaゲームライブラリ
動作検証等はしていない。
とりあえず目に付いたものをメモ&リンク。
ukゲームライブラリ開発室
ukゲームライブラリは、Java2SE/MIDP/DoJa(iアプリ)のゲームを開発するためのフレームワーククラスライブラリです。
携帯用のMIDPアプリやiアプリとパソコン用のJavaアプリをほぼ同じソースからビルドできるようにすることで、携帯電話のゲーム移植を効率化するために開発しました。
以下、Javaでゲームを作るときに調べるべきライブラリから抜粋。
抜粋した以外にもあるので確認すべし。
LWJGL Lightweight Java Game Library
GTGE ゲームエンジン
GAGE 2Dゲームエンジン
transient( トランジェント )って何?
※http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5381&forum=12
javaのソースコードを眺めていたら、型宣言の箇所に transient という予約語がついて
いるものが多くありました。調べたところ、「シリアライズの対象外を示す」とありました。
- 具体的にどういうことなんでしょうか?
transientそのものの意味としては、保存すべきでないもの、または、別に保存しておかなくても復元後に調達できるものはしなくてもよい、という意味だと思ってました。
たとえば、シリアライズしたいオブジェクトの中に、あるSingletonオブジェクトの参照などが含まれていて、復元したあとには、最新の状態を持つSingletonを使用する場合などは、またgetInstanceすればいいや、ということでtransientにしておくとか。
Javaにはtransientというキーワードを用いて、オブジェクト内でシリアライズしたくないフィールドをシリアライズするときに除外することができる。
これにより無駄な情報によってシリアライズされたファイルの肥大化を押さえ軽量化し、シリアライズ、デシリアライズを高速化することができる。 - シリアライズ(直列化)って何でしょうか?
直列化(ちょくれつか)は、オブジェクト指向プログラミングにおいて使われる用語で、ある環境において存在しているオブジェクトを、バイト列やXMLフォーマットに変換することをいう。
より具体的には、そのオブジェクトの状態を表す変数(フィールド)と、場合によってはオブジェクトの種類(クラス)を表すなんらかの識別子を、ファイル化できるようなバイト列やXMLフォーマットの形に書き出すことをいう。
これにより、オブジェクトの表すデータを、ファイルとしてセーブしたり、ネットワークで送信したりすることができるようになる。
このようにして得られたバイト列やXMLフォーマットは、直列化復元ないしデシリアライズによって、元のオブジェクトに復元される。
SJC-P5.0(CX-310-055)とSJC-P6.0(CX-310-065)の試験範囲の違い
* java.util.NavigableSetおよびjava.util.NavigableMapインタフェース
* java.io.Consoleクラス
が新試験範囲として追加されただけではないかと思います。
Seasar2
AOP、DIの軽量コンテナ。国産フレームワークで日本語ドキュメントが多いので利用しやすいかも。
逆に、英語のDOCは少ないため外国では・・・。
さらに、Seasar3の開発は行われないことになったため今後が心配されるフレームワークでもある。