1

比較的単純なProcessingスクリプトは、理由は不明ですが、2.0 IDEのJavascriptモードとブラウザー(Processing.JS経由)の両方で失敗します。同じ問題が両方の方法を停止することだと私はかなり確信しています。失敗の原因となる行を特定し、次のページに示します。

  • Test1.htmlは、機能するプロジェクトスクリプトの縮小版です。
  • Test2.htmlは、IDEのJavaモードでは正常に機能しますが、単一の追加コマンドが呼び出されたときにTest1がどのように失敗するかを示しています(93行目)。問題のある行は、すでに正常に印刷された情報を再印刷しようとしているだけなvoid setup(){}ので、混乱します。

ここではすべてのスクリプトを表示できますが、 Test2.pdeのキーラインはにありvoid drawLinks()ます。

何がこれを引き起こしているのか考えていますか?私は今これにとても多くの時間を無駄にしました!Test2.pdeスクリプトを新しいProcessing2.0IDEにコピーして貼り付けるだけで、JavaおよびJavascriptモードで試してみることができます。

4

3 に答える 3

2

Processing IDE でコードを作成した場合、Web ブラウザーで直接使用することはできません。Web ブラウザーでスクリプトを実行するには、主に 2 つのオプションがあります。

A) Processing から Java アプレットをエクスポートできます。これは後で Web ページに埋め込むことができます。これはファイルを Java アプレットとして扱うため、動作はしますが、おそらく洗練されたソリューションではありません。

B) ProcessingJS は処理ファイルを読み取り、それらを Web ブラウザーでネイティブ JavaScript として実行します。JS ライブラリをダウンロードし、これをインポートするファイルを作成し、Processing ソース ファイルをポイントします。これが解析され、ネイティブ JavaScript で描画されます。

于 2012-12-09T21:16:21.570 に答える
1

ProcessingJS のバージョンの ArrayList に問題があるようです。適切に指定されていますが、initialCapacity を受け入れるコンストラクターにバグがあるようです。ごく最近のバグ レポートもこれを示しています。

tl;dr: 65 行目の arrayList の作成から変数 n を削除します。

this.links = new ArrayList<Link>(n);

なる必要があります:

this.links = new ArrayList<Link>();
于 2012-12-19T01:10:11.010 に答える
1

Processing.js で OOP を使用する場合、特にそのようなオブジェクトがやthis.内でインスタンス化されている場合は、正しく機能するためにすべてのインスタンス変数の前に を追加する必要があることがわかりました。すべてのコンストラクターとメソッドにこの変更を加える必要があります。arrayArrayList

例えば:

class Route {
  ArrayList<Integer> cities;
  float distance;

  Route(ArrayList CITIES, float DISTANCE) {
    this.cities = CITIES;
    this.distance = DISTANCE;
  }
}

実際の例については、インタラクティブな履歴書のソースにリンクされている .pdeを確認してください。

変更されたコードは Processing : Java / Standard Mode でも実行されますが、過度に冗長になります。私は通常、プロジェクトを processing.js に移植する場合、または標準 / Java と JavaScript (processing.js) モードの両方で動作するプロジェクトが必要な場合にのみ、この変更を行います。

于 2012-12-11T07:27:58.970 に答える