• User

    Perchè questo ActionScript 1.0 non funziona con il 2.0??

    ciao,
    stavo seguendo una guida per creare un particolare elemento. La sua funzione praticamente è che quando clicco sull'elemento questo si sposta simulando un movimento molleggiato.
    Io vorrei riprodurre questo movimento e quindi ho iniziato a rifare il fla come da guida. Una volto finito però questo non funziona, allora ho decompilato l'esempio e salvato come actionscript 1.0 e funziona, se poi risalvo lo stesso file fla per flash 8 non funziona ancora..

    in pratica il codice è

    onClipEvent (load) {
    inizio = _parent._x;
    }
     onClipEvent (mouseDown) {
     if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
     if (!aperto) {
    _parent.fine = 320;
    }  else {
    _parent.fine = inizio;
    }
    aperto = !aperto;
    }
    }
    ```e
    

    onClipEvent (load) {
    fine = _x;
    accellerazione = 1.8;
    inerzia = 1.5;
    }
    onClipEvent (enterFrame) {
    inizio = _x;
    spostamento = (spostamento+(fine-inizio)/accellerazione)/inerzia;
    _x += spostamento;
    }

    
    qualcuno sa indicarmi una possibile spiegazione??
    grazie :D

  • User

    ho provato ad adattare lo spript a 2.0 ma ho notato che salvandolo come action script 2.0 funziona, mentre salvandolo da flash player 6 al 8 non funziona +.

    come posso fare?? grazie


  • Super User

    Ciao,

    tanto per iniziare sarebbe da dichiarare tutte le variabile con il data type giusto. In as1, flash lo faceva automaticamente da solo, non succede piu in as2/flash8.

    Esempio:
    invece di inizio = _parent._x;
    var inizio:Number= _parent._x;

    Meglio anche dichiarle tutte prima tipo var inizio:Number; nel primo fotogramma del filmato.


  • User

    si ho già provato.. in questo modo:

    onClipEvent (load)
    {
    var fine:Number;
    var accellerazione:Number;
    var inerzia:Number;
    var spostamento:Number;
    
        getURL("FSCommand:allowscale", false);
        fine = _x;
        accellerazione = 1.800000;
        inerzia = 1.500000;
    }
    onClipEvent (enterFrame)
    {
        inizio = _x;
        spostamento = (spostamento + (fine - inizio) / accellerazione) / inerzia;
        _x = _x + spostamento;
    }
    
    
    onClipEvent (load)
    {
        var inizio:Number;
        var aperto:Boolean;
        inizio = _parent._x;
    }
    onClipEvent (mouseDown)
    {
        if (this.hitTest(_root._xmouse, _root._ymouse, false))
        {
            if (!aperto)
            {
                _parent.fine = 20;
            }
            else
            {
                _parent.fine = inizio;
            } // end if
            aperto = !aperto;
        } // end if
    }
    
    

    ma niente :rollo:


  • Super User

    Le var devono essere dichiarate al di fuori del onClipEvent.

    Se non va allega il fla di base. Ci provero piu tardi.;)


  • User

    ci ho provato ma niente..
    purtroppo è tanto che nn usavo flash e anche prima non è che avessi tutta questa familiarità :quote::quote:

    cmq allego il file, grazie ancora. Ora è messo come action script 2 e con flash player 7 e nn va.. se lascio actionscript 2 ma flash 6 invece funziona


  • Super User

    Quello è un fla decompilato???

    Puoi fare vedere l'esempio originale per capire che dovrebbe attualmente fare quella freccia?:?


  • User

    si è un fla decompilato e che poi ho sistemato.. ho allegato il file iniziale 😄


  • Super User

    Ciao,

    non mi sono scordata di te ma sinceramente sarebbe piu facile rifare il tutto. Questo tipo di script sono ormai datati. Potrebbe raggiungere lo stesso effetto con qualche righe di as usando per esempio una classe tipo tween.


  • User

    ah ok!
    avevo trovato quella classe dopo aver postato qua ma non ero riuscito a trovare nulla che mi soddisfacesse. Ovvero alla fine il risultato mi sembrava migliore con il metodo "vecchio"

    ora leggo un pò e ci provo se mai chiedo ancora aiuto.
    grzie :ciauz: