Mi trovo davanti ad un problema (apparentemente) complesso, senza riuscire a venirne a capo.
Riassumo brevemente, prima di entrare nei dettagli. Ho un filmato, in cui una serie di elementi vengono posizionati e/o ridimensionati in base alla dimensione dello stage. Tutto funziona perfettamente. C'è anche un movie clip che sta posizionato fuori dall'area visibile, e che entra 'in campo' quando richiamato da una funzione. Ora, finchè faccio la preview in Flash, anche questo funziona bene, ma quando vado a visualizzarlo nella finestra del browser, non si posiziona correttamente, anzi, di più, è come se si posizionasse (quando richiamato dalla funzione) 'autonomamente': infatti, anche cambiando i valori relativi alla posizione, nel browser va a collocarsi sempre alle stesse coordinate x/y.
Adesso il dettaglio.
Nel primo frame della trimeline ho questo codice:
al 5° frame, c'è quest'altro codice, che posiziona i vari elementi 'fissi':codice:Stage.align = "tl"; Stage.scaleMode = "showAll"; var wdth = Stage.width; var hght = Stage.height; Stage.scaleMode = "noScale"; controllo = new Object(); controllo.onResize = function() { w = Stage.width; h = Stage.height; cx = (w-wdth)/2; cy = (h-hght)/2; _root.xdim = w; _root.ydim = h; }; Stage.addListener(controllo); MovieClip.prototype.move = function(y) { this._y += (y-this._y)/4; }; MovieClip.prototype.move2 = function(x) { this._x += (x-this._x)/4; }; MovieClip.prototype.move3 = function(y, x) { this._y += (y-this._y)/4; this._x += (x-this._x)/4; };
nello stesso frame, definisco la mia funzione:codice:this.onEnterFrame = function() { past1.move(h-0); past1.move2(235); menu.move2(210); logo.move2(w-223); exit.move2(w-60); audioc.move(h-1); audioc.move2(w-70); carta._xscale = carta._yscale=w/10; sheet._xscale = sheet._yscale=w/12; sheet.move3((h-sheet._yscale*6)-20, w-sheet._xscale*8); tgt.move3(h-100, w-500); peppers.move3(0, -40); }; stop();
la funzione è richiamata dal testo caricato dinamicamente in un textfield; il file di testo caricato dinamicamente contiene delle stringhe del tipo:codice:_root.sack = 0; function show(photo) { var temp = photo.split("§"); var img = _root.uno = temp[0]; var opn = _root.due = temp[1]; var cls = _root.tre = temp[2]; if (_root.sack == 1) { } else { _root.sacco.foto.gotoAndPlay(2); _root.sacco.foto.loadfoto.loadMovie(img); _root.gotoAndPlay(opn); } _root.sack = 1; }
il passaggio di queste variabili, comunque, avviene tranquillamente.codice:Sformati<font color="#FF0000">(GUARDA)</font>
Nel frame corrispondente alla variabile 'opn' (vedi sopra), c'è questo codice:
mentre nel frame corrispondente alla variabile 'cls', c'è questo:codice:var posy = _root.ydim; var posx = _root.xdim; _root.onEnterFrame = function() { _root.sacco.move3(posy-120, posx-550); };
Come ho detto, nella preview tutto funziona bene, ma nel browser no; il mc 'sacco' si va a posizionare diversamente, in particolare molto più in basso del dovuto, ed anche se cambio i valori delle coordinate target, continua a posizionarsi allo stesso posto.codice:_root.onEnterFrame = function() { _root.sacco.move3(posy+120, posx-500); };
Ovviamente, nella pagina html il filmato Flash è impostato a width="100%" height="100%"...
Idee/suggerimenti?

Rispondi quotando
