|
|
| Autore |
Messaggio |
ARIELE
principiante


Registrato: 22/10/04 18:59
Messaggi: 65
Località: LIVORNO
|
Oggetto: ridimensionamento foto in ciclo for
Inviato: 01.11.04 | 20:09 |
|
|
Ciao Coach...ho ancora bisogno dei tuoi preziosi consigli....il mio problema è sempre la galleria fotografica, dopo esser riuscito a posizionare le foto e caricarene il numero da un file txt esterno, vorrei riuscire a fare in modo che le foto caricate siano quelle a dimensioni normali ( e non delle miniature) che poi ridimensiono tramite script..
Ora dal mitico Rempox ho preso uno script di ridimensionamento e l'ho inserito all'interno del mio ciclo...ma ahimè non funziona:
| Codice: | dati = new LoadVars();
dati.onLoad = function(success) {
if (success) {
z = 0;
k = 0;
for (i=1; i<this.vocals; i++) {
createEmptyMovieClip("clip"+i, i+10);
mc = eval(_root["clip"+i]);
mc._x = 100*i-100+i*10-z*550;
mc._y = k*100;
mc.loadMovie("foto/vocals/vocals_"+i+".jpg");
// calcolo con l'enter Frame le dimensioni originali
this.onEnterFrame=function(){
if (mc.getBytesLoaded()>1024 && mc.getBytesLoaded() == mc.getBytesTotal()) {
// calcolo dimensioni originali
mc.larg=mc._width
mc.alt=mc._height
// chiamo la funzione di re-dimensionamento
dimensiona(mc.larg, mc.alt)
// cancello enterframe
delete this.onEnterFrame
}
}
if (i%5 == 0) {
k++;
z++;
}
}
}
};
function dimensiona(larg, alt){
mc._xscale = Math.floor(10000/larg)
mc._yscale = Math.floor(10000/alt)
mc._alpha = 0;
}
dati.load("foto/vocals/vocals.txt"); |
Puoi dirmi dove sbaglio...così non me lo considera nemmeno il ridimensionamento delle foto...appaiono grandi. |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
magodellaneve
intermedio


Registrato: 18/05/04 00:28
Messaggi: 184
Località: Verona
|
Oggetto:
Inviato: 03.11.04 | 11:27 |
|
|
a prima vista direi che manca il punto e virgola dopo :
// calcolo dimensioni originali
mc.larg=mc._width
mc.alt=mc._height |
|
| Torna in cima |
|
|
magodellaneve
intermedio


Registrato: 18/05/04 00:28
Messaggi: 184
Località: Verona
|
Oggetto:
Inviato: 03.11.04 | 11:29 |
|
|
| e ora che guardo meglio direi che ne mancano parecchi i ngiro di ; hehe |
|
| Torna in cima |
|
|
dioz
moderatore


Registrato: 13/01/04 12:53
Messaggi: 215
Località: Roma
|
Oggetto:
Inviato: 03.11.04 | 13:01 |
|
|
dubito che sia colpa del punti e virgola, in as non sono obbligatori come in altri linguaggi, ora non ho molto tempo e non posso analizzare il codice a fondo ma il problema non è sicuramente quello
 ____________________________________________________________
Be Original: Julay Sviluppo Web |
|
| Torna in cima |
|
|
magodellaneve
intermedio


Registrato: 18/05/04 00:28
Messaggi: 184
Località: Verona
|
Oggetto:
Inviato: 04.11.04 | 12:21 |
|
|
ok,
allora un errore è quello della funzione "this.onEnterFrame",
inserita in quel contesto , è cioè all'interno della funzone onload della load var , il this si riferisce all'oggetto load vars e quindi non si può usare un enterframe, quindi ti conviene creare un _root.enterframe, o _parent , oppure altro clip che desideri, di consegueza cambiare anche il percorso relativo a mc.getbytesloaded e total all'interno della funzione stessa..
ciao ciao |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 04.11.04 | 13:14 |
|
|
nel momento in cui tu usi il loadMovie, mc viene distrutto e ricreato, quindi finchè l'immagine nn viene caricata del tutto, non potrai ricavare nessuna delle proprietà di mc, quindi niente getBytesTotal(), getBytesLoaded(), _width, _heigth...etc... ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
magodellaneve
intermedio


Registrato: 18/05/04 00:28
Messaggi: 184
Località: Verona
|
Oggetto:
Inviato: 04.11.04 | 18:31 |
|
|
non proprio... diciamo che alcune cose si possono fare mentr esi stra ancora caricando, altre no..
per esempio :
il getbytesloaded e getbytestotal si possono fare (altimenti a che servono )
mentre invece, width e heigth no
anche dichiarare una funzione del tipo mc.onEnterFrame non si può fare fintanto che il clip non è completamente caricato |
|
| Torna in cima |
|
|
ARIELE
principiante


Registrato: 22/10/04 18:59
Messaggi: 65
Località: LIVORNO
|
Oggetto:
Inviato: 04.11.04 | 22:56 |
|
|
| ok ho capito ....effettivamente nello script che ho trovato veniva caricato l'originale e poi posizionata una copia ridimensionata....come posso ovviare a questo problema del caricamento??? |
|
| Torna in cima |
|
|
ARIELE
principiante


Registrato: 22/10/04 18:59
Messaggi: 65
Località: LIVORNO
|
Oggetto:
Inviato: 04.11.04 | 23:30 |
|
|
ho provato a fare così:
| Codice: | dati = new LoadVars();
dati.onLoad = function(success) {
if (success) {
z = 0;
k = 0;
for (i=1; i<this.vocals; i++) {
_root.createEmptyMovieClip("clip"+i, i+10);
mc = eval(_root["clip"+i]);
mc._x = 100*i-100+i*10-z*550;
mc._y = k*100;
mc.loadMovie("foto/vocals/vocals_"+i+".jpg");
mc._alpha = 0;
_root.onEnterFrame = function() {
if (mc.getBytesLoaded()>1024 && mc.getBytesLoaded() == mc.getBytesTotal()) {
mc.larg = mc._width;
mc.alt = mc._height;
dimensiona(mc.larg, mc.alt);
delete this.onEnterFrame;
}
};
if (i%5 == 0) {
k++;
z++;
}
}
}
function dimensiona(larg, alt) {
mc._xscale = Math.floor(10000/larg);
mc._yscale = Math.floor(10000/alt);
mc._alpha = 0;
mc.onEnterFrame = function() {
if (this._alpha<100) {
this._alpha += 20;
} else {
this._alpha = 100;
delete this.onEnterFrame;
}
};
}
};
dati.load("foto/vocals/vocals.txt"); |
ma mi appare solo una foto ridimensionata, la numero 2 .....
io penso che il problema stia nel ciclo perche ho provato senza caricare variabili e il problema è lo stesso.....help |
|
| Torna in cima |
|
|
magodellaneve
intermedio


Registrato: 18/05/04 00:28
Messaggi: 184
Località: Verona
|
Oggetto:
Inviato: 05.11.04 | 01:10 |
|
|
secondo me il problema è che la prima immagine che si carica completamente cancella _root.onEnterFrame
per ovviare a ciò potresti creare un onEnterFrame x ogni clip che carichi, ma visto che non lo puoi creare all'interno dei clip stesso (x il fatto che l'enterframe si può fare solo a caricamento completato) ti suggerisco di creare un movie clip aggintivo x ogni imagine.. esempio :
dati = new LoadVars();
dati.onLoad = function(success) {
if (success) {
z = 0;
k = 0;
for (i=1; i<this.vocals; i++) {
createEmptyMovieClip("clip"+i, i+10);
mc = eval(_root["clip"+i]);
mc._x = 100*i-100+i*10-z*550;
mc._y = k*100;
mc.loadMovie("foto/vocals/vocals_"+i+".jpg");
_root.createEmptyMovieClip("clip_enterframe"+i, i+10);
_root["clip_enterframe"+i].onEnterFrame = function (){
if (mc.getBytesLoaded()>1024 && mc.getBytesLoaded() == mc.getBytesTotal()) {
// calcolo dimensioni originali
mc.larg=mc._width
mc.alt=mc._height
// chiamo la funzione di re-dimensionamento
dimensiona(mc.larg, mc.alt)
// cancello enterframe
delete this.onEnterFrame
this.removemovieclip();
}
}
if (i%5 == 0) {
k++;
z++;
}
}
}
};
function dimensiona(larg, alt){
mc._xscale = Math.floor(10000/larg)
mc._yscale = Math.floor(10000/alt)
mc._alpha = 0;
}
dati.load("foto/vocals/vocals.txt");
ora non ho tempo di testare il codice che ho scritto.. non so se funziona o se ci sono errori di ortografia... era x darti l'idea del concetto... prova e facci sapere
ciauz |
|
| Torna in cima |
|
|
ARIELE
principiante


Registrato: 22/10/04 18:59
Messaggi: 65
Località: LIVORNO
|
Oggetto:
Inviato: 05.11.04 | 16:48 |
|
|
mmmmmmmmmmm.....mi sa che sono + duro del previsto.... ho provato il tuo codice aggiungendo la funzione finale per farle apparire gradualmente...ma niente....
Se sia "clip i" che "clip_enterframe i" sono posizionati sul livello i+10 non appare nulla
se invece li posiziono su livelli diversi ( ad esempio rispettivamente i+9 e i+10) appaiono tutte grandi tranne l'ultima che si ridimensiona....
io cmq continuo a provare... |
|
| Torna in cima |
|
|
|