Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-05-2007, 14:11   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
MC im Kreis mit Richtung zum Mittelpunkt

Hi,

will einen MC aus der Biblio zb 10 mal im Kreis anordnen.
Der MC ist ein Pfeil und die Pfeilspitze sollimmer zu Mittelpunkt zeigen.

Hat da jemand eine Lösung ?
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 10-05-2007, 14:29   #2 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 130
für die drehung hab ich mal was geschrieben gehabt...

PHP-Code:
private function berechneWinkel(ziele:Array, pos_x:Numberpos_y:Number):Number {
        var 
cosinus_ybetragwinkel:Number;
        
betrag Math.sqrt(Math.pow((ziele[0]-pos_x), 2)+Math.pow((ziele[1]-pos_y), 2));
        
cosinus_y = (-(ziele[1]-pos_y))/betrag;
        
winkel = (Math.acos(cosinus_y))*360/(2*Math.PI);
        return 
winkel;
    } 
ziele ist ein array, was im index 0 die x koordinate deines ziels ( also der kreis mittelpunkt) hat und im index 1 die y koordinate.
dann einfach die rotation deines mc's mit dem winkel gleich setzen.

kann aber auch sein, das sowas einfacher geht...
jetzt müsste sich dein mc halt nur noch im kreis drehen... aber das sollte auch nicht so schwer sein...
__________________
www.poisonfree.com
MrManson ist offline   Mit Zitat antworten
Alt 10-05-2007, 16:22   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

danke erstmal für die Antwort.

Habe deine Funktion mal so verwendet:

PHP-Code:
function berechneWinkel (ziele:Array, pos_x:Numberpos_y:Number):Number
{
    var 
cosinus_ybetragwinkel:Number;
    
betrag Math.sqrt (Math.pow ((ziele[0] - pos_x), 2) + Math.pow ((ziele[1] - pos_y), 2));
    
cosinus_y = (-(ziele[1] - pos_y)) / betrag;
    
winkel = (Math.acos (cosinus_y)) * 360 / (Math.PI);
    
trace (winkel);
    return 
winkel;
}
MovieClip.prototype.arrangeCircle = function (idamountcenterXcenterYradiusxradiusy)
{
    var 
center = [centerXcenterY];
    for (var 
1<= amounti++)
    {
        var 
attachMovie (idid ii);
        var 
angle = ((360 amount) * i) * Math.PI 180;
        
t._x centerX Math.sin (angle) * radiusx;
        
t._y centerY Math.cos (angle) * radiusy;
        
t._rotation berechneWinkel (centercenterX Math.sin (angle) * radiusxcenterY Math.cos (angle) * radiusy);
    }
};
arrangeCircle ("muster"10225200100100); 
Links der gedachten Mittellinie des Kreises geht es, rechts nicht.

Zum testen einfach ein MC in die Biblio mit Verk.Name muster und Script kopieren.
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 10-05-2007, 16:47   #4 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 130
ups... hatte noch was vergessen, was ich in einer anderen methode geschrieben hatte...
bevor du den winkel zurück gibst, noch diese abfrage
PHP-Code:
if (ziele[0]<pos_x) {
            
winkel *= -1;
        } 
jetzt sollte es gehen.
__________________
www.poisonfree.com
MrManson ist offline   Mit Zitat antworten
Alt 10-05-2007, 17:08   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

solide Lösung dank MrManson!

PHP-Code:
function berechneWinkel (ziele:Array, pos_x:Numberpos_y:Number):Number
{
    var 
cosinus_ybetragwinkel:Number;
    
betrag Math.sqrt (Math.pow ((ziele[0] - pos_x), 2) + Math.pow ((ziele[1] - pos_y), 2));
    
cosinus_y = (-(ziele[1] - pos_y)) / betrag;
    
winkel = (Math.acos (cosinus_y)) * 360 / (Math.PI);
    if (
ziele[0] < pos_x)
    {
        
winkel *= -1;
    }
    return 
winkel;
}
function 
arrangeCircle (idamountcenterXcenterYradiusxradiusy)
{
    var 
center = [centerXcenterY];
    for (var 
1<= amounti++)
    {
        var 
attachMovie (idid ii);
        var 
angle = ((360 amount) * i) * Math.PI 180;
        
t._x centerX Math.sin (angle) * radiusx;
        
t._y centerY Math.cos (angle) * radiusy;
        
t._rotation berechneWinkel (centercenterX Math.sin (angle) * radiusxcenterY Math.cos (angle) * radiusy);
        
t.id i;
        
t.onRollOver = function ()
        {
            
trace (this.id);
        };
    }
}
arrangeCircle ("muster"201001005050);
// "muster" => Verknüpfungsname in der Bibliothek
// 20 => Anzahl der Movieclips
// 100 => x Position
// 100 => y Position
// 50 => x scale
// 50 => y scale 
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele