Antworten auf deine Fragen:
Neues Thema erstellen

Math.Pi

Modnass

Nicht mehr ganz neu hier

Hallo Community

Schon swieder ein karussel doch diesmal ohne xml sondern mit vielen kleinen MCS

Mein problem besteht darin, dass actionscript alle mc's in der selben Lage dargestellt werden, auch wenn ich andere variablen eingebe

sie drehen sich munter im Kreis und verdecken sich gegenseitig

die zeile
mc_xy.angle =((Math.PI*2)/numOfItems);

ist für die lage verantwortlich aber selbst wenn ich z.B. für einen mc

r.angle = 3 * ( (Math.PI*2)/numOfItems);

oder ähnliches eingebe verändert sich nichts. woran liegt das?
Hier mein gesamter code:



var numOfItems:Number = 6;
var radiusX:Number = 150;
var radiusY:Number = 25;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;


var r = this.attachMovie("2","2"+i,1+i);
r.angle =((Math.PI*2)/numOfItems);
r.onEnterFrame = mover;

var t = this.attachMovie("1","1"+i,1+i);
t.angle =((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;

var q = this.attachMovie("3","3"+i,1+i);
q.angle =((Math.PI*2)/numOfItems);
q.onEnterFrame = mover;

var u = this.attachMovie("4","4"+i,1+i);
u.angle =((Math.PI*2)/numOfItems);
u.onEnterFrame = mover;

var v = this.attachMovie("5","5"+i,1+i);
v.angle =((Math.PI*2)/numOfItems);
v.onEnterFrame = mover;

var w = this.attachMovie("6","6"+i,1+i);
w.angle =((Math.PI*2)/numOfItems);
w.onEnterFrame = mover;

function mover()
{
this._x = Math.cos (this.angle) * radiusX + centerX;
this._y = Math.sin (this.angle) * radiusY + centerY;
var s:Number = this._y / (centerY+radiusY);
this._xscale = this._yscale = s * 100
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}


this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/8000;
}


grüße
Modnass
 

oxygen

PS Azubine

AW: Math.Pi

also as2 is zwar nicht mein ding

aber ich vermisse die definition ...

... also nicht die definition für mich - ich weiss wieviel pi ist
aber müsstest du nicht pi für as2 auch definieren ??



edit:
 
Zuletzt bearbeitet:

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

ja ich hab das schon in eienr Version mit XML aber wie an dem Code zu lesen ist will ich das jetzt ohne XML aufziehen und da taucht dann obengenanntes Problem auf :)
 
AW: Math.Pi

Math.PI ist per se definiert.

Überzeuge dich selbst:
PHP:
var n = Math.PI;
alert (n);
Zum Grundproblem kann ich leider nichts sagen.
:(
 
Zuletzt bearbeitet:

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

Ob sie genau richtig ist kann ich nicht sagen, da ich das auch aus besagtem tutorial habe, funktionieren tut sie jedoch einwadfrei
 

sokie

Mod | Web

AW: Math.Pi

aber müsstest du nicht pi für as2 auch definieren ??
ich glaube Archimedes war das schon klar, dass es da um eine Konstante geht.das hat man in Flash auch so eingerichtet (Math.PI)
Math.PI ist eine Konstante.
Daran liegts auch nicht.

der Block mit den Positionszuweisungen für die einzelnen Clips sollte in eine Schliefe liegen, und da muss natürlich auch das "i" initialisiert und hochgezählt werden:
Code:
var numOfItems:Number = 6;
var radiusX:Number = 150;
var radiusY:Number = 25;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;

for ( var i = 1; i <= numOfItems; i++){
    var mc:Movieclip = this.attachMovie("clip"+i,"clip"+i,i);
    mc.angle =((Math.PI*2)/numOfItems)*i;
    mc.onEnterFrame = mover;
}
ganz wichtig ist, dass die symbole die entsprechenden AS-Verknüpfungsbezeicher haben (in diesem Beispiel wären das clip1,clip2,clip3...)
dann muss an dieser Stelle
Code:
  clip.angle =((Math.PI*2)/numOfItems)*i;
auf jeden Fall mit i multipliziert werden,damit jeder clip auf der passenden Startposition liegt.
 

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

Danke für die Hilgfe, so hatte ich es auch am Anfang aber jetzt funktioniert es nicht. Flash stellt mir jetzt auf jeder Position den letzten Clip dar
Der neue Code sieht wie folgt aus:

Code:
var numOfItems:Number = 10;
var radiusX:Number = 150;
var radiusY:Number = 25;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;

for (var i=0;i<numOfItems;i++)
{
    var t = this.attachMovie("1","1"+i,1+i);
    t.angle = i * ((Math.PI*2)/numOfItems);
    t.onEnterFrame = mover;
    
    var r = this.attachMovie("2","2"+i,1+i);
    r.angle =((Math.PI*2)/numOfItems) * i;
    r.onEnterFrame = mover;
    
    var q = this.attachMovie("3","3"+i,1+i);
    q.angle =((Math.PI*2)/numOfItems) * i;
    q.onEnterFrame = mover;
    
    var u = this.attachMovie("4","4"+i,1+i);
    u.angle =((Math.PI*2)/numOfItems) * i;
    u.onEnterFrame = mover;
    
    var v = this.attachMovie("5","5"+i,1+i);
    v.angle =((Math.PI*2)/numOfItems) * i;
    v.onEnterFrame = mover;
    
    var w = this.attachMovie("6","6"+i,1+i);
    w.angle =((Math.PI*2)/numOfItems) * i;
    w.onEnterFrame = mover;
}

function mover()
{
    this._x = Math.cos (this.angle) * radiusX + centerX;
    this._y = Math.sin (this.angle) * radiusY + centerY;
    var s:Number = this._y / (centerY+radiusY);
    this._xscale = this._yscale = s * 100
    this.angle += this._parent.speed;
    this.swapDepths(Math.round(this._xscale) + 100);
}


this.onMouseMove = function()
{
    speed = (this._xmouse-centerX)/8000;
}

grüße Modnass
 

sokie

Mod | Web

AW: Math.Pi

ja sicher, weil du bei jedem Schleifendurchlauf
Code:
for (var i=0;i<numOfItems;i++)
{
    var t = this.attachMovie("1","1"+i,1+i);
    t.angle = i * ((Math.PI*2)/numOfItems);
    t.onEnterFrame = mover;
    
    var r = this.attachMovie("2","2"+i,1+i);
    r.angle =((Math.PI*2)/numOfItems) * i;
    r.onEnterFrame = mover;
    
    var q = this.attachMovie("3","3"+i,1+i);
    q.angle =((Math.PI*2)/numOfItems) * i;
    q.onEnterFrame = mover;
    
    var u = this.attachMovie("4","4"+i,1+i);
    u.angle =((Math.PI*2)/numOfItems) * i;
    u.onEnterFrame = mover;
    
    var v = this.attachMovie("5","5"+i,1+i);
    v.angle =((Math.PI*2)/numOfItems) * i;
    v.onEnterFrame = mover;
    
    var w = this.attachMovie("6","6"+i,1+i);
    w.angle =((Math.PI*2)/numOfItems) * i;
    w.onEnterFrame = mover;
} ALLE Clips in die selbe Tiefe legst und an die selbe Position legst. dabei wird jedesmal der vorangegangene überschrieben, und nur der letzte eingefügt, und beim nächsten Schleifendurchlauf auf der nächsten position das selbe.
du must pro durchlauf nur jeweils einen Clip einfügen:
Code:
  for (var i=1;i<=numOfItems;i++){
  var clip:MovieClip = this.attachMovie(String(i),String(i),i);
  clip.angle =((Math.PI*2)/numOfItems) * i;
  clip.onEnterFrame = mover;
}
Das ist allerdings kein guter Stil als Instanznamen und Bezeichner eine blosse Ziffer zu benutzen.
 
Zuletzt bearbeitet:

4uwak

WEB?ViDEO?FOTO and more

AW: Math.Pi

das wird auch warscheinlich auch nicht gehen soweit ich weis darfst du keine zahlen als erstes setzten bei das verträgt AS nicht das ist bei variablen zumindest so und bei instanz namen glaub ich auch, es muss immer mit einen Buchstaben anfangen und zum anderem Problem also wenn ich denn Code anschaue hast du doch nur 6 MovieClips oder? wieso dann die schleife? also ich hab mal den ganzen Code angeschaut und korrigiert waren einige Fehler drin, die nicht alle aufzählen will ^^ aber jetzt gehts 100%

Gruß Super4uwak :D

Code:
var numOfItems:Number = 6;
var radiusX:Number = 150;
var radiusY:Number = 25;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;


var r = this.attachMovie("mc2","mc2",1);
r.angle =((Math.PI*2)/numOfItems)*1;
r.onEnterFrame = mover;

var t = this.attachMovie("mc1","mc1",2);
t.angle =((Math.PI*2)/numOfItems)*2;
t.onEnterFrame = mover;

var q = this.attachMovie("mc3","mc3",3);
q.angle =((Math.PI*2)/numOfItems)*3;
q.onEnterFrame = mover;

var u = this.attachMovie("mc4","mc4",4);
u.angle =((Math.PI*2)/numOfItems)*4;
u.onEnterFrame = mover;

var v = this.attachMovie("mc5","mc5",5);
v.angle =((Math.PI*2)/numOfItems)*5;
v.onEnterFrame = mover;

var w = this.attachMovie("mc6","mc6",6);
w.angle =((Math.PI*2)/numOfItems)*6;
w.onEnterFrame = mover;

function mover()
{
this._x = Math.cos (this.angle) * radiusX + centerX;
this._y = Math.sin (this.angle) * radiusY + centerY;
var s:Number = this._y / (centerY+radiusY);
this._xscale = this._yscale = s * 100
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}


this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/8000;
}
 

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

Vielen dank.. lustig ist nur das ich es anfangs auch so hatte.. jetzt bemerke ich aber das AS ja den Konflikt mit meinen Instanznamen und den multiplikatoren hatte. Ich danke euch :) Ein Hoch auf die Profis die uns neulingen helfen ;)
 

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

So, danke euch klappt jetzt alles und es dreht sich wunderbar.. ich wollte jetzt noch eine perle hizufügen.. und zwar das Event, wenn die Maus die Bühne verlässt, dass die aniamtion alngsam abbremst und schließlich zunm stehen kommt.

meine Google suche hat mich auf folgenden Code gebracht:
Code:
[I]onEnterFrame = function ()
{[/I]
[I] 	if ((_root._xmouse + predX) >= Stage.width
	|| (_root._ymouse + predY) >= Stage.height ? 10
	|| _root._xmouse + predX < = 0
	|| _root._ymouse + predY <= 0)
	{
		trace("Maus hat die Stage verlassen!");
		predX = 0;
		predY = 0;
		offStage = true;
	}
};
[/I]

Da ich mich noch nicht besonders gut mit AS auskenne dachte ich darüber nach eine Funktion einzufügen, die wenn
Code:
offStage = true;
meine frühere
Code:
var speed:Number = 0.01

immer kleiner wird bis schließlich zum nullpunkt bzw. asymptotisch zum Nullpunkt.

Allerdings weiss ich nicht wie ich das in eine Zeile schön pressen kann.. könnt ihr mir helfen?

Und dann könnt ihr mir sagen, wie ich mir sowas schritt für schritt aneigne.. wie fang ich am besten An um Actionscript schritt für schritt zu lernen, anstatt nur herumzuporbieren und Code zu kopieren udn dann eigenhändig umzumodeln :)

Danke und liebe Grüße Modnass

Achja n frohes Neues der Community ;)
 

4uwak

WEB?ViDEO?FOTO and more

AW: Math.Pi

das mit dem speed ist nicht ganz richtig das dieser wert nur am anfang verwendet wird und später errechnet er sich neu, wenn du AS lernen willst dann lade dir hier das Handbuch zu ActionScript 2.0 und am besten noch das Referenzbuch wo alles Befehle aufgelistet und erklärt sind, also das Handbuch hat ca. 900 Seiten und das Referenzbuch ca. 1500 Seiten, viel spass beim lesen http://www.adobe.com/support/documentation/de/flash/#actionScript

Gruß Super4uwak :D

Code:
var numOfItems:Number = 6;
var radiusX:Number = 200;
var radiusY:Number = 25;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.05;
//////////////////////////////////////////////
this.createEmptyMovieClip("stage", 1);
with(stage) {
    lineStyle(1, 0xFF0000, 100);
    beginFill(0x000000);
    moveTo(0, 0);
    lineTo(Stage.width,0);
    lineTo(Stage.width, Stage.height);
    lineTo(0, Stage.height);
    lineTo(0, 0);
    endFill();
}
k = 8000;
stage._alpha=0;

stage.onRollOver=function(){
    delete this.onEnterFrame
    k=8000;
    };
stage.onRollOut=function(){
    this.onEnterFrame=function(){
        k = k + 1000;
        speed = (this._xmouse-centerX)/k;
        if (k == 80000){
            delete this.onEnterFrame
            }
        }
    };
//////////////////////////////////////////////

for (i=0;i<numOfItems;i++){
    _root.attachMovie("mc"+(i+1),"mc"+i,10+i);
    _root["mc"+i].angle =((Math.PI*2)/numOfItems)*i;
    _root["mc"+i].onEnterFrame = mover;
    }

function mover()
{
this._x = Math.cos (this.angle) * radiusX + centerX;
this._y = Math.sin (this.angle) * radiusY + centerY;
var s:Number = this._y / (centerY+radiusY);
this._xscale = this._yscale = s * 100
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}


this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/k;
}
 
Zuletzt bearbeitet:

Modnass

Nicht mehr ganz neu hier

AW: Math.Pi

Wow, doch komplizierter als ich dachte, allerdings scheint es nicht ganz so zu funktionieren wie ich es mir vorgestellt habe, da die Rotation nciht zum stehen kommt sondern nur langsamer wird und sich dann ganz langsam weiterdreht

Aber danke bis hierhin!
Liebe Grüße
Modnass
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.496
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben