Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    creare rotazione lancetta

    Salve a tutti. Premetto che di actionscript ne so poco o nulla, ma a quanto pare dovrò utilizzarlo per risolvere un problema relativo a un esperimento scientifico che devo costruire.

    Ho bisogno di creare un orologio con solo la lancetta dei secondi che ruota continuamente compiendo un giro completo d'orologio ogni 2560 millisecondi (quindi ogni 2,56 secondi). Detto in altre parole, ogni minuto dell'orologio durerà 42,7 millisecondi. Ora, ho creato il quadrante e la lancetta (la parte più facile del lavoro) ma non saprei come impostare il codice in modo da far ruotare la lancetta. Ho dato un'occhiata ai codici relativi alla creazione di un orologio standard, ma non saprei come trasportare quei codici nel mio caso.

    Qualcuno potrebbe aiutarmi?

  2. #2
    ma scusa se prendi un qualsiasi cod. di un orologio standard e ci vai a modificare i valori....
    tipo la durata del giro della lancetta....

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  3. #3
    Si ma proprio per il fatto che non ho mai utilizzato actionscript, non saprei come cambiare i valori in modo da ottenere il risultato. Ad esempio ho trovato questo:

    codice:
    _root.onEnterFrame=function(){ clock=new Date; ora._rotation=clock.getHours()*30+(clock.getMinutes()/2); min._rotation=clock.getMinutes()*6+(clock.getSeconds()/10); sec._rotation=clock.getSeconds()*6; }
    Ma come faccio a creare un giro completo di 2560 millisecondi?

  4. #4
    beh a volo ...

    la lancetta fa un giro in 2,56 sec .....

    la cosa + semplice che mi viene in mente usare le tween.... supponendo che hai il clip sullo stage con istanza lancetta

    import mx.transitions.Tween;
    import mx.transitions.easing.Regular;

    var ___TWEEN___:Tween = new Tween(lancetta, "_rotation", Regular.easeIn,0,360, 2.56, true);


    poi ovviamente dovresti far ripetere questa azione per ottenere quello che vuoi
    ciao
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  5. #5
    eh ...voglio sbariare un attimo

    sullo stage il clip lancetta e casella di testo dinamica con var associata giri

    sul frame questo

    giri=0;
    function gira(){
    var ___TWEEN___:Tween = new Tween(lancetta, "_rotation", Regular.easeOut,0,360, 2.56, true);
    var tweenListener:Object = new Object();
    tweenListener.onMotionFinished = function():Void {
    trace("finito");
    giri++;
    gira()
    };
    ___TWEEN___.addListener(tweenListener);
    }
    gira()



    ps ci sono sicuramente anche altri metodi ...ma questo mi viene in mente adesso
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  6. #6
    sullo stage il clip lancetta e casella di testo dinamica con var associata giri

    sul frame questo
    Ti ringrazio crescenzo. Purtroppo però la mia assoluta mancanza di conoscenza di MFP mi crea molte difficoltà. Il codice che mi hai inserito la seconda volta devo copiarlo selezionando la lancetta e andando in actions? Lo so, è un problema mio...

  7. #7
    no
    hai la lancetta sullo stage....
    sul frame del filmato principale ci metti il cod
    ovviamente anche l'importazioni delle classi

    import mx.transitions.Tween;
    import mx.transitions.easing.Regular;


    quindi sul frame del filmato hai questo

    import mx.transitions.Tween;
    import mx.transitions.easing.Regular;

    giri=0;
    function gira(){
    var ___TWEEN___:Tween = new Tween(lancetta, "_rotation", Regular.easeOut,0,360, 2.56, true);
    var tweenListener:Object = new Object();
    tweenListener.onMotionFinished = function():Void {
    trace("finito");
    giri++;
    gira()
    };
    ___TWEEN___.addListener(tweenListener);
    }
    gira()

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  8. #8
    Allora, alla fine ho risolto con questo codice.

    codice:
    onClipEvent(keyDown){ secondTime = 2560; startTime = getTimer(); } onClipEvent(enterFrame){ elapsed = (getTimer() - startTime) % secondTime; this._rotation = 360 * (elapsed/secondTime); }
    Tuttavia avrei bisogno di un aiuto. La mia rotazione deve durare 2560 ms, tuttavia ho notato che c'è sempre qualche millisecondo in più. C'è un modo per aggiungere a questo codice una sorta di "forzatura del tempo"? Cioè, vorrei che il mio file .swf duri 2560 ms, cioè che faccia un'unica rotazione e poi si fermi. Non importa se la lancetta si bloccherà un po' prima dello zero, poi ci penserò io a inserire un loop con un altro programma.

  9. #9
    quindi deve fare solo un giro?
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

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.