2015-04-25 4 views
0

У меня есть эскиз обработки, в котором я прочитал некоторые координаты из файла:Processing.js: считывание информации из файла

float[][] points = new float[243][3]; 

void setup() { 
    size(500, 500, P3D); 
    background(255); 
    camera(100, 50, 150, 0, 0, 0, 0, -1, 0); 
    String lines[] = loadStrings("1xd3CoordsKnot"); 

    for (int i = 0; i < lines.length; i++) { 
    String[] list = split(lines[i], " "); 
    float x = Float.parseFloat(list[0]); 
    float y = Float.parseFloat(list[1]); 
    float z = Float.parseFloat(list[2]); 
    points[i][0] = x; 
    points[i][1] = y; 
    points[i][2] = z; 
    } 
} 

void draw() { 
    background(50); 
    lights(); 

    //the 3d lines here 
    for (int i = 0; i < 242; i++) { 
    line(points[i][0],points[i][1],points[i][2],points[i+1][0],points[i+1][1],points[i+1][2]); 
    stroke(255); 
    strokeWeight(2); 
    } 

} 

Он работает прекрасно при запуске в обработке. Я пытаюсь встроить его в веб-страницу. В этом случае линии не рисуются. Консоль javascript дала мне сообщение о том, что файлы, из которых считываются координаты, не найдены в корневом каталоге html-файла, поэтому я скопировал его там. Но теперь он вообще не отображает эскиз и дает мне следующую ошибку: ReferenceError: Can't find variable: Float.

html выглядит следующим образом:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<script src="js/processing.min.js"></script> 
</head> 
<body> 
    <canvas data-processing-sources="pde/1xd3.pde"></canvas> 
</body> 
</html> 

Что здесь не так?

ответ

-1

Попробуйте

parseFloat(list[0]); 

вместо

Float.parseFloat(); 

Он должен делать эту работу! :)

+0

Это избавились от ошибки. Однако вычерченные линии застревают в верхнем левом углу. – sodiumnitrate

+0

Что значит «застрял»? они маленькие или просто точка в '0, 0'. Возможно, ваши строки ошибочно разобраны, если вы можете поделиться образцом своего файла, который он может вам помочь. И, может быть, вы могли бы открыть новый вопрос, потому что проблема «Float», которую вы испытывали, ушла! :) – datamosh

+0

Вот что я думал. Они не застревают в '0,0', но они группируются в одном углу. Это было для проекта, и я решил не беспокоиться об этом из-за недостаточного времени. Спасибо за помощь: – sodiumnitrate

1

Не используйте для этого вызовы API Java, используйте собственный API для обработки, чтобы ваш эскиз не прерывался, когда вы запускаете его в «не JVM» (помните, что обработка - это язык, это не «подмножество Java», это язык, который просто компилируется на Java с минимальными перезаписываниями, поэтому, если вы хотите переносить код, используйте «Обработка», а не «что-то, что поддерживается используемым интерпретатором»).

Processing имеет свою собственную функцию поплавка синтаксического анализа, называется просто float():

String a = "3.52312"; 
float b = float(a); // b is now the number 3.52312 
+0

Спасибо за ответ. Однако код все еще не работает. Вероятно, что-то еще не так. Я исключил некоторые части кода в исходном вопросе, потому что ошибка была строго о преобразовании 'float'. Я пытаюсь выполнить некоторые трюки 'camera(), которые по какой-то причине не работают в' process.js'. Полагаю, мне нужно разместить его как отдельный вопрос. – sodiumnitrate

+1

это правильное предположение =) –