caricamento dinamico di un file .swf

acweb-2004

Utente Attivo
7 Giu 2006
133
0
16
Monza
www.acweb-2004.it
ciao a tutti
in un filmato flash, costituito solo da un preload, carico il filmato vero e proprio con un loadclip.
Questo mi crea un problema, che il filmato in caricamento inizia immediatamente a riprodursi senza attendere la fine del suo caricamento. Per cui quando il preload finisce il filmato caricato è già iniziato.
per ovviare a ciò utilizzo questo codice:
mclListener.onLoadStart = function(target_mc:MovieClip):Void {
target_mc.stop();
}
che mi ferma il filmato
e quest'altro codice per farlo partire a caricamento avvenuto:
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
target_mc._alpha = 100;
target_mc._width = 670;
target_mc._height = 537;
target_mc._x = 0;
target_mc._y = 0;
target_mc.play();
};
il problema consiste che il filmato viene stoppato ad inizio caricamento, ma a fine caricamento non riparte.
Dove sbaglio e che posso fare????

ciao

augusto
 
scusa, ma non capisco proprio il senso di tutta questa manovra...non riesco a vederne l'utilità. :rolleyes:
se vuoi caricare un filmato in un altro file swf, che io sappia, il preload lo metti nel filmato che viene caricato così parte a preload teminato senza nessun problema.
 
se utilizzi swfobject per gestire nella pagina web il filmato flash, al posto di AC_RunActiveContent, il filmato parte solo ala fine del caricamento di tutto il file swf, per cui il preload diventa inutile, in quanto quando inizia il filmato il tutto è stato caricato ed il preload non viene visualizzato, ma sopratutto se il filmato da caricare è di discrete dimensioni non viene visualizzato nulla sino al completamento del caricamento. Poichè non sono riuscito a capire come fare partite immediatamente il filmato con swfobject cerco con questo trucco di ovviare al problema.
In ogni caso se nel primo filmato non ci fosse un preload ma una animazione, ed alla fine ne devo caricare dinamicamente un'altra il problema comunque esiste.

ciao:hammer:
 
'In ogni caso se nel primo filmato non ci fosse un preload ma una animazione, ed alla fine ne devo caricare dinamicamente un'altra il problema comunque esiste.'
secondo me no, perchè il preload è legato ai tempi di caricamento di un qualcosa mentre un'animazione è indipendente e va per la sua strada senza essere collegata a niente.
se non si vede niente a me non sembra una bella cosa, perchè sembra che il collegamento non funzioni, che l'url sia sbagliato o cose del genere...per lo meno per me non c'è niente di più fastidioso che stare davanti a una pagina bianca senza sapere che succede....non riesco a capire se è quello che invece vuoi tu.
un filmato, soprattutto se è pesante, ha necessità di un tempo di caricamento e il preload ha la funzione appunto di farti capire che sta succedendo qualcosa e sei nel posto giusto, quanto tempo ci mette approssimativamente, a distrarti e far passare prima il tempo di attesa, da qui i preload divertenti o più elaborati, e ti permette di decidere se val la pena aspettare oppure andarsene per altri lidi.
in conclusione continuo a non riuscire a capire cosa vuoi che succeda..scusami :D
 
Ultima modifica:
appunto, voglio che si visualizzi un preload in attesa che il caricamento del filmato vero e proprio si carichi, e non si veda uno spazio vuoto nella pagina (cosa che ora avviene utilizzando swfobject).
Se però mentre visualizzo il preload (primo swf) che mi intrattiene durante il caricamento in modo dinamico del filmato vero e proprio (secondo swf) quest'ultimo inizia ad essere riprodotto, la parte iniziale dello stesso non viene visualizzata.

ciao:hammer:
 
...ma continuo a non capire perchè non puoi mettere il preload al tuo filmato e utilizzarlo come unico file e usando lo script normale cosa che risolverebbe ogni tuo problema? :confused:
tenere un file esterno ha, di solito, lo scopo di mantenere leggero il file principale e caricare i diversi file solo se e quando vengono richiamati.
mi sembra di capire che il tuo file principale è lì per caricare il file secondario.
insomma non so che dire forse sono ottusa, ma continua a sembrarmi che il tutto non abbia alcun senso....:rolleyes:
 
perchè utilizzando il Js swfobject.js al posto di AC_RunActiveContent per richiamare il file .swf nella pagina web, quest'ultimo viene fatto partire solo a caricamento ultimato. Durante l'attesa viene mostrato uno spazio vuoto, che invece dovrebbe essere riempito con il preoad (ma swfobject non lo fa partire).
Puoi vedere un esempio a questa url:
http://www.acweb-2004.it/treckingci7.htm
e clicca su "vai al filmato" la pagina si oscura, ma solo dopo parecchi secondi (che dipendono dalla velocità della linea) esso viene visualizzato.
Se avessi due filmati: il primo con il preload, assulutamente leggero che si carica immediatamente, e che poi mi carica il secondo, ma nel frattempo mi visualizza una animazione.


grazie

ciao
 
fatto, visto.
dunque, se il filmato è troppo leggero il preload non lo visualizza perchè è talmente rapido che neanche lo vedi.
se metti il preload nella slideshow, tu visualizzeresti il tuo preload (che potrebbe benissimo essere la tua animazione) e la slideshow si aprirebbe quando è tutta carica.
non ne so abbastanza per cui non mi ci giocherei la testa, ma credo che lo script necessario per le versioni più recenti e soprattutto per ie è più per una visualizzazione coretta che per i tempi di caricamento.
 
nel filmato del preload ho questo codice per il caricamento del swf esterno:
stop();
_global.perc = 0; // campo di percentuale caricamento film

// oggetto listener che mi servirà per gestire gli eventi dell'oggetto movieClipLoader(oggetto che consente
// di caricare i file esterni
var mclListener:Object = new Object();
//gestisco evento onLoadProgress (evento scatenato durante il carimento del file .swf. fino a che non è caricato)
// mi torna dei parametri... il clip che contiene il file .swf.. i bytes caricati e i bytes totali
mclListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
_global.perc = Math.round((bytesLoaded/bytesTotal)*100);
if (_global.perc == 100) {
attendi._x = -400;
attendi._y = -250;
} else {
attendi._x = 400;
attendi._y = 250;
attendi._alpha = 100;
}
};

//gestisco l'animazione di attesa
var attendi:MovieClip = this.createEmptyMovieClip("clipattesa", 100);
//creo movieclip contenitore
attendi = clipattesa.attachMovie("cpreload", "cpreload", 1);
// applico la completa trasparenza al movieclip creato
attendi._alpha = 0;

// gestione caricamento swf
var clipBordo:MovieClip = cont.attachMovie("mcBordo", "mcBordo", 1000);
_root.cont._x = 0;
_root.cont._y = 0;
var pathSwf:String = "treckingfe7f.swf";
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
target_mc._alpha = 100;
target_mc._width = 670;
target_mc._height = 537;
target_mc._x = 0;
target_mc._y = 0;
target_mc.play();
};
mclListener.onLoadStart = function(target_mc:MovieClip):Void { // fermo la visualizzazione del filmato ad inizio del suo caricamento
target_mc.stop();
}

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);
var swfContainer:MovieClip = clipBordo.contenitore;
swfContainer._alpha = 0;
mcLoader.loadClip(pathSwf,swfContainer);

il "target_mc.stop();" presente nel "onLoadStart" funziona in quanto mi ferma il fimato che sto caricando, quello che non mi funziona è il "target_mc.play();" a fine caricamento, percè poi il filmato caricato non viene mandato in play. Mi sai dire perchè e se ci sono errori nello script????

ciao

augusto
 
No, ho scoperto facendo delle prove che in effetti il filmato viene immediatamente stoppato, ed al play parte (mi ritrovo delle trace che ho disseminato nei vari fotogrammi), solo che non viene visualizzato, e questo anche aggiungendo "target_mc._visible = true;". Allora ho risolto in questo modo:
poiche sembra che la mancata visualizzazione dipenda dal:
mclListener.onLoadStart = function(target_mc:MovieClip):Void { // fermo la visualizzazione del filmato ad inizio del suo caricamento
target_mc.stop();
}

ho eliminato lo stop, lascio iniziare il filmato, e poi al posto di mettere nell'onLoadInit:
target_mc.play();
ho messo
target_mc.gotoAndPlay(1);

comunque tante grazie per le tue risposte

ciao

augusto
 

Discussioni simili