良い一日!
はじめに
1月3日であり、魂は時々何らかのプログラムを書くことを要求します。 考え直すことなく、私はかつて
J2MEのSplash Screenトピックの著者に
修正を提案したことを思い出しました。 今日は、「通常のダイヤラー」の世界に飛び込んで、それらのアプリケーションを作成することをお勧めします。これは通常のスクリーンセーバーになります。
それでは始めましょう
開始するには、ソフトウェア開発に必要なものをインストールする必要があります。 アプリケーションをコンパイルして実行するためにPCにインストールする必要があるものをペイントする必要はないと思います。 このような指示は、インターネットで5秒で見つけることができます。
たとえば 。 個人的には、J2ME用のアプリケーションのすべてのソースコードを「通常のダイヤラー」でコンパイルします。
はい、はい、ロシアの土地には、事前検証機能を備えたコンパイラをJ2MEプラットフォームに移植した職人がいます。すべてをインストールしたら、J2MEアプリケーションデバイスから始めて、アプリケーションのマニフェストディレクティブで終わる理論自体を思い出してください。 ただし、何がわからない場合でも落胆しないでください。このトピックでは、J2MEのアプリケーション開発に関する少しの理論について説明します。
Anatomy J2MEアプリケーション
一般に、J2MEのアプリケーションはMIDletと呼ばれます。 なぜそうなのか、あなたはさらに学ぶでしょう。
javax.microedition.midlet.MIDlet
J2MEのアプリケーションは、
javax.microedition.midletパッケージの
MIDletクラスから継承されたクラスにすぎません。 このクラスは、MIDlet'aの「ハート」です。 このクラスでは、アプリケーションの機能に必要な3つのメソッドを宣言する必要があります。
public void startApp() {
実際には、この方法は実装に必要であると示されていますが、実用的な利点はありません。
startApp()および
pauseApp()メソッドはAMS自体によって使用されますが、
destroyApp()は使用されません。 確立された伝統によると、通常、この機能のブロックは次のとおりです。
public void destroyApp(boolean unconditional) { notifyDestroyed();
ご覧のとおり、アプリケーションのライフサイクルの終了は
destroyApp()ではなく
notifyDestroyed()関数
によって制御されます。 さて、大丈夫、後者の目的は謎のままです。 気が散ることはありませんが、先に進みます。
javax.microedition.lcdui.Display
アプリケーションの実装の次のステップは、
javax.microedition.lcduiパッケージの
Displayオブジェクトへの参照を取得することです。 ご想像のとおり、これは、画面、フォーム(
javax.microedition.lcdui.Form )またはキャンバス(
javax.microedition.lcdui.Canvas )を操作し、それらを切り替える機会を得るために行われます。 次のようにリンクを取得できます。
Display dsp = Display.getDisplay(this);
完了、次のステップに進みます。
javax.microedition.lcdui.game.GameCanvas
GameCanvasクラスの出現により、「すぐに使用できる」ダブルバッファリングが不可能であるため、通常の
Canvasに取って代わり始めました。 したがって、キャンバスとして、
特にGameCanvasを使用することをお勧めします。 すぐに言ってやった。
GameCanvasと
Canvasの違いは2つだけです。1つ目は既に指定されています(これはダブルバッファリングです)。2つ目は後者で
paintメソッドを宣言する必要があります。 わかりやすくするために、
Canvasを使用して次のキャンバス実装コードを提供します。
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; public class OurCanvas extends Canvas {
paint()メソッドでは、グラフィックプリミティブのすべてのレンダリングを行います。 このアプローチは、多くの理由で特に効果的ではありません。その理由の1つは、ロジックを共有することです。
GameCanvasでは、ロジックを他のメソッド、クラスなどに取り込むことができ
ます 。 このように:
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; public class OurCanvas extends GameCanvas implements Runnable {
それから私は間違いを犯しました:私は
グラフィックスオブジェクトの宣言をクラス自体の宣言内のどこかで変数の宣言の場所に持ち出しませんでした、すなわち コードは次のようになります。
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; public class OurCanvas extends GameCanvas implements Runnable { Graphics g = getGraphics(); int w = getWidth(); int h = getHeight(); public void run() { g.setColor(0xffffff); g.fillRect(0,0,w,h); isSomethingDone(); } public void isSomethingDone() { g.setColor(0xababab); g.drawLine(25,25,125,125); } }
そのようなもの。 それだけです-計画の実施に必要な知識ベースがあります。 行こう!
開発に渡します
アプリケーションはいくつかのクラスで構成されます。
会いましょう!
midlet.java: import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; import java.util.Timer; public class midlet extends MIDlet { Timer timer; midletTimerTask task; midletCanvas canvas; public midlet () { canvas = new midletCanvas(this);
さらに、キャンバス自体は
midletCanvas.javaです。 import javax.microedition.lcdui.*; class midletCanvas extends Canvas { midlet midlet; random Random; static int [] PlasmaTab = {
次の行はタイマー
です-midletTimerTask.java: import java.util.TimerTask; import javax.microedition.midlet.MIDlet; class midletTimerTask extends TimerTask { midletCanvas canvas; public midletTimerTask (midletCanvas canvas) { this.canvas = canvas; } public final void run() { canvas.repaint(); } }
そして最後に、乱数を選択する実装
-random.java import java.util.Date; import java.util.Random; class random {
スキャンダル、陰謀、調査
私のソースはコンパイルしたくない。 むしろ、それらはコンパイルされますが、私がしたいことは行われません。 深夜なので、あなたの謙虚な僕は彼の源を奪う必要がありませんでした。 コードのフォーマットをおaびします-明日修正します。
技術のさらなる問題
コンパイルと検証。 このステップはあなたのために残します。
MANIFEST.MF
このファイルを変更することをお勧めしますが、このファイルは
META-INFディレクトリにあります。 結局のところ、スクリーンセーバーを作成する場合、それに応じて動作するはずです。 残念ながら、この動作はSony Ericssonの電話でのみ使用できます。 次の行を追加してみましょう。
SEMC-StandbyApplication:Y
私たちは何をしましたか
スクリーンセーバーを壁紙としてダウンロードできるようにしました。 これを行うには、MIDletを電話にドロップする必要があります。 次に、「アプリケーション」に進んでください。 次のアクションは、右のソフトキーを押して「背景のように。 描画」。 選択してください-食べてください。 以下が表示されます
それが起こったことです



必要なものはすべて
Pastebinでソースコードを取得できます。 ここにあります:
midlet.javamidletCanvas.javamidletTimerTask.javarandom.javaおわりに
以上です。 ほんの数ステップで、MIDletを作成しました。 現在、J2MEは次第にどこにも行かず、おそらくそのようなチューブは残っていませんが、Oracleがそれをサポートしている間-誰もがまだ存在します。 あなたが興味を持っていたことを願っています。
じゃあね!