Bewegung und Richtung geschrieben am 15.09.2009
Richtung
Gegeben sei ein Movieclip, 0° sind oben 90° rechts usw. ...
Der Winkel wird mit hilfe des atan2 errechnet:
ActionScript2this.pfeilmc.onEnterFrame=function(){
var vy=_root._ymouse-this._y;
var vx=_root._xmouse-this._x;
var winkel=90+Math.atan2(vy, vx) * 180 / Math.PI;
this._rotation=winkel;
}
ny und nx sind die jeweiligen Richtungsvektoren. Es werden hier noch 90° addiert, ein kleine Korrektur.
Bewegung
Möchte man ein Movieclip automatisch an einen Punkt verschieben, so kann diese Funktion benutzt werden:
ActionScript2function MCmoveto(MC:MovieClip,zx,zy,pos){
var schritte=10;
pos++;
var nx=(zx-MC._x)/schritte*pos;
var ny=(zy-MC._y)/schritte*pos;
if(pos==schritte || (Math.round(nx)==0 && Math.round(ny)==0))
{
//fertig,
/*neues Ziel per Zufall erzeugen
zx=Math.round(Math.random()*540)+50;
zy=Math.round(Math.random()*200)+50;
setTimeout(MCmoveto,25, MC,zx,zy,0);
*/
}
else
{//in Richtung Ziel schieben
MC._x=Math.round(MC._x+nx);
MC._y=Math.round(MC._y+ny);
setTimeout(MCmoveto,25, MC,zx,zy,pos);//Timeout neustarten
updateAfterEvent();
}
}
Selbige Funktion für Flash MX(7), die Timeout nicht kennt:
ActionScript2_FlashMX(7)function MCmoveto(MC:MovieClip,zx,zy,pos){
var schritte=10;
pos++;
var nx=(zx-MC._x)/schritte*pos;
var ny=(zy-MC._y)/schritte*pos;
if(pos==schritte || (Math.round(nx)==0 && Math.round(ny)==0))
{
//fertig,
if(MC.tid!=undefined)clearInterval(MC.tid);
MC._x=zx;
MC._y=zy;
}
else
{//in Richtung Ziel schieben
MC._x=Math.round(MC._x+nx);
MC._y=Math.round(MC._y+ny);
if(MC.tid!=undefined)clearInterval(MC.tid);
MC.tid=setInterval(MCmoveto,25, MC,zx,zy,pos);//Timeout neustarten
updateAfterEvent();
}
}
Gestartet wird die Aktion in dem man die Funktion aufruft und neben den MovieClip, die neue x- und y-Koordinate übergibt; den letzten Parameter setzt man auf 0.
Was macht die Funktion?
Zuerst wird der Weg zur neuen Koordinate berechnet und durch schritte geteilt-hier 10. Dann wird der Movieclip dieses Zehntel*pos des Weges bewegt.
Die Funktion ist beendet wenn pos gleich schritte ist oder das Ziel gleich der aktuellen Koordinate ist.
stepp_erklaer.swf
Downloads
download: richtung.rar 4.26kb - Flash CS
download: moveto2.rar 5.23kb - Flash CS3
download: moveto2.txt 3.11kb - nur die Scripte
zur freien Nutzung