0

http://ejohn.org/blog/processingjs/にある処理の JavaScript ポートを使用しようとしています。次のコンストラクターを使用したいと考えています。Processing(CanvasElement, "some massive block of code");JavaScript が複数行の文字列をネイティブにサポートしていないことは知っていますが、すべての行を連結してすべての特殊文字をエスケープすることなく、次のようなものを渡す方法はありますか?

/**
 * Array. 
 * 
 * An array is a list of data. Each piece of data in an array 
 * is identified by an index number representing its position in 
 * the array. Arrays are zero based, which means that the first 
 * element in the array is [0], the second element is [1], and so on. 
 * In this example, an array named "coswav" is created and
 * filled with the cosine values. This data is displayed three 
 * separate ways on the screen.  
 */

size(200, 200);

float[] coswave = new float[width];

for (int i = 0; i < width; i++) {
  float amount = map(i, 0, width, 0, PI);
  coswave[i] = abs(cos(amount));
}

for (int i = 0; i < width; i++) {
  stroke(coswave[i]*255);
  line(i, 0, i, height/3);
}

for (int i = 0; i < width; i++) {
  stroke(coswave[i]*255 / 4);
  line(i, height/3, i, height/3*2);
}

for (int i = 0; i < width; i++) {
  stroke(255 - coswave[i]*255);
  line(i, height/3*2, i, height);
}
4

5 に答える 5

3

Javascript は実際には複数行の文字列をサポートしています: 各行の最後にバックスラッシュを追加します:

alert('1\
    2\
    3');

あまりきれいではありませんが、機能します。

別の方法は、スクリプトを使用してテキストをエンコードすることです... PHPは1ライナーであるため、PHPをお勧めします。

<?=json_encode('your text');?>
于 2009-01-20T12:04:42.730 に答える
1

より保守しやすい解決策として、ページの本文のスクリプト タグ タグに配置します。たとえば、次のようになります。

<script type="text/processing" id="code">
/**
 * Array. 
 * ...
 */

size(200, 200);
...
</script>

そして、次のように Processing オブジェクトを構築します。

var canvas = document.getElementById('canvas');
var code = document.getElementById('code');
Processing(canvas , code.textContent);

RoBorgが提案したように、JSONエンコーダーを介して処理コードを実行すると、2番目のパラメーターにコピーして貼り付けるだけの文字列が得られます。

于 2009-01-20T12:48:33.920 に答える
0

サーバー上の独自のファイルに「大量のコード ブロック」を配置し、AJAX を使用して取得し、妥当なキャッシュ ヘッダーがあることを確認します。

于 2009-01-20T12:02:59.627 に答える
0

または、テキストを HTML ページに配置して (たとえば、非表示に)、そこから取得することもできます...

于 2009-01-20T12:09:57.600 に答える
0

別のオプションは、E4X リテラルを使用することです

var s = "" + <r><![CDATA[
line 1
line 2
]]></r>;

IE6でサポートされているとは思えませんが。

于 2009-01-20T12:11:53.323 に答える