2009-01-20 8 views
0

J'essaie d'utiliser le port de traitement javascript trouvé à http://ejohn.org/blog/processingjs/ Je veux utiliser le constructeur suivant. Processing(CanvasElement, "some massive block of code"); Je sais que javascript ne supporte pas nativement les chaînes multilignes mais est-il possible de passer quelque chose comme ceci sans avoir à concaténer chaque ligne et échapper tous les caractères spéciaux?Chaîne multiligne contenant des caractères spéciaux en 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); 
} 

Répondre

0

Placez le « bloc massif de code » dans son propre fichier sur le serveur, avec AJAX et d'extraction assurer qu'il a des en-têtes de cache raisonnables.

+0

Ceci est une solution rapide et sale à un problème, donc je ne veux pas aller sur la route ajax si je peux l'éviter. Voir cette question. http://stackoverflow.com/questions/460085/best-language-for-quickly-creating-user-interfaces-with-out-drag-and-drop – Jared

3

Javascript ne fait supporter les chaînes multi-lignes: ajoutez une barre oblique inverse à la fin de chaque ligne:

alert('1\ 
    2\ 
    3'); 

Pas très jolie, mais cela fonctionne.

Une alternative serait d'utiliser un script pour encoder votre texte ... Je vous suggère de PHP comme il est un 1-liner:

<?=json_encode('your text');?> 
+0

+1. Et je pensais que je connaissais toutes les nuances de la syntaxe Javascript. Bonne réponse. – AnthonyWJones

0

Alternativement, vous pouvez simplement mettre le texte dans la page HTML (caché, par exemple) et l'obtenir à partir de là ...

0

Une autre option serait d'utiliser E4X littéraux

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

Bien que je doute est pris en charge par IE6.

+0

Il n'est même pas pris en charge par IE7 – Greg

1

Pour une solution plus maintenable, je placerais dans les balises de script balises dans le corps de la page, par exemple:

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

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

Et construire votre objet de traitement comme:

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

Pour une solution rapide et sale exécutez votre code de traitement via un codeur JSON comme RoBorg suggested et vous obtiendrez une chaîne que vous pouvez simplement copier et coller dans le second paramètre.

Questions connexes