2015-04-25 32 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

不要爲此使用Java API調用,請使用Processing自己的API,以便在「不是JVM」中運行它時草圖不會中斷(請記住,處理是語言,它不是「Java的一個子集」,它是一種只需要最少重寫就能編譯成Java的語言,所以如果你想要可移植代碼,使用Processing,而不是「你正在使用的解釋器支持的東西」)。

處理有其自身浮動解析功能,簡稱float()

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

感謝您的回答。儘管如此,代碼仍然不起作用。可能還有其他事情出錯了。我排除了原始問題中代碼的某些部分,因爲錯誤嚴格限於'浮點'轉換。我試圖做一些'camera()'技巧,出於某種原因在'processing.js'中不起作用。我想我需要把它作爲一個單獨的問題發佈。 – sodiumnitrate

+1

這是一個正確的假設=) –