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

    Passaggio di variabili fra MC

    Ciao a tutti.

    Come si fa a passare variabili fra differenti MC? Faccio un esempio:
    ho definito un MovieClip preposto allo slideshow di immagini che presenta un pulsante che rimanda ad un altro MC; io vorrei poter ritornare all'immagine che stavo visionando sull'MC n°1 partendo dal MC n°2 tramite appostio pulsante; come si può fare? Grazie

  2. #2
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    se il mc1 è sullo stage (cioè sulla scena principale):

    _root.mc1.gotoAndStop(x);

    dove x è in numero del frame

    se è all'interno di un altro movie clip devi mettere il percorso completo

    _root.mc.mc1.gotoAndStop(x);

  3. #3
    Scusami ma come faccio a passare la variabile che mi interessa? Io vorrei ritornare all'immagine che stavo vedendo sul MC1 partendo dal MC2; il problema è come salvare la variabile che mi interessa (puntatore immagini) e come restituirla al MC2.

  4. #4
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    ops avevo letto male

    in pratica tu vuoi fare un pulsante prev?

    come carichi le immagini? sono in diversi frame o sono caricate con loadmovie?

    se sono in differenti frame è facile, basta inserire nel comando che le cambia una variabile che registra il numero di frame del movie clip che contiene le immagini, prima di caricare l'immagine successiva

    nel comando che cambia le immagini

    _root.precedente=_root.mc1._currentFrame;

    invece se le carichi con un loadmovie, la soluzione che viene a me è di fare due variabili, una che registra il nome precedente e un'altra che registra il nuovo nome

    if (immagine){
    _root.precedente= immagine;
    }
    immagine="miafoto.jpg";
    loadmovie(immagine,mc1);

  5. #5
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    e poi nel comando per tornare alla foto vista precedentemente passi la variabile precedente, che ho messo sulla _root in modo che non devi ogni volta stare a dare il percorso completo

    se non mi sono spiegata bene dimmelo e cerco di spiegarmi meglio

  6. #6
    Grazie per la spiegazione ma io pensavo di salvare il puntatore all'array di immagini che devo visualizzare.
    Mi spiego meglio:

    Il MovieClip1 effettua lo slideshow di immagini con due pulsanti (left, rigth); inoltre c'è un pulsante che rimanda al secondo MC (MC2). In MC2 viene effettuato un ulteriore slideshow e in pratica vorrei avere un pulsante "Prev" (come dici giustamente tu) tale da poter ritornare all'immagine di partenza nel MC1.

    Penso che per risolvere questo problema basta salvare (non so come) il puntatore immagini di MC1 (es. _global.temp = this.slideshow_mc.p) e poi dal pulsante "Prev" di MC2 ritorno proprio il valore "_global.temp" che mi serve. Il problema è che non so come si fa esattamente. Ho fatto diverse prove ma senza successo. Secondo te come si può fare? Non esiste un modo elegante per realizzare il passaggio di variabili fra MovieClip? Grazie mille!

  7. #7
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701

    ulteriore spiegazione

    tu punti un'immagine con il puntatore, dopo di che ne punti un'altra, quello che vuoi registrare tu è le foto che vengono man mano aperte (che mi sembra di capire siano registrate in un array) oppure le foto su cui il puntatore passa?

    e il puntatore cosa fa? apre automaticamente l'immagine "puntata" oppure si limita a passarci sopra?

  8. #8
    Ti posto la parte di codice che gestisce il caricamento delle immagini relativa al MC1:

    codice:
    #initclip
    //Costruttore della classe "SlideShowClass"
    function SlideShowClass() {
    	this.init();
    }
    //Il componente "SlideShowClass" eredita i metodi e le propriet‡
    // della classe "MovieClip()"; la riga successiva evita che la classe
    // "SlideShowClass" sovrascriva i metodi propri della classe "MovieClip"
    SlideShowClass.prototype = new MovieClip();
    //Inizializzazione del componente
    SlideShowClass.prototype.init = function() {
    	//Puntatore generale
    	this.p = puntatore;	
    	//nomi dei file immagini
    	this.fileNames_param = array_img;	
    	//Array dei file mp3
    	this.mp3Names_param = array_mp3;
    	//Array dei tioli 
    	this.imageTitles_param = array_titoli;
    	//Path relativo alla directory delle immagini
    	this.directoryPath_param = path_img;
    	//Path relativo alla directory dei file mp3
    	this.directoryMP3_param = path_mp3;
    	//Dimensioni originali del box di visualizzazione (width, height)
    	this.origWidth = this.container_mc._width;
    	this.origHeight = this.container_mc._height;
    	//Centro dell'immagine
    	this.center = this.container_mc._x+(this.origWidth/2);
    	//Caricamento della prima immagine
    	this.loadNextImage();
    	//Inizializzazione del campo testuale per il conteggio delle immagini
    	this.num_txt.text = this.p+1;
    	//Creo un'istanza dell'oggetto "Sound"
    	mySound = new Sound();
    };
    // init
    //Caricamento dell'immagine successiva nel container "MovieClip"
    SlideShowClass.prototype.loadNextImage = function() {
    	//Impongo una trasparenza nulla al caricamento dell'immagine in modo
    	//da non vedere lo sfarfallio
    	this.container_mc._alpha = 0;
    	//Carico l'immagine nel contenitore
    	this.container_mc.loadMovie(this.directoryPath_param+this.fileNames_param[this.p]);
    	//Titolo Opera
    	this.label_txt.text = this.imageTitles_param[this.p];
    	//Attesa caricamento immagine
    	clearInterval(this.loadNextID);
    	this.loadCompleteID = setInterval(this, "waitForLoadedImage", 100);
    	/////////////////////////////////////////////////////////////
    	// Azioni per i pulsanti "leftButton_mc" e "rightButton_mc"//
    	/////////////////////////////////////////////////////////////
    	this.leftButton_mc.onRelease = function() {
    		this.clearInterval(this.loadcompleteID);
    		this._parent.p -= 1;		
    		if (this._parent.p<=0) {
    			this._parent.p = array_img.length-1;
    			this._parent.num_txt.text = array_img.length;
    		}
    		this._parent.loadNextImage();
    		mySound.stop();
    		//Decremento contatore immagini
    		this._parent.num_txt.text--;
    		//Per riportare il MC "play_mc" nella posizione iniziale di "play"
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    	this.rightButton_mc.onRelease = function() {
    		//Incremento puntatore generale
    		this._parent.p++;
    		//Salvo in "temp" il puntatore immagini corrente
    		_global.temp = this._parent.p;
    		trace(_global.temp);
    		if (this._parent.p>=this._parent.fileNames_param.length) {
    			//se sono arrivato alla fine dell'array immagini riparto dall'inizio
    			this._parent.p = 0;
    			this._parent.num_txt.text = 0;
    		}
    		//Carico l'immagine successiva
    		this.clearInterval(this.loadcompleteID);
    		this._parent.loadNextImage();
    		mySound.stop();
    		//Contatore Immagini
    		this._parent.num_txt.text++;
    		//Per riportare il MC play_mc nella posizione iniziale
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    	// Gestione del pulsante "home_mc"
    	// "stanza_target" viene passata tramite i vari pulsanti
    	this.homeButton_mc.onPress = function() {
    		gotoAndStop(stanza_target);
    		mySound.stop();
    		//Per riportare il MC play_mc nella posizione iniziale
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    	//Gestione pulsante "appButton_mc"
    	this.appButton_mc.onPress = function() {
    		//trace("Premuto!!!!");
    		gotoAndStop("approfondisci");
    		mySound.stop();
    		//Per riportare il MC play_mc nella posizione iniziale
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    };
    Il problema è che vorrei salvare il puntatore this.p in modo che sia richiamabile dal MC2 che è comandato da un script analogo a questo che ti ho postato. Riporto la parte di codice del MC2 relativa al pulsante "Prev"

    codice:
    //Caricamento dell'immagine successiva nel container "MovieClip"
    SlideShowClass2.prototype.loadNextImage = function() {
    	//Impongo una trasparenza nulla al caricamento dell'immagine in modo
    	//da non vedere lo sfarfallio
    	this.container_mc._alpha = 0;
    	//Carico l'immagine nel contenitore
    	this.container_mc.loadMovie(this.directoryPath_param+this.fileNames_param[this.p]);
    	//Titolo Opera
    	this.label_txt.text = this.imageTitles_param[this.p];
    	//Attesa caricamento immagine
    	clearInterval(this.loadNextID);
    	this.loadCompleteID = setInterval(this, "waitForLoadedImage", 100);
    	/////////////////////////////////////////////////////////////
    	// Azioni per i pulsanti "leftButton_mc" e "rightButton_mc"//
    	/////////////////////////////////////////////////////////////
    	this.leftButton_mc.onRelease = function() {
    		this.clearInterval(this.loadcompleteID);
    		this._parent.p -= 1;
    		if (this._parent.p<=0) {
    			this._parent.p = array_img.length-1;
    			this._parent.num_txt.text = array_img.length;
    		}
    		this._parent.loadNextImage();
    		mySound.stop();
    		//Decremento contatore immagini
    		this._parent.num_txt.text--;
    		//Per riportare il MC "play_mc" nella posizione iniziale di "play"
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    	this.rightButton_mc.onRelease = function() {
    		//Incremento puntatore generale
    		this._parent.p ++;
    		if (this._parent.p >= this._parent.fileNames_param.length) {
    			//se sono arrivato alla fine dell'array immagini riparto dall'inizio
    			this._parent.p = 0;
    			this._parent.num_txt.text = 0;
    		}
    		//Carico l'immagine successiva
    		this.clearInterval(this.loadcompleteID);
    		this._parent.loadNextImage();
    		mySound.stop();
    		//Contatore Immagini
    		this._parent.num_txt.text++;
    		//Per riportare il MC play_mc nella posizione iniziale
    		_root.slideshow_mc.play_mc.gotoAndStop("play");
    	};
    
    	// Gestione del pulsante "home_mc"
    	// In questo caso deve puntare all'opera "genitore"
    	this.homeButton_mc.onPress = function() {
    		//trace("premuto!!!");
    		_root.gotoAndStop("slideshow_personalizzato", temp);
    		mySound.stop();
    		//Per riportare il MC play_mc nella posizione iniziale
    		_root.slideshow_mc.play_mc.gotoAndStop("play");		
    		//Problema: come ritornare all'ultima opera vista (come risalire di livello)
    		//////
    		_root.slideshow_mc.puntatore = temp;
    		//trace(_root.slideshow_mc.puntatore);
    		
    	};	
    };
    Quindi dal pulsante "homeButton_mc" devo risalire al primo MC1; il problema è come fare... Io voglio salvare il puntatore relativo all'ultima immagine che ho aperto in MC1; in pratica la sequenza logica delle azioni è:

    1) sono in MC1 e visiono l'immagine "x";
    2) premo il pulsante "approfondisci" e vado al MC2 dove visualizzo altre immagini;
    3) Voglio ritornare all'immagine "x" di MC1 mediante il pulsante "homeButton_mc"

  9. #9
    Utente di HTML.it L'avatar di Stormy
    Registrato dal
    Dec 2000
    Messaggi
    2,701
    poichè lo script è piuttosto complesso, provo a ricreare il fla completamente e ti faccio sapere se trovo una soluzione

  10. #10
    Scusate se insisto ma ho seri problemi...Vorrei realizzare questo benedetto pulsante "Prev" per passare dal MC2 al MC1 in modo da ritornare all'ultima immagine sul MC1; il problema a livello logico è semplice: Salvo il puntatore dell'array immagini "this.p" relativo a MC1 e dovrei ripristinarlo partendo da MC2 con il pulsante "Prev"; come si può fare questo? Grazie

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.