1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Glücksrad / Rotation / Bewegung

Dieses Thema im Forum "Flash Plattform" wurde erstellt von dr-nuker, 30. Oktober 2004.

  1. dr-nuker

    dr-nuker Grünschnabel

    hallo,
    ich habe ein großes Problem beim bauen eines kleinen spiel für miene Website...

    und zwar habe ich ein Glücksrad gebaut, das kann man per Klick drehen lassen

    Code (Text):
    1.     function dreh() {      
    2.                                  rot +=4;
    3.             if (rot>=360) {
    4.             rot -= 360;
    5.             }
    6.         coin._rotation = rot;
    7.     }
    8. var rot = 0;
    9. stop();
    ein Klick auf einen Button aktiviert dreh(), und das Objekt, das sich dreht heißt coin, nun dreht es sich aber immer nur um 4, wie kann ich denn bitte das rad dazu bringen es ein paar Runden drehen zu lassen und dann langsamer werden zu lassen, bis es stoppt (auf einem Fled, das auf dem rad markiert ist) und man erneut drehen kann ;)

    google hab ich schon genutzt und die suche hier auch (!)

    habe das mal so versucht: (geht aber nicht!)
    Code (Text):
    1.     function dreh() {
    2.         for(var i=1; i<1000;i++) {
    3.         rot +=4;
    4.             if (rot>=360) {
    5.             rot -= 360;
    6.             }
    7.         coin._rotation = rot;
    8.         }
    9.     }
    10. var rot = 0;
    11. stop();
    schonmal tausend dank im voraus
  2. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Re: schleife? großes problem :(

    Hi,

    im Anhang findest Du ein kleines Beispiel (ich hoffe, so hattest Du es in etwa gemeint).

    Gruß

    .

    Anhänge:

  3. dr-nuker

    dr-nuker Grünschnabel

    Re: schleife? großes problem :(

    leider kann ich die .fla datei nicht öffnen :(
    (habe nur flash MX)

    naja und die swf, da tut sich nichts :(
    aber vom "design" ist meins auch so, aber wie kann ich denn flächen auf dme rad definieren? die ich über php ansteuern kann?

    so halt so laufen, dass man start klickt und das ne Zeit läuft, dann lost php unterdessen ein Feld aus und das rad soll dann langsamer werden und auf dem gewählten Feld stoppen :-(
  4. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Re: schleife? großes problem :(

    Hi,

    anbei noch mal als MX.

    Zum "Auslosen": Ich würde wahrscheinlich auch Flash das Auslosen übernehmen lassen. Du könntest allerdings vor jedem Zug ein PHP-Script aufrufen, das eine "zufällige" Startgeschwindigkeit berechnet und zurückgibt - und diese in Flash für die Rotation verwenden (die Variable "speed" bestimmt bei meinem Beispiel ja die Startgeschwindigkeit).

    Gruß

    .

    Anhänge:

  5. dr-nuker

    dr-nuker Grünschnabel

    Re: schleife? großes problem :(

    danke, das ist schonmal geil :D

    aber wie kann ich denn checken, wo das rad steht?
    also man stelle sich mal vor:

    man hat ein Rad das wird via button gedreht, dann stoppt es und zwar auf einem feld (da solle in zeiger außen vor), nur wie finde ich denn raus welcher til des rades unter dem zeiger liegt? wie kann ich das rad aufteilen? oder muss ich das mit Grad berechnen, also

    wenn um 90° gedreht muss es das und das feld sein?

    oder kann ich dir mal die datei zusenden? hier zu zeigen ist mir peinlich, weils ziemlich schlecht aussieht :(
  6. Jens B.

    Jens B. Damn good coffee!

    Re: schleife? großes problem :(

    Hallo!

    Bitte halte dich bzgl. der durchgehenden Kleinschreibung an die Nettiquette.

    Grüsse,
    Jens
  7. dr-nuker

    dr-nuker Grünschnabel

    Re: schleife? großes problem :(

    Sorry tut mir leid!

    Ich werde versuchen mich beim nächsten Mal besser zu artikulieren (hinsichtlich der Groß - und Kleinschreibung), bin einfach zu sehr in PhP "eingegliedert"
  8. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Re: schleife? großes problem :(

    Hi,

    Also: Im Prinzip musst Du ja nur den Winkel (hier die Variable "rot") nach dem Stillstand des Rades überprüfen (und ggf. durch 360 teilen). Je nachdem, in welchem Bereich sich diese Variable befindet, bekommst Du z.B. eine Gewinnsumme, z.B.:

    000 - 060° : 200 Euro
    060 - 120° : 350 Euro
    120 - 180° : Verloren :)
    180 - 240° : Sonderpreis
    240 - 300° : 400 Euro
    300 - 360° : 50 Euro

    na ja, so was in der Art. ;)

    Gruß
    .
  9. XRayNights

    XRayNights Grünschnabel

    Super Flash File - da ich noch ein absoluter Neuling und in der Lernphase bin, könntest du bitte dein Bsp von oben noch in kleinen Teilen um die Abfrage der Variable "Rot" erweitern. Ein Feld sollte dann als Aktion eine kurze Textausgabe "Verloren" ergeben, einmal mir einem gotoFrame Befehl und eventuell einmal mit einem getURL Ergebnis. Nur mal so zum lernen wie das ganze gehen würde.

    DANKE :)
  10. XRayNights

    XRayNights Grünschnabel

    @dr-nuker: Falls du auch noch am probieren bist - vielleicht hilft dir dieses Stückchen Code schonmal weiter um das Rad "zufällig" eine bestimmte Anzahl von Runden drehen zu lassen - lasse einfach die Variable "spd" in Datics Bsp wiefolgt jedesmal zufällig berechnen:

    var spd:Number = 8 + Math.floor(Math.random() * (20 - 8 + 1));

    Wobei du die Zahlen natürlich anpassen kannst - in meinem Beispiel kommt eine Zahl zwischen 8 und 20 heraus. Du musst dann nur an zwei stellen die 8 und an einer die 20 austauschen, wenn du andere Werte willst.

    :)

    Leider bin ich mit dem auslesen der Ergebniswerte und der Aktion bei Status x für die Variable rot immer noch nicht weiter
  11. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Hi,

    worum geht es Dir genau? Um den Vergleich der Endposition des Rades mit den vordefinierten Bereichen? Z.B. so:
    PHP:
    1.  
    2. // in der onEnterFrame:
    3. if (Math.abs(spd) < 0.5) {
    4.     var win = checkPos();
    5.     delete this.onEnterFrame;
    6. }
    7. // Zum Überprüfen:
    8. function checkPos() {
    9.     var r = gluecksrad._rotation;
    10.     return Math.floor(r / 60);
    11. }
    Damit bekommst Du für jeden Bereich von 60 Grad eine Ganzzahl von 0 - 5 geliefert, die Du auf die Gewinne verteilen kannst.

    Gruß

    .
  12. KICK

    KICK Grünschnabel

  13. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    HI,

    Du musst dafür nicht gleich zwei Beiträge in beiden Threads erstellen.

    Wie auch immer:
    PHP:
    1.  
    2. var speed = 16; // <- Weise ihr zunächst irgend einen Wert zu.
    3. var dec = 0.2;
    4.  
    5. var lv = new LoadVars();
    6. lv.onLoad = function() {
    7.     speed = this.speed;
    8. }
    9. lv.load("wasauchimmer.php");
    10.  
    11. function dreh() {
    12.     var rot = rad._rotation;
    13.     var spd = speed;
    14.     this.onEnterFrame = function() {
    15.         rot += spd;
    16.         rad._rotation = rot;
    17.         spd -= dec;
    18.         if (spd<0.1) {
    19.             delete this.onEnterFrame;
    20.         }
    21.     }
    22. }
    so sollte das gehen.

    Gruß
    .
  14. KICK

    KICK Grünschnabel

    Hallo,

    danke erstmal für deine Antwort! Funktioniert leider nicht. Die Variable Speed wird auserhalb von...
    Code (Text):
    1. lv.onLoad = function() {
    2.     speed = this.speed;
    3. }
    ...nicht erkannt. Klickt man aufs Rad, macht es einen kurzen Ruck und das wars.

    Folgender Code sollte doch klappen (Das Php File existiert auf dem angegebenen Host!):

    Code (Text):
    1. var speed = 16; // <- Weise ihr zunächst irgend einen Wert zu.
    2. var dec = 0.2;
    3.  
    4. var lv = new LoadVars();
    5. lv.onLoad = function() {
    6.     speed = this.speed;
    7. }
    8. lv.load("http://www.sendestudio.at/rad.php");
    9.  
    10. function dreh() {
    11.     var rot = rad._rotation;
    12.     var spd = speed;
    13.     this.onEnterFrame = function() {
    14.         rot += spd;
    15.         rad._rotation = rot;
    16.         spd -= dec;
    17.         if (spd<0.1) {
    18.             delete this.onEnterFrame;
    19.         }
    20.     }
    21. }
    Noch irgendeine Idee?

    Im anderen Thread gings eigentlich generell um globale Variablen, welche ich ja hier beim Rad auch benötige.

    Gruß
  15. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Es existiert aber schon auf der selben Domain, oder? Andernfalls musst Du mit Richtliniendateien arbeiten, um Zugriff über LoadVars zu bekommen.

    Der Code ansich funktioniert bei mir.

    Was gibt
    PHP:
    1.  
    2. lv.onLoad = function() {
    3.    trace(this.speed);
    4. }
    aus? Und hier:
    PHP:
    1.  
    2. function dreh() {
    3.     trace(speed);
    4.     var rot = rad._rotation;
    5.     var spd = speed;
    ?

    Ich bin in diesem Beispiel davon ausgegangen, dass das PHP-Script etwas wie speed=12 ausgibt. Poste ansonsten einmal den Quelltext bzw. die Ausgabe des Scriptes.

    Gruß
    .
  16. KICK

    KICK Grünschnabel

    Hi,

    ja *.swf und *.php liegen auf der selben Domain.

    PHP: http://www.sendestudio.at/rad.php
    SWF: http://www.sendestudio.at/rad.swf

    Ob PHP nun 12 oder 23.3 ausgibt sollte doch letztlich keinen Unterschied machen, aber zur Sicherheit gibt das PHP File jetzt 12 aus und es funktioniert leider trozdem nicht.

    Jetzt zum seltsamen teil... :)

    Sowohl
    Code (Text):
    1. lv.onLoad = function() {
    2.    trace(this.speed);
    3. }
    als auch
    Code (Text):
    1. function dreh() {
    2.     trace(speed);
    3.     var rot = rad._rotation;
    4.     var spd = speed;
    gibt den korrekten Speed Wert aus dem PHP File (Jetzt also 12) aus. Trozdem macht das Rad nur einen kurzen Ruck.
  17. Tobias Menzel

    Tobias Menzel Erfahrenes Mitglied

    Oh Mann, was bin ich blöd! ^^

    Es muss selbstverständlich:
    PHP:
    1.  
    2. lv.onLoad = function() {
    3.    speed = parseInt(this.speed, 10);
    4. }
    lauten (oder etwas entsprechendes per Number() ).

    Eingelesene Variablen liegen als Strings vor und müssen vor Rechenoperationen in numerische Typen gecastet werden.

    Gruß
    .
  18. KICK

    KICK Grünschnabel

    Juhuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    Es funktioniert :)

    Ich war schon echt am Verzweifeln. 100000 Dank für deine Hilfe!
  19. Harrung

    Harrung Gast

    Moin,

    ich habe für meinen Pizza-Service eine Homepage gebaut und würde gerne als kleines Schmankerl ein Glücksrad in Form einer Pizza mit einbauen (Flash?).

    Jeder darf drei Mal drehen pro IP/Std. Gewinner tragen Ihre Daten in ein Formular und bekommen eine Gratispizza nach Wunsch.

    Jetzt bin ich auf dieses Script gestoßen... Ist das nochirgenwo zu haben?

    Bitte um Hilfe...

    Besten Dank!

    Harrung

Diese Seite empfehlen