2017-03-28 3 views
1

の小さなライブラリを書く:私は次の操作を行うと、それは行うことができますどのように本当のアイデアを持っていない、多分誰かが助けることができるしたい処理

私はオブジェクト指向プログラミングを行い、処理中の小さなライブラリを、書きたいです学生が利用できる概念。私は単純そうに

point(30, 30); 
point(20, 20); 

とを入力して、スケッチのどこかにポイントを作成することができます処理で

:私はあなたに簡単な例をあげます。私が達成したいのは、これらの関数を自分のクラスにラップすることです。

class Point { 
    float xPos; 
    float yPos; 

    Point(float x, float y) { 
    xPos = x; 
    yPos = y; 
    point(x, y); 
    } 
} 

Point p = new Point(10,10); 

これは愚かに聞こえるかもしれないが、この方法は、私はより良いオブジェクト指向のアプローチを使用することができます。

私の質問は今、次のは、学生は単に私がそれを行うにはどうすればよい

import myLibrary: 
Point P = new Point(10, 10); 

を使用できるように、私は、そのようないくつかのダースのクラスを構築し、ライブラリにそれらを使用したいとしましょうか?私は、Eclipseでの簡単なライブラリの作成を示す公式サイトのチュートリアルがあることを知っていますが、Javaで処理関数を使用することはできません。私はポイントクラスの私のコンストラクタはそれのために動作しないだろうと思う。

は私が

rikojir

+0

ポイント(x、y)とは何ですか?あなたのコンストラクタで? xとyにアクセスするには、プログラム内にSetterメソッドとGetterメソッドもあるはずです。 – Omore

答えて

1

私はEclipseでの簡単なライブラリの作成を示し公式サイトのチュートリアルがあることを知っています、しかし、Javaでは処理関数を使用できません。

もちろん可能です。 this tutorialとそれを行う方法については、Georgeの答えを参照してください。基本的にはProcessingをJavaライブラリとして使用することができます。ProcessingはJavaのProcessingのクラスと関数にアクセスします。ライブラリをJavaで書いて.jarファイルとしてエクスポートし、Georgeの答えを使用するか、.jarファイルをProcessingエディタに直接ドラッグして、Processingスケッチに追加します。

私のポイントクラスのコンストラクタは、そのために動作しないと思います。

加工スケッチのインスタンスをPointコンストラクタに渡して、Processingの機能にアクセスする必要があります。あなたは、単に別のを使用して検討するかもしれない

Point p = new Point(10, 10, this); 
p.drawMe(); 

class Point { 
    float xPos; 
    float yPos; 
    PApplet sketch; 

    Point(float x, float y, PApplet sketch) { 
    xPos = x; 
    yPos = y; 
    this.sketch = sketch; 
    } 

    void drawMe(){ 
    sketch.point(xPos, yPos); 
    } 
} 

次に、あなたのスケッチでは、あなたはライブラリコードへの自己参照を渡すthisキーワードを使用すると思います。このような何かタブを外部ライブラリ全体ではなく、Pointクラスに追加します。

+0

ありがとうございました。私はまだいくつかのオープンな質問があります:もちろん、私は今、独自のメソッドとgetterとsetterなどで多くのクラスを書くことができます。 私が不思議に思うのは、なぜセットアップ機能で変数(たとえば、新しいPointインスタンス)を宣言できず、それをループで呼び出されるdraw()関数で使用するということです。 誰も私にそれを説明することができますか、またはdraw()関数のsetup()関数で宣言された変数を使用する可能性がありますか?さもなければ、アニメーションやゲームのループを毎回自分で実装する必要があります。 – rikojir

+1

@rikojir 'setup()'関数で**変数を宣言している場合、その変数は 'setup()'関数内のスコープ**内でのみ**です。しかし、変数をスケッチの先頭に宣言し、 'setup()'関数で**初期化すると、その変数に 'draw()'関数でアクセスすることができます。これは、Processingで行うのはかなり標準的なことです。恥知らずの自己宣伝:詳細な説明とサンプルコードについては、[このチュートリアル]の** scope **セクション(http://happycoding.io/tutorials/processing/animation)を参照してください。 –

0

あなたはそれだけでクレートすべてのあなたのクラスのジャーFIEを達成することができますが、jarファイルを作成する前に、多分単一のパッケージに、すべてのクラスを追加することを忘れないでください任意の助けに感謝しますorgファイルを作成した後、クラスパスに追加して使用することができます。 ecllipseを使用している場合は、hereのjarファイルの使用方法を参照してください。

+0

さて、クラスをコア機能に追加するにはどうすればいいですか?私はそれらを書くことができますが、私が間違っていなければ、私のライブラリが動作するためのProcessingのcore.jarファイルが必要です。 どのようにこれら2つをパッケージ化しますか?後でProcessing IDEでライブラリを使用したいのですが、可能であれば – rikojir

1

処理用Javaライブラリをラップする場合は、Processing Library Templateリポジトリの指示に従ってください。

通常はJavaライブラリをどのようにコンパイルするのかと比べて少し時間がかかりますが、これはProcessingのContribution Managerで使用する予定です。

簡易テストのみを行う場合は、オフライン/手動でインストールし、通常のjava指示に従って.jarをコンパイルします。 (Eclipseはこれをより簡単にします)。 それでも処理ライブラリのセットアップを実行する必要がありますに注意してください:

  1. あなたはライブラリ名に任意の記号を使用する必要がある場合は、アンダースコアを使用します(ダッシュ、ドットまたは他の記号を使用しない)
  2. 置き、右フォルダ内の.jarファイル(ライブラリ名が.jarファイル名と一致する:~/Documents/Processing/libraries/YourAwesomeLibrary/library/YourAwesomeLibrary.jar)を
関連する問題