Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    49

    grosso problema con 2 variabili...

    allora, praticamente ho un movie strutturato cosi:
    c'è questa cassaforte, con 4 frame: al primo è kiusa, al secondo ha 1 chiave inserita, al terzo ha 2 chiavi inserite e al 4 è aperta, poi ci sono le due chiavi, che hanno un drag & drop fatto in modo che toccando un oggetto invisibile sulla cassaforte fanno scattare il clip al frame 2 e 3 e attivano 2 variabili:
    _global.chiave1inserita=1
    _global.chiave2inserita=1

    poi sul pulsante per aprire la cassaforte c'è questo script:

    on (release) {
    if (_global.chiave1inserita==1 and
    _global.chiave2inserita==1)
    {_root.cassaforteimg.gotoAndStop(4);}
    }

    e poi vari controlli per cui se una variabile è attiva, la cassaforte si fa trovare al frame 2 o 3 al cambio di scena.

    Il problema ora è che cliccando sul pulsante la cassaforte va al frame 4 ma torna immediatamente al 3.......come mai succede questo?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    allora..
    Lo script che hai postato non è sufficiente a determinare il problema dato.

    e poi vari controlli per cui se una variabile è attiva, la cassaforte si fa trovare al frame 2 o 3
    Sarà in questi controlli il problema? :master:
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    49
    ok allora li posto, dunque:

    gli oggetti sono la cassaforte movieclip, l'oggetto invisibile in cui entrano le 2 chiavi e il pusante per aprire, li script sono:

    sul pulsante:

    on (release) {
    if (_global.chiave1inserita==1 and
    _global.chiave2inserita==1)
    {_root.cassaforteimg.gotoAndStop(4);}
    }

    sulla cassaforte movieclip:

    onClipEvent (enterFrame) {
    if (_global.chiave1inserita==1) {
    this.gotoAndStop(2);}
    }
    onClipEvent (enterFrame) {
    if (_global.chiave2inserita==1) {
    this.gotoAndStop(3);}
    }

    sul livello delle azioni:

    _root.chiave1inv.onPress = function(){
    this.startDrag(false, 0, 0, 800, 600);
    this.onMouseMove = function() {
    updateAfterEvent();
    }
    }
    _root.chiave1inv.onRelease = function() {
    stopDrag();
    };

    _root.chiave1inv.onEnterFrame = function() {
    if(this.hitTest(_root.cassaforte)) {
    this._visible=false;
    _global.chiave1inserita=1;
    _root.cassaforteimg.gotoAndStop(2);
    }};

    if (_global.chiave1inserita==1) {
    _root.chiave1inv._visible=false;

    }

    _root.chiave2inv.onPress = function(){
    this.startDrag(false, 0, 0, 800, 600);
    this.onMouseMove = function() {
    updateAfterEvent();
    }
    }
    _root.chiave2inv.onRelease = function() {
    stopDrag();
    };

    _root.chiave2inv.onEnterFrame = function() {
    if(this.hitTest(_root.cassaforte)) {
    this._visible=false;
    _global.chiave2inserita=1;
    _root.cassaforteimg.gotoAndStop(3);
    }};

    if (_global.chiave2inserita==1) {
    _root.chiave2inv._visible=false;

    }

    le variabili _global.chiave1e2inserita sono quelle che fanno passare il movieclip ai frame, cassaforteimg sarebbe il movieclip, cassaforte è l'oggetto invisibile.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Trovo il tuo sistema un po' confusionario.

    A parte questo dovresti eliminare tutti gli eventi enterframe quando questi non servono più.
    Infatti è proprio lì che vieve richiamato il gotoAndStop in maniera ripetitiva.

    Puoi fare ad esempio così:
    codice:
    _root.chiave1inv.onEnterFrame = function() {
    if(this.hitTest(_root.cassaforte)) {
    this._visible=false;
    _global.chiave1inserita=1;
    _root.cassaforteimg.gotoAndStop(2);
    
    delete this.onEnterFrame 
    
    }};
    Fallo anche per gli altri eventi onEnterFrame.



    PS: quando posti del codice inseriscilo tra gli appositi tag [ code][ /code] oppure [ php][ /php].
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    49
    ok ma quel pezzo di codice dove dovrei metterlo?e al posto di cosa? xkè ho degli Enter Frame sia sul livello azione che sul movieclip...


    edit: ho cancellato il codice sul movieclip e ho sostituito i pezzi nel livello azioni, ora funziona, ma visto che sto riscontrando un po di problemi e vedo che nei blocchi che mi consigliate voi ci sono sempre queste function, mi spiegheresti in poche parole a cosa servono e in cosa consistono?

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    , ma visto che sto riscontrando un po di problemi e vedo che nei blocchi che mi consigliate voi ci sono sempre queste function, mi spiegheresti in poche parole a cosa servono e in cosa consistono?
    Vuoi sapere cosa è una funzione?

    Non è altro che un blocco di script che puoi richiamare da diversi punti della tua applicazione e quante volte vuoi.

    Le funzioni sono importantissime nella creazione di applicazione create con qualsiasi codice di programmazione.

    Ad esempio in VisualBasic si chiamano SubRoutine o Procedure

    L'uso delle funzioni serve principalmente a snellire la struttura del codice e in certi casi sono indispensabili.

    Qui trovi una definizione generale:
    http://it.wikipedia.org/wiki/Subroutine

    Mentre qui qualche nozione in più sulle funzioni in ActionScript:
    http://flash.html.it/guide/lezione/2843/le-funzioni/

    Buona lettura
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    49
    credo di aver capito, ma praticamente l'argomento è la parola che serve per richiamarle quando voglio?

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    No.

    Per richiamare una funzione, in flash 8, basta indicare il nome della funzione e le parentesi tonde.
    All'interno delle parentesi puoi specificare degli argomenti (o parametri della funzione), che solitamente sono delle variabili.

    Ad esempio dichiaro una funzione nella _root:

    Codice PHP:
    _root.miaFunzione = function(argomento1argomento2) {
       
    trace("nome: "+argomento1+", anni: "+argomento2)

    In qualsiasi punto del mio filmato potrò richiamare tale funzione e passargli dei valori per gli argomenti.
    Codice PHP:
    _root.miaFunzione("Maria"20// sull'output verrà restituito "nome: Maria, anni: 20"
    _root.miaFunzione("Giovanni"32// sull'output verrà restituito "nome: Giovanni, anni: 32"
    _root.miaFunzione("Pippo""ND"// sull'output verrà restituito "nome: Pippo, anni: ND" 
    Ovviamente in questa funzione viene compiuto un semplicissimo trace dei due argomenti, ma immagina uno script complesso in cui molti blocchi di codice devono essere ripetuti svariate volte, sarebbe difficile da gestire se non si utilizzassero delle funzioni.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    49
    ah ok, il concetto è chiaro, ma ancora non riesco a inquadrarne bene l'utilizzo, sarà la mia niubbaggine ancora alta ^^

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Non esiste un solo e specifico utilizzo nell'adoperare le funzioni.

    Prendila così: le funzioni sono utilizzate per rendere più dinamica la struttura dello script.

    Potresti percorrere 5 km per andare al mercato del pesce a piedi facendo 10.000 passi oppure fare 2 passi per comprare il biglietto dell'autobus che ti porterà al mercato del pesce.

    I Km sono la struttura dello script, i passi sono le righe dello script, l'autobus è una funzione e il biglietto e un suo argomento.

    Secondo te come ti verrebbe più comodo andare al mercato del pesce?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.