Anzeige

[AS2] Math.Pi

[AS2] - Math.Pi | PSD-Tutorials.de

Erstellt von Modnass, 07.01.2010.

  1. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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
     
    #1      
  2. oxygen

    oxygen PS Azubine

    Dabei seit:
    15.06.2009
    Beiträge:
    1.488
    Geschlecht:
    weiblich
    Ort:
    Berlin
    Software:
    ps cs - ibook g4 os 10.5.8; cs5 web premium (imac) 10.6.4
    Kameratyp:
    meine erste :) nikon 9100
    Math.Pi
    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: KLICK mal
     
    Zuletzt bearbeitet: 07.01.2010
    #2      
  3. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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 :)
     
    #3      
  4. pixxxelschubser

    pixxxelschubser Realist

    Dabei seit:
    19.02.2008
    Beiträge:
    7.155
    Software:
    für jeden Zweck das Richtige
    Kameratyp:
    hab ich auch
    Math.Pi
    AW: Math.Pi

    Math.PI ist per se definiert.

    Überzeuge dich selbst:
    PHP:
    1. var n = Math.PI;
    2. alert (n);
    Zum Grundproblem kann ich leider nichts sagen.
    :(
     
    Zuletzt bearbeitet: 07.01.2010
    #4      
  5. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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
     
    #5      
  6. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Math.Pi
    AW: Math.Pi

    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 (Text):
    1.  
    2. var numOfItems:Number = 6;
    3. var radiusX:Number = 150;
    4. var radiusY:Number = 25;
    5. var centerX:Number = Stage.width/2;
    6. var centerY:Number = Stage.height/2;
    7. var speed:Number = 0.05;
    8.  
    9. for ( var i = 1; i <= numOfItems; i++){
    10.     var mc:Movieclip = this.attachMovie("clip"+i,"clip"+i,i);
    11.     mc.angle =((Math.PI*2)/numOfItems)*i;
    12.     mc.onEnterFrame = mover;
    13. }
    14.  
    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 (Text):
    1.  
    2.   clip.angle =((Math.PI*2)/numOfItems)*i;
    3.  
    auf jeden Fall mit i multipliziert werden,damit jeder clip auf der passenden Startposition liegt.
     
    #6      
  7. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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 (Text):
    1.  
    2.  
    3. var numOfItems:Number = 10;
    4. var radiusX:Number = 150;
    5. var radiusY:Number = 25;
    6. var centerX:Number = Stage.width/2;
    7. var centerY:Number = Stage.height/2;
    8. var speed:Number = 0.05;
    9.  
    10. for (var i=0;i<numOfItems;i++)
    11. {
    12.     var t = this.attachMovie("1","1"+i,1+i);
    13.     t.angle = i * ((Math.PI*2)/numOfItems);
    14.     t.onEnterFrame = mover;
    15.    
    16.     var r = this.attachMovie("2","2"+i,1+i);
    17.     r.angle =((Math.PI*2)/numOfItems) * i;
    18.     r.onEnterFrame = mover;
    19.    
    20.     var q = this.attachMovie("3","3"+i,1+i);
    21.     q.angle =((Math.PI*2)/numOfItems) * i;
    22.     q.onEnterFrame = mover;
    23.    
    24.     var u = this.attachMovie("4","4"+i,1+i);
    25.     u.angle =((Math.PI*2)/numOfItems) * i;
    26.     u.onEnterFrame = mover;
    27.    
    28.     var v = this.attachMovie("5","5"+i,1+i);
    29.     v.angle =((Math.PI*2)/numOfItems) * i;
    30.     v.onEnterFrame = mover;
    31.    
    32.     var w = this.attachMovie("6","6"+i,1+i);
    33.     w.angle =((Math.PI*2)/numOfItems) * i;
    34.     w.onEnterFrame = mover;
    35. }
    36.  
    37. function mover()
    38. {
    39.     this._x = Math.cos (this.angle) * radiusX + centerX;
    40.     this._y = Math.sin (this.angle) * radiusY + centerY;
    41.     var s:Number = this._y / (centerY+radiusY);
    42.     this._xscale = this._yscale = s * 100
    43.     this.angle += this._parent.speed;
    44.     this.swapDepths(Math.round(this._xscale) + 100);
    45. }
    46.  
    47.  
    48. this.onMouseMove = function()
    49. {
    50.     speed = (this._xmouse-centerX)/8000;
    51. }
    52.  
    53.  
    grüße Modnass
     
    #7      
  8. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Math.Pi
    AW: Math.Pi

    ja sicher, weil du bei jedem Schleifendurchlauf
    Code (Text):
    1.  
    2. for (var i=0;i<numOfItems;i++)
    3. {
    4.     var t = this.attachMovie("1","1"+i,1+i);
    5.     t.angle = i * ((Math.PI*2)/numOfItems);
    6.     t.onEnterFrame = mover;
    7.    
    8.     var r = this.attachMovie("2","2"+i,1+i);
    9.     r.angle =((Math.PI*2)/numOfItems) * i;
    10.     r.onEnterFrame = mover;
    11.    
    12.     var q = this.attachMovie("3","3"+i,1+i);
    13.     q.angle =((Math.PI*2)/numOfItems) * i;
    14.     q.onEnterFrame = mover;
    15.    
    16.     var u = this.attachMovie("4","4"+i,1+i);
    17.     u.angle =((Math.PI*2)/numOfItems) * i;
    18.     u.onEnterFrame = mover;
    19.    
    20.     var v = this.attachMovie("5","5"+i,1+i);
    21.     v.angle =((Math.PI*2)/numOfItems) * i;
    22.     v.onEnterFrame = mover;
    23.    
    24.     var w = this.attachMovie("6","6"+i,1+i);
    25.     w.angle =((Math.PI*2)/numOfItems) * i;
    26.     w.onEnterFrame = mover;
    27.  
    } 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 (Text):
    1.  
    2.   for (var i=1;i<=numOfItems;i++){
    3.   var clip:MovieClip = this.attachMovie(String(i),String(i),i);
    4.   clip.angle =((Math.PI*2)/numOfItems) * i;
    5.   clip.onEnterFrame = mover;
    6. }
    7.  
    Das ist allerdings kein guter Stil als Instanznamen und Bezeichner eine blosse Ziffer zu benutzen.
     
    Zuletzt bearbeitet: 08.01.2010
    #8      
  9. 4uwak

    4uwak WEB?ViDEO?FOTO and more

    Dabei seit:
    16.11.2008
    Beiträge:
    349
    Geschlecht:
    männlich
    Software:
    mehr als 10% des Gehirns und Adobe Master Collection
    Kameratyp:
    Sony DSC-H5
    Math.Pi
    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 (Text):
    1.  
    2. var numOfItems:Number = 6;
    3. var radiusX:Number = 150;
    4. var radiusY:Number = 25;
    5. var centerX:Number = Stage.width/2;
    6. var centerY:Number = Stage.height/2;
    7. var speed:Number = 0.05;
    8.  
    9.  
    10. var r = this.attachMovie("mc2","mc2",1);
    11. r.angle =((Math.PI*2)/numOfItems)*1;
    12. r.onEnterFrame = mover;
    13.  
    14. var t = this.attachMovie("mc1","mc1",2);
    15. t.angle =((Math.PI*2)/numOfItems)*2;
    16. t.onEnterFrame = mover;
    17.  
    18. var q = this.attachMovie("mc3","mc3",3);
    19. q.angle =((Math.PI*2)/numOfItems)*3;
    20. q.onEnterFrame = mover;
    21.  
    22. var u = this.attachMovie("mc4","mc4",4);
    23. u.angle =((Math.PI*2)/numOfItems)*4;
    24. u.onEnterFrame = mover;
    25.  
    26. var v = this.attachMovie("mc5","mc5",5);
    27. v.angle =((Math.PI*2)/numOfItems)*5;
    28. v.onEnterFrame = mover;
    29.  
    30. var w = this.attachMovie("mc6","mc6",6);
    31. w.angle =((Math.PI*2)/numOfItems)*6;
    32. w.onEnterFrame = mover;
    33.  
    34. function mover()
    35. {
    36. this._x = Math.cos (this.angle) * radiusX + centerX;
    37. this._y = Math.sin (this.angle) * radiusY + centerY;
    38. var s:Number = this._y / (centerY+radiusY);
    39. this._xscale = this._yscale = s * 100
    40. this.angle += this._parent.speed;
    41. this.swapDepths(Math.round(this._xscale) + 100);
    42. }
    43.  
    44.  
    45. this.onMouseMove = function()
    46. {
    47. speed = (this._xmouse-centerX)/8000;
    48. }
    49.  
     
    #9      
  10. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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 ;)
     
    #10      
  11. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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 (Text):
    1.  
    2. [I]onEnterFrame = function ()
    3. {[/I]
    4. [I]     if ((_root._xmouse + predX) >= Stage.width
    5.     || (_root._ymouse + predY) >= Stage.height ? 10
    6.     || _root._xmouse + predX < = 0
    7.     || _root._ymouse + predY <= 0)
    8.     {
    9.         trace("Maus hat die Stage verlassen!");
    10.         predX = 0;
    11.         predY = 0;
    12.         offStage = true;
    13.     }
    14. };
    15. [/I]
    Da ich mich noch nicht besonders gut mit AS auskenne dachte ich darüber nach eine Funktion einzufügen, die wenn
    Code (Text):
    1.  
    2. offStage = true;
    3.  
    meine frühere
    Code (Text):
    1.  
    2. var speed:Number = 0.01
    3.  
    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 ;)
     
    #11      
  12. 4uwak

    4uwak WEB?ViDEO?FOTO and more

    Dabei seit:
    16.11.2008
    Beiträge:
    349
    Geschlecht:
    männlich
    Software:
    mehr als 10% des Gehirns und Adobe Master Collection
    Kameratyp:
    Sony DSC-H5
    Math.Pi
    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 (Text):
    1.  
    2. var numOfItems:Number = 6;
    3. var radiusX:Number = 200;
    4. var radiusY:Number = 25;
    5. var centerX:Number = Stage.width/2;
    6. var centerY:Number = Stage.height/2;
    7. var speed:Number = 0.05;
    8. //////////////////////////////////////////////
    9. this.createEmptyMovieClip("stage", 1);
    10. with(stage) {
    11.     lineStyle(1, 0xFF0000, 100);
    12.     beginFill(0x000000);
    13.     moveTo(0, 0);
    14.     lineTo(Stage.width,0);
    15.     lineTo(Stage.width, Stage.height);
    16.     lineTo(0, Stage.height);
    17.     lineTo(0, 0);
    18.     endFill();
    19. }
    20. k = 8000;
    21. stage._alpha=0;
    22.  
    23. stage.onRollOver=function(){
    24.     delete this.onEnterFrame
    25.     k=8000;
    26.     };
    27. stage.onRollOut=function(){
    28.     this.onEnterFrame=function(){
    29.         k = k + 1000;
    30.         speed = (this._xmouse-centerX)/k;
    31.         if (k == 80000){
    32.             delete this.onEnterFrame
    33.             }
    34.         }
    35.     };
    36. //////////////////////////////////////////////
    37.  
    38. for (i=0;i<numOfItems;i++){
    39.     _root.attachMovie("mc"+(i+1),"mc"+i,10+i);
    40.     _root["mc"+i].angle =((Math.PI*2)/numOfItems)*i;
    41.     _root["mc"+i].onEnterFrame = mover;
    42.     }
    43.  
    44. function mover()
    45. {
    46. this._x = Math.cos (this.angle) * radiusX + centerX;
    47. this._y = Math.sin (this.angle) * radiusY + centerY;
    48. var s:Number = this._y / (centerY+radiusY);
    49. this._xscale = this._yscale = s * 100
    50. this.angle += this._parent.speed;
    51. this.swapDepths(Math.round(this._xscale) + 100);
    52. }
    53.  
    54.  
    55. this.onMouseMove = function()
    56. {
    57. speed = (this._xmouse-centerX)/k;
    58. }
    59.  
     
    Zuletzt bearbeitet: 08.01.2010
    #12      
  13. Modnass

    Modnass Nicht mehr ganz neu hier

    1
    Dabei seit:
    02.12.2008
    Beiträge:
    190
    Geschlecht:
    männlich
    Software:
    Adobe Creative Suite CS4
    Math.Pi
    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
     
    #13      
x
×
×