• User Newbie

    Posizionamento .swf all'interno di un file .fla

    Ciao a tutti, mi chiamo Francesco e più per passione che per lavoro mi capita di realizzare dei piccoli siti.
    Ho un problema con l'incorporamento di un .swf all'interno di un file .fla, sicuramente è questione di codice ma io non ho le basi per accorgermi dell'errore. Ho preso una Slideshow da juliusdesign.net (juliusdesign.net/vslide-gallery-xml-galleria-immagini-flash-verticale/?cp=3) ma non riesco a sistemarla all'interno del mio campo di lavoro, importando l'swf questo non rispetta le dimensioni del suo stage ma si espande all'intero stage del nuovo .fla

    allego il link di quello che mi capita forse è più chiara la situazione
    (francescocarcione.com/03 - AltaGioielleria.html)slideshow
    (francescocarcione.com/03 - Collezioni.html)integrazioneslideshow

    vorrei che la galleria rispettasse le proprie dimensioni e rimanesse nel rettangolo nero

    ps utilizzo AS 2 e l'swf è stato importato in un mc contenitore con loadmovie

    grazie per l'aiuto.


  • User Attivo

    L'mc contenitore non ha dimensioni...E se non capisco male, il tuo swf ha scalemode=true...Quindi riempie tutto il browser...Di conseguenza l'mc contenitore e di conseguenza la gallery si adattano allo spazio che trovano riempiendolo tutto... Il problema è che i parametri per il posizionamento delle miniature (thumb) e delle altre immagini, passano un posizionamento assoluto rispetto alle coordinate x e y dello stageprincipale...Devi 1) dare dimensioni fisse all'swf principale 2) aprire il fla della gallery e 3) dare agli oggetti (thumb, immagini grandi, e coordinate del mouse) le coordinate di posizionamento relative allo stage contenitore...
    Ps. ma non è più semplice integrare il codice della gallery direttamente nel tuo swf bypassando loadmovie??


  • User Newbie

    Ciao Cinetico, grazie mille per la risposta e l'interessamento, immaginavo che fosse qualcosa dovuta all'swf adattabile allo schermo, ma purtroppo è una richiesta esplicita, devo farlo in quel modo.
    Per quanto riguarda l'integrazione del codice, causa la mia ignoranza, ci ho provato ma non riesco a farlo funzionare nel nuovo stage, comunque se questa è l'unica soluzione troverò il modo per farlo.
    Ma se così fosse, riuscirei ad arginare il problema della thumb? devo importare il tutto in un mc in cui inserisco un livello maschera giusto!?

    grazie ancora per la disponibilità.


  • User Attivo

    Se importi, e hai poca dimestichezza col codice, ti sconsiglio di mascherare, giacché dovresti creare una maschera in runtime per ottenere un migliore controllo...Ma ad ogni modo il problema della gallery è nel passaggio delle coordinate e non nell'area di limitazione...Se mascheri ottieni solo che parte della gallery non si vedrà, ma si posizionerà sempre, diciamo, a schermo intero...Mi spiego meglio...Se nella gallery che importi è indicato di posizionare le thumb a _x 500 e _y 300, per esempio, beh, questi elementi si posizioneranno a queste coordinate ma sempre rispetto al tuo swf principale... Purtroppo il miglior controllo lo otterrai solo inserendo in un frame sul tuo stage il codice della gallery...Oppure, se vuoi importare per forza la gallery in runtime, devi modificare comunque le dimensioni dello stage della gallery (adattandolo allao stage contenitore) ed il codice della gallery che dovrebbe essere con desinenza _parent e non _root (come immagino che sia), e posizionarsi rispetto alla posizione che vorrai dargli nel tuo swf principale...Quindi sempre sul codice dovrai agire...
    Purtroppo non è così semplice, non basta importare!! 😞


  • User Newbie

    Rileggendo l'ultima tua risposta mi sono convinto a riprovare ad importare il codice nello stage contenitore; il problema è che non riesco ne ad assegnarli una posizione ne a dargli una gerarchia; mi spiego meglio, anche se importato tutto in un livello inferiore mi rimane comunque in primo piano.

    questo è il codice, potresti dargli un occhiata?

    larghezzamovie = Stage.height;
    
    posSin =1;
    vel = 1;
    dimImm = 179;
    selezione._x = 100;
    letto = false;
    
    pos_iniziale = Stage.width-dimImm;
    _root.mc_desc.sf_desc._width = pos_iniziale;
    
    leggi = function () {
    	nuovo = new XML();
    	nuovo.ignoreWhite = true;
    	nuovo.load("03 - AltaGioielleria.xml");
    	nuovo.onLoad = function(success) {
    		if (success) {
    			nfoto = this.childNodes.length;
    			posDes = nfoto;
    			for (i=0; i<nfoto; i++) {
    				_root.attachMovie("mc","mc"+(i+1),i+1);
    				_root["mc"+(i+1)]._y = dimImm*i;
    				_root["mc"+(i+1)]._x = pos_iniziale;
    				_root["mc"+(i+1)].big = this.childNodes*.attributes.photo_big;
    				_root["mc"+(i+1)].desc = this.childNodes*.attributes.descrizione;
    				_root["mc"+(i+1)].contenitore.loadMovie(this.childNodes*.attributes.photo);
    				_root["mc"+(i+1)]._alpha = 50;
    				_root.box.clip_mc.loadMovie(this.childNodes[0].attributes.photo_big);
    				_root.pre.loadMovie(this.childNodes*.attributes.photo_big);
    				_root.image = this.childNodes[0].attributes.photo_big;
    				_root.mc_desc.descrizione.text = this.childNodes[0].attributes.descrizione;
    				_root["mc"+(i+1)].onRelease = released;
    				_root["mc"+(i+1)].onRollOver = rollover;
    				_root["mc"+(i+1)].onRollOut = rollout;
    				_root["mc"+(i+1)].onReleaseOutside = rollout;
    			}
    			letto = true;
    		} else {
    			_root.didascalia.text = "errore di lettura";
    		}
    	};
    };
    leggi();
    
    _root.onMouseMove = function() {
    	x = _root._xmouse;
    	y = _root._ymouse;
    	if (x>pos_iniziale) {
    		if (y>0 && y<60) {
    			vel = -(Math.round((y-(larghezzamovie/2))/10));
    
    		}
    		if (y>260 && y<larghezzamovie) {
    			vel = -(Math.round((y-(larghezzamovie/2))/10));
    
    		}
    	} else {
    		if (vel>-1) {
    			vel = 3;
    		} else {
    			vel = -3;
    		}
    	}
    
    };
    function released() {
    
    	_root.image = this.big;
    	_root.box.play();
    	_root.box.clip_mc.loadMovie(_root.image);
    	_root.mc_desc.descrizione.text = this.desc;
    	//_root.selezione._y = (larghezzamovie)/2;
    	//_root.didascalia.text = this.etichetta.text;
    
    	//getURL(percorso,"_blank")
    }
    
    function rollover() {
    	_global.blocca=true;
    	this._alpha = 100;
    
    
    }
    
    
    function rollout() {
    	_global.blocca=false;
    	this._alpha = 50;
    
    }
    
    _root.onEnterFrame = function() {
    	if (!_global.blocca)
    	if (letto) {
    		for (i=1; i<=nfoto; i++) {
    			_root["mc"+i]._y += vel;
    		}
    		if (vel>0 && _root["mc"+posSin]._y>0) {
    			_root["mc"+posDes]._y = _root["mc"+posSin]._y-dimImm;
    			posSin = posDes;
    			posDes--;
    			if (posDes == 0) {
    				posDes = nfoto;
    			}
    		}
    		if (vel<0 && _root["mc"+posSin]._y<=-dimImm) {
    			_root["mc"+posSin]._y = _root["mc"+posDes]._y+dimImm;
    			posDes = posSin;
    			posSin++;
    			if (posSin>nfoto) {
    				posSin = 1;
    			}
    		}
    	}
    };
    this._lockroot = true;
    

  • User Attivo
    larghezzamovie = Stage.height;
    
    posSin =1;
    vel = 1;
    dimImm = 179;
    selezione._x = 100;
    letto = false;
    
    pos_iniziale = Stage.width-dimImm; //questa linea passa la variabile per posizionare
     orizzontalmente le miniature, infatti sotto c'è una stringa "_root["mc"+(i+1)]._x = pos_iniziale;" 
    ovvero dice "posiziona orizzontalmente le miniature all'estremità destra dello stage, 
    però falle rientrare della loro larghezza (dimImm)" ... 
    se tu invece le devi posizionare, non so a metà, dovresti scrivere 
    ("Stage.width/2)-(dimImm/2)"...quindi, prima di tutto devi capire orizzontalmente 
    a che valore di _x si devono posizionare!
    _root.mc_desc.sf_desc._width = pos_iniziale;
    
    leggi = function () {
        nuovo = new  XML();
        nuovo.ignoreWhite = true;
        nuovo.load("03 - AltaGioielleria.xml");
        nuovo.onLoad = function(success) {
            if (success) {
                nfoto = this.childNodes.length;
                posDes = nfoto;
                for (i=0; i<nfoto; i++) {
                    _root.attachMovie("mc","mc"+(i+1),i+1);
                    _root["mc"+(i+1)]._y = dimImm*i;
                    _root["mc"+(i+1)]._x = pos_iniziale;
                    _root["mc"+(i+1)].big = this.childNodes*.attributes.photo_big;
                    _root["mc"+(i+1)].desc = this.childNodes*.attributes.descrizione;
                    _root["mc"+(i+1)].contenitore.loadMovie(this.childNodes*.attributes.photo);
                    _root["mc"+(i+1)]._alpha = 50;
                    _root.box.clip_mc.loadMovie(this.childNodes[0].attributes.photo_big);
                    _root.pre.loadMovie(this.childNodes*.attributes.photo_big);
                    _root.image = this.childNodes[0].attributes.photo_big;
                    _root.mc_desc.descrizione.text = this.childNodes[0].attributes.descrizione;
                    _root["mc"+(i+1)].onRelease = released;
                    _root["mc"+(i+1)].onRollOver = rollover;
                    _root["mc"+(i+1)].onRollOut = rollout;
                    _root["mc"+(i+1)].onReleaseOutside = rollout;
                }
                letto = true;
            } else {
                _root.didascalia.text = "errore di lettura";
            }
        };
    };
    leggi();
    
    //lo script che segue serve ad indicare le coordinate in cui il mouse è attivo e fa 
    muovere le miniature...Qui il problema è devi avere un po' chiare le idee del piano
     cartesiano...Siccome le miniature scorrono in un'area precisa compresa tra 
    maggiore < e minore > delle coordinate x e y, devi praticamente fargli capire qual'è 
    l'area attiva dentro cui si muovono le miniature...Per sempio "if  (y>0 && y<60)" 
    significa "se la y del mouse è maggiore di zero ma anche inferiore a 60, allora la vel (velocità), etc..."
    ...Dal momento che le miniature sono un rettangolo che si muove dall'alato al basso devi 
    capire qual'è quest'area entro cui si muoveranno nel tuo stage...
    _root.onMouseMove = function() {
        x = _root._xmouse;
        y = _root._ymouse;
        if (x>pos_iniziale) {
            if (y>0 && y<60) {
                vel = -(Math.round((y-(larghezzamovie/2))/10));
    
            }
            if (y>260 && y<larghezzamovie) {
                vel = -(Math.round((y-(larghezzamovie/2))/10));
    
            }
        } else {
            if (vel>-1) {
                vel = 3;
            } else {
                vel = -3;
            }
        }
    
    };
    function released() {
    
        _root.image = this.big; 
        _root.box.play();
        _root.box.clip_mc.loadMovie(_root.image); // questa stringa serve a posizionare le
     immagini grandi...quindi cerca  l'mc "box" e posizionalo nel punto dove vuoi che appaia
     l'immagine  grande!
        _root.mc_desc.descrizione.text = this.desc;
        //_root.selezione._y = (larghezzamovie)/2;
        //_root.didascalia.text = this.etichetta.text;
    
        //getURL(percorso,"_blank")
    }
    
    function rollover() {
        _global.blocca=true;
        this._alpha = 100;
    
    
    }
    
    
    function rollout() {
        _global.blocca=false;
        this._alpha = 50;
    
    }
    
    _root.onEnterFrame = function() {
        if (!_global.blocca)
        if (letto) {
            for (i=1; i<=nfoto; i++) {
                _root["mc"+i]._y += vel;
            }
            if (vel>0 && _root["mc"+posSin]._y>0) {
                _root["mc"+posDes]._y = _root["mc"+posSin]._y-dimImm;
                posSin = posDes;
                posDes--;
                if (posDes == 0) {
                    posDes = nfoto;
                }
            }
            if (vel<0 && _root["mc"+posSin]._y<=-dimImm) {
                _root["mc"+posSin]._y = _root["mc"+posDes]._y+dimImm;
                posDes = posSin;
                posSin++;
                if (posSin>nfoto) {
                    posSin = 1;
                }
            }
        }
    };
    this._lockroot = true;
    ```Lavorando un po' sulle coordinate e sulla posizione dell'mc "box" riuscirai a posizionare tutto come vuoi...Il problema resterà però per le miniature come limiti superiore e inferiore, perché il codice attuale le fa partire dalla parte superiore e le fa uscire dalla parte inferiore, o meglio, agiscono così perché non c'è uno script che le limita...devi creare una variabile per                 _root["mc"+(i+1)]._y = dimImm*i; in modo da dargli un inizio e una fine...
    Purtroppo se non sei un po' infarinato di actionscript non è facile...lo capisco!! Ma io non ho davvero il tempo di provare lo script!!
    Ad ogni modo devi dare al tuo filmato dimensioni fisse, altrimenti, passando varibili tipo Stage.width, rischi che la gallery si posizioni in un punto anziché in un altro a seconda della risoluzione del monitor in cui verrà visualizzata! :(