我試圖將這個令人敬畏的尋路功能從http://granularreverb.com/a_star.php轉換爲javascript。將php轉換爲javascript#1
PHP函數
function path_float(&$heap, &$values, $i, $index) {
for (; $i; $i = $j) {
$j = ($i + $i%2)/2 - 1;
if ($values[$heap[$j]] < $values[$index])
break;
$heap[$i] = $heap[$j];
}
$heap[$i] = $index;
}
JavaScript函數
var $path_f;
var $path_h;
var $path_g;
var $path_open_heap;
function path_float($path_open_heap, $path_f, i, index) { // return heap & values
var j;
for (; i; i = j) {
j = (parseInt(i) + parseInt(i)%2)/2 - 1;
if($path_f[$path_open_heap[j]] < $path_f[index]){
break;
}
$path_open_heap[i] = $path_open_heap[j];
}
$path_open_heap[i] = index;
}
我不知道如果JavaScript能夠理解爲()沒有所有的元素?如果我嘗試執行JavaScript功能,我的瀏覽器會凍結。
P.s.我對預先寫好的js pathdindings不感興趣,因爲我需要完全相同的php和js函數。
在此先感謝
它會建議你有一個無限循環回事。你有沒有試過調試過?添加一些'console.debug()'行來查看哪些值是?如果瀏覽器不喜歡你的語法,那麼它會給你一個解析錯誤。 –
我沒有得到js錯誤,我想它是關於無限循環的。 – fshock