Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Gesire la rotazione di un oggetto tramite as3: dov'è che sbaglio?

    Ho fatto prove su prove, superando anche i confini delle mie conoscenze matematiche, ma ora non mi torna una cosa quando mando il progetto in esecuzione:

    http://digilander.libero.it/American_horizon/rotaz2.swf
    source FLA: http://digilander.libero.it/American_horizon/rotaz2.fla

    come potete vedere, ogni volta che clicco sulla forma, essa torna al grado di rotazione 0 e nn riesco a spiegarmi il motivo

    il codice as3 ovviamente lo trovate nel FLA, ma comunque ve lo incollo anche qui:

    -------------------------------------
    var distanzaX:Number;
    var distanzaY:Number;
    var radianti:Number;
    var sup:Number;

    rett.addEventListener(MouseEvent.MOUSE_DOWN, function()
    {
    distanzaX=mouseX-rett.x;
    distanzaY=mouseY-rett.y;
    radianti=Math.atan2(distanzaY,distanzaX);
    sup=(radianti/Math.PI)*180;
    trace(sup)
    rett.addEventListener(Event.ENTER_FRAME, ruota)
    })


    function ruota(e:Event):void
    {
    distanzaX=mouseX-rett.x;
    distanzaY=mouseY-rett.y;
    radianti=Math.atan2(distanzaY,distanzaX);
    rett.rotation=(radianti/Math.PI)*180-sup;

    }


    stage.addEventListener(MouseEvent.MOUSE_UP, function()
    {rett.removeEventListener(Event.ENTER_FRAME, ruota)})

  2. #2
    ci sono le tween per fare queste cose, quella nativa adobe funziona una cosa tipo così

    new Tween(clip, "rotation", 0, 180, Regular.easeOut, 1, true)

    Da lanciare una sola volta, non la devi fare al frame.
    Non mi ricordo se ho usato la classe correttamente ma dovrebbe fa ruotare l'istanza "clip" da 0 a 180 gradi, con il moto Regular.easeOut, in un secondo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    cioè, clicchi sul mc e me lo passa in automatico dal grado 0 a 180?? ma non è proprio l'effetto che voglioei io... cioè, io voglio gstire la rotazione in tempo reale muovendo il moise, prova a vedere l'sfw d'esempio... funziona tranne per il fatto che cliccando sul mc esso ritorna nella posizione rotation 0

  4. #4
    Scusa, non avevo capito.

    Credo, ma non sono sicuro, che ti basta sommare al risultato l'attuale rotazione del clip.

    Tipo

    rett.rotation=(radianti/Math.PI)*180-sup+rett.rotation

    che si può scrivere anche così

    rett.rotation+=(radianti/Math.PI)*180-sup

    Prova a vedere che effetto fa.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    hai ragione, funziona!! ho aggiunto una variabile sup2 e il codice è il seguente

    var distanzaX:Number;
    var distanzaY:Number;
    var radianti:Number;
    var sup:Number;
    var sup2:Number;

    rett.addEventListener(MouseEvent.MOUSE_DOWN, function()
    {
    distanzaX=mouseX-rett.x;
    distanzaY=mouseY-rett.y;
    radianti=Math.atan2(distanzaY,distanzaX);
    sup=(radianti/Math.PI)*180;
    sup2=rett.rotation;
    rett.addEventListener(Event.ENTER_FRAME, ruota)
    })


    function ruota(e:Event):void
    {
    distanzaX=mouseX-rett.x;
    distanzaY=mouseY-rett.y;
    radianti=Math.atan2(distanzaY,distanzaX);

    rett.rotation=(radianti/Math.PI)*180-sup+sup2;
    testo.text=String(rett.rotation)
    }


    stage.addEventListener(MouseEvent.MOUSE_UP, function()
    {rett.removeEventListener(Event.ENTER_FRAME, ruota)})

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.