Hallo Leute!
Aus gegebenem Anlass, weil ich leider immernoch keine Lösung finde... Ich müsste die folgende Funktion irgendwie an den Stellen, auf denen sie sich selbst wieder aufruft, auf mehrere Frames splitten! Wenn nicht, dann ist die Berechnung zu aufwendig und es gibt ne Warnmeldung!
Weis jemand einen Rat, ohne dass ich viel Quellcode erklären muss? Schade, dass ein bewegen des Abspielkopfes vor der Funktionsaufrufung IN der Funktion nichts bringt......
*heul*
ActionScript:
function checkfields($movepoints, $x, $y, $matrix, $lastfieldname, $startpath) {
var $path = $startpath;
if ($movepoints>=0) {
for ($i=0; $i<=($matrix.length-1); $i++) {
if (($matrix[$i][1] == $x) && ($matrix[$i][2] == $y)) {
var $fieldname = $matrix[$i][0];
var $terrainpoints = _root[$fieldname].$terrainpoints;
break;
}
}
if (((_root[$fieldname].$path.split("|").length)-1) == 0) {
_root[$fieldname].$path = $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y;
_root[$fieldname].$used_movepoints = $movepoints;
} else {
if (((_root[$fieldname].$path.split("|").length)>(($path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y).split("|").length)) && (_root[$fieldname].$used_movepoints>=$movepoints)) {
_root[$fieldname].$path = $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y;
_root[$fieldname].$used_movepoints = $movepoints;
} else {
return;
}
}
} else {
return;
}
if ((($movepoints-$terrainpoints)>=0) && ((_global.$selected_mclip[1] != _root[$fieldname]._x) || (_global.$selected_mclip[2] != _root[$fieldname]._y))) {
_root[$fieldname]._alpha = 100;
if (((_root[$lastfieldname]._x != ($x+(_global.$matrixwidth/2))) || (_root[$lastfieldname]._y != ($y-(_global.$matrixheight*0.75)))) && (($x+(_global.$matrixwidth/2))<(_global.$fieldsize_x*_global.$matrixwidth)) && ($y-(_global.$matrixheight*0.75)>0)) {
checkfields($movepoints-$terrainpoints, ($x+(_global.$matrixwidth/2)), ($y-(_global.$matrixheight*0.75)), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
if (((_root[$lastfieldname]._x != ($x+_global.$matrixwidth)) || (_root[$lastfieldname]._y != ($y+0))) && (($x+_global.$matrixwidth)<(_global.$fieldsize_x*_global.$matrixwidth))) {
checkfields($movepoints-$terrainpoints, ($x+_global.$matrixwidth), ($y+0), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
if (((_root[$lastfieldname]._x != ($x+(_global.$matrixwidth/2))) || (_root[$lastfieldname]._y != ($y+(_global.$matrixheight*0.75)))) && ((($x+(_global.$matrixwidth/2))<(_global.$fieldsize_x*_global.$matrixwidth)) && (($y+(_global.$matrixheight*0.75))<(_global.$fieldsize_y*_global.$matrixheight)))) {
checkfields($movepoints-$terrainpoints, ($x+(_global.$matrixwidth/2)), ($y+(_global.$matrixheight*0.75)), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
if (((_root[$lastfieldname]._x != ($x-(_global.$matrixwidth/2))) || (_root[$lastfieldname]._y != ($y+(_global.$matrixheight*0.75)))) && ((($x-(_global.$matrixwidth/2))>0) && (($y+(_global.$matrixheight*0.75))<((_global.$fieldsize_y*_global.$matrixheight))))) {
checkfields($movepoints-$terrainpoints, ($x-(_global.$matrixwidth/2)), ($y+(_global.$matrixheight*0.75)), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
if (((_root[$lastfieldname]._x != ($x-_global.$matrixwidth)) || (_root[$lastfieldname]._y != ($y-0))) && (($x-_global.$matrixwidth)>0)) {
checkfields($movepoints-$terrainpoints, ($x-_global.$matrixwidth), ($y-0), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
if (((_root[$lastfieldname]._x != ($x-(_global.$matrixwidth/2))) || (_root[$lastfieldname]._y != ($y-(_global.$matrixheight*0.75)))) && ((($x-(_global.$matrixwidth/2))>0) && (($y-(_global.$matrixheight*0.75))>0))) {
checkfields($movepoints-$terrainpoints, ($x-(_global.$matrixwidth/2)), ($y-(_global.$matrixheight*0.75)), $matrix, $fieldname, $path+"|"+_root[$fieldname]._x+"*"+_root[$fieldname]._y);
}
}
return "done";
}