Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    linkare ad un frame definito di un movie "generico".

    Tenterò di spiegare meglio che posso quello che cerco di fare..

    allora pulsante A e pulsante B sono collegati rispettivamente ad A.swf e B.swf. Ogni volta che premo uno dei due pulsanti viene caricato un movie su un livello (diciamo 2) del filmato principale. Quello che voglio fare è che al premere di un tasto il filmato al momento caricato (indipendentemente da A o B che sia), vada ad un certo frame (per convenzione diciamo 100. In entrambe i filmati il frame di riferimento è il solito) prenda la riproduzione da quel frame e alla fine del filmato, scarichi il livello e carichi il filmato al quale è collegato il pulsante.
    Mi spiego meglio...

    premo il pulsante A: se in questo momento stesse girando il filmato A.swf vorrei che il puntatore si spostasse al frame 100 di questo filmato e continuasse a riprodurre, arrivasse al termine, scaricasse il livello, e caricasse il movie A.swf. Se invece il filmato che sta girando al momento è il filmato B.swf vorrei che il puntatore si spostasse al frame 100 di questo movie (il movie B) continuasse a riprodurre fino a fine ed al termine scaricasse il livello e caricasse il movie A.swf.

    premo il pulsante B: succede la medesima cosa solamente carica il movie B.swf
    (Ripeto: in entrambe i filmati il frame di riferimento è il solito)
    Non so essere più chiaro di così..


  2. #2
    Devi definire una variabile (p.es. current_movie) nella quale memorizzare il filmato che è in riproduzione. Se decidi di caricare i vari filmati su livelli diversi, allora ti servirà anche una variabile per memorizzare questo valore.
    A questo punto, quando viene premuto un pulsante, si esegue un test su dette variabili per prendere le decisioni appropriate.

    Se dovessi farlo io, deciderei per un unico livello, cosicché il successivo loadMovieNum, oltre a caricarmi il nuovo filmato, automaticamente mi scarica il vecchio.

    p.es.

    > definisco la variabile:
    current_movie = ""; // all'inizio è vuota

    > Per convenzione carico TUTTI i filmati sul livello 10;

    codice da inserire sull'evento release sul pulsante "A"
    codice:
    if (current_movie != "") {
        _level10.gotoAndPlay(100);
        this.onEnterFrame = function() {
            if (_level10._currentframe == _level10.totalframes) {
                current_movie = "A.swf";
                loadMovieNum(current_movie, 10);
            }
        }
    }
    Per il pulsante B, ovviamente, andrà modificata la parte evidenziata in rosso.

  3. #3
    Proverò a farlo non appena avrò tempo.. per il momento ti ringrazio, poi ti farò sapere se mi è riuscito.. ma ad occhio mi sembra di aver capito. Grazie ancora.

  4. #4
    ok.. ecco i problemi.. (purtroppo sono le prime volte che uso flash e a volte mi intorto su cose elementari..):

    allora.. ho strutturato l'animazione così.

    - movie principale che richiama un menù con una serie di voci per ogni voce corrisponde una scultura che può avere una o più foto. Cliccando sul nome della scultura si carica sul movie principale il..
    - movie che contiene le thumbs e una cornice che servirà poi. questo movie carica in automatico con un azione al frame 87 un livello con del testo dinamico ed un ulteriore cornice ad un livello superiore (livello 6) a quello del movie contenente le foto (livello 5) che è possibile richiamare cliccando sulle thumbs, dato che parte dell'animazione di questa si svolgerà sotto quel livello.
    - Le due thumbs sono in realtà due pulsanti al premere di ognuna viene caricata una foto sul livello 5, appunto. esempio: clicco sulla thumbs della scultura vista da fronte, e appare con un animazione la foto intera della scultura ripresa in modo frontale sul livello 5. Clicco sulla thumbs della scultura vista dal retro, il movie con la foto presente sul livello 5 va al frame 46 e scompare con un animazione uguale e contraria a quella che l'ha fatta apparire e carica la scultura vista dal retro che appare con la stessa animazione e scompare in modo identico (anche in questo caso l'animazione parte dal frame 46).

    Quindi ricapitolando ho, in ordine crescente di livello:
    - un movie con (in questo caso) due thumbs (pulsanti)
    - due movie con le animazioni tipo scheda comparsa/scomparsa (questa parte dal frame 46 e deve essere riprodotta solo al momento della pressione di uno dei due tasti se il movie è sullo schermo in quel momento) situati sullo stesso livello 5
    - un movie contenente una cornice e del testo dinamico con barra di scorrimento.

    Nel primo frame del livello azioni del movie contenente le thumbs ho definito, come mi hai detto le variabili con lo script

    current_movie = "";

    al pulsante ho associato gli script:

    on (release) {
    if (current_movie != "") {
    _level5.gotoAndPlay(46);
    this.onEnterFrame = function() {
    if (_level5._currentframe == _level5.totalframes) {
    current_movie = "caverna fronte L3.swf";
    loadMovieNum(current_movie, 5);
    }
    }
    }}

    la seconda parentesi graffa nell'ultima linea l'ho aggiunta dopo un errore segnalato da flash in fase di compilazione pensavo occorresse chiudere la parentesi aperta dall'evento on release. Ovviamente al secondo pulsante ho cambiato il nome del movie da caricare.
    Si sono presentati però questi errori (oltre al fatto che i pulsanti non caricano un bel niente..):

    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 2: on handlers may not nest within other on handlers
    on (release) {

    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 1: Statement block must be terminated by '}'
    on (release) {

    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 11: Syntax error.
    }}

    Total ActionScript Errors: 3 Reported Errors:

    Dove ho sbagliato???
    Scusa se sono stato prolisso e ripetitivo (e forse poco chiaro), ma volevo cercare di spiegare meglio possibile...
    scusa la mia ignoranza...

    grazie.

  5. #5
    Originariamente inviato da dafank
    on (release) {
    if (current_movie != "") {
    _level5.gotoAndPlay(46);
    this.onEnterFrame = function() {
    if (_level5._currentframe == _level5.totalframes) {
    current_movie = "caverna fronte L3.swf";
    loadMovieNum(current_movie, 5);
    }
    }
    }}
    ...
    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 2: on handlers may not nest within other on handlers
    on (release) {

    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 1: Statement block must be terminated by '}'
    on (release) {

    **Error** Scene=Scene 2, layer=pulsante 2 L3, frame=1:Line 11: Syntax error.
    }}
    Total ActionScript Errors: 3 Reported Errors:

    Dove ho sbagliato???
    L'errore significa che le due azioni che ho evidenziato in rosso vanno in conflitto.
    Il codice che ti ho passato NON puoi inserirlo dentro l'evento on. Ecco come devi fare:
    SOLUZIONE (1)
    1) attribuisci un nome istanza ad ognuno dei tuoi pulsanti: p.es. pulsante1, pulsante2 ecc.
    2) scrivi il codice NON associato al pulsante stesso, MA inserendolo direttamente sul frame della timeline, così:
    codice:
    pulsante1.onRelease = function() {
      if (current_movie != "") {
          _level10.gotoAndPlay(100);
          this.onEnterFrame = function() {
              if (_level10._currentframe == _level10.totalframes) {
                  current_movie = "A.swf";
                  loadMovieNum(current_movie, 10);
              }
          }
      }
    }
    oppure...
    SOLUZIONE (2)
    > Nessun nome istanza
    > ai pulsanti associ solo questo codice:
    codice:
    on (release) {
         carica_filmato("caverna fronte L3.swf");
    }
    > sulla timeline, invece, scrivi questa funzione:
    codice:
    function carica_filmato(themovie) {
      if (current_movie != "") {
          _level10.gotoAndPlay(100);
          this.onEnterFrame = function() {
              if (_level10._currentframe == _level10.totalframes) {
                  current_movie = themovie;
                  loadMovieNum(current_movie, 10);
              }
          }
      }
    }

  6. #6


    Sei molto gentile, ma ho provato con scarsi risultati, mi sto scoraggiando..
    poi mi sorge un dubbio.. io uso flash 8 e come puoi ben vedere conosco due o tre action script da usare con l'assistente, per cui mi chiedo se la versione di action script nella quale tu hai scritto le azioni è la stessa che usa flash 8 oppure se ho sbagliato io qualcosa... ricapitolo (scusami se sono di legno!!!!! Me ne vergogno un pò...): Lo script riadattato è questo...

    sul livello azioni:


    current_movie = ""; // all'inizio è vuota
    function carica_filmato(themovie) {
    if (current_movie != "") {
    _level5.gotoAndPlay(46);
    this.onEnterFrame = function() {
    if (_level5._currentframe == _level5.totalframes) {
    current_movie = themovie;
    loadMovieNum(current_movie, 5);
    }
    }
    }
    }

    dove 5 è il livello dove deve essere caricato il filmato e 46 il frame del filmato che in quel momento (se c'è) sta girando sul livello 5.

    associato al pulsante:

    on (release) {
    carica_filmato("caverna fronte L3.swf");
    }

    lo stesso script associato all'altro pulsante, ovviamente cambiando filmato da caricare.
    Ok. niente errori, ma non viene caricato un bel niente ho provato anche cambiando livello e provando a caricare ad un livello più alto (tante volte avessi sbagliato): idem.

    Nel primo caso che mi avevi proposto:

    current_movie = ""; // all'inizio è vuota
    fronte.onRelease = function() {
    if (current_movie != "") {
    _level5.gotoAndPlay(46);
    this.onEnterFrame = function() {
    if (_level5._currentframe == _level5.totalframes) {
    current_movie = "caverna fronte L3.swf";
    loadMovieNum(current_movie, 5);
    }
    }
    }
    }
    retro.onRelease = function() {
    if (current_movie != "") {
    _level5.gotoAndPlay(46);
    this.onEnterFrame = function() {
    if (_level5._currentframe == _level5.totalframes) {
    current_movie = "caverna retro L3.swf";
    loadMovieNum(current_movie, 5);
    }
    }
    }
    }

    dove fronte e retro sono il nome dell'istanza dei bottoni 1 e 2 (quello nelle proprietà del bottone, ho provato anche con il nome del simbolo bottone della libreria, ma idem.

    Anche in questo caso non accade niente...

  7. #7
    c'è un errore "ortografico" nel codice che ti ho suggerito

    la proprietà totalframes si scrive invece: _totalframes (con la sottolineatura davanti)

    (p.es. _level5._totalframes )

    correggi tutte le ricorrenze della proprietà e riprova...

    (scusa)

  8. #8
    Ho dato un'occhiata ai tuoi sorgenti...

    C'è da fare una correzione nel codice inserito nel 1° frame di caverna thumbs L2:
    codice:
    current_movie = ""; // all'inizio è vuota
    function carica_filmato(themovie) {
      	if (current_movie != "") {
          	_level5.gotoAndPlay(46);
          	this.onEnterFrame = function() {
              	if (_level5._currentframe == _level5._totalframes) {
     				delete this.onEnterFrame;
              	} else {
                  	trace("in attesa completamento: "+_level5._currentframe+"/"+_level5._totalframes);
              	}
          	}
      	}
    	current_movie = themovie;
    	loadMovieNum(current_movie, 5);
    }
    //

  9. #9


    Ti ringrazio molto, spero non sia stato di troppo disturbo per te.
    Ho provato lo script. Funziona: clicco sul pulsante ed esce la foto, l'unico problema è che prima di uscire la scheda con la foto dovrebbe rientrare (ossia dal frame 46 di caverna fronte, o retro arrivare alla fine della timeline e caricare la nuova foto dal frame1). Comunque può andare anche così, sei stato gentilissimo.

    Grazie ancora,
    Claudio

  10. #10
    Sì, ho visto anch'io quell'anomalia.
    Il problema è che quella rettifica è una semplice pezza.

    Per sistemare bene le cose bisognerebbe "ridisegnare" l'impostazione del filmato.

    Purtroppo non ne ho il tempo.

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.