Originariamente inviato da Eneide
Il preload funzionava anche a me, ma rimane il problema legato al fatto che i components non vengano "inclusi" nel conteggio..
che funzionava ne sono sicuro, ma se non hai fatto come ho scritto ti parte da meta' o 3/4 invece che partire da zero ...
Comunque c'e' un altro metodo ancora, basato sempre su loadMovieNum ma che sfrutta il RuntimeSharing ...
immagina di avere un file __components.swf dove al suo interno ci sono tutti i components che vuoi ( va ricordato che 1 components pesa 50 Kb ma 6 components ne pesano 90 , 100 massimo perche' hanno dell' ActionScript comune che una volta esportato e' gia' disponibile per gli altri... ) e tutti sono esportati per runtime_sharing ( linkage, export for runtime_sharing ).
Sul tuo movieClip principale avrai a frame 3 una datagrid , dove tramite linkage setti "import for runtime sharing".
In questo modo il tuo movieClip principale non pesera' niente, avra' il components esistente ma impercettibile, solo che devi assicurarti di aver caricato in loadMovieNum tale components del file di runtime sharing ...
codice:
stop();
// creo una variabile per il livello con i components
var __levelDepth:Number = this.getNextHighestDepth() + 1;
// carico in loadMovieNum l' swf contenente i components
loadMovieNum( "__components.swf", __levelDepth );
// creo un oggetto di riferimento
var __comps:Object;
// prendo i bytes caricati fino ad ora ( custing utile ma non indispensabile )
var justLoaded:Number = Number( this.getBytesLoaded() );
this.onEnterFrame = function():Void {
// verifico che il livello con i components sia in download e raggiungibile
if( this["_level" + __levelDepth] != undefined && __comps == undefined ) {
// e in caso lo assegno a __comps
__comps = this["_level" + __levelDepth];
}
if( __comps != undefined ) {
if( __comps._visible == true ) {
__comps._visible = false;
}
// prendo i valori per questo swf + l' swf con i components
// ( custing per livello attuale utile ma non indispensabile )
var l:Number = Number( this.getBytesLoaded() ) + __comps.getBytesLoaded() - justLoaded;
var t:Number = Number( this.getBytesTotal() ) + __comps.getBytesTotal() - justLoaded;
var p:Number = Math.floor( ( l / t ) * 100 );
// barra con la scala
barLoader.bar._xscale += ( p - barLoader.bar._xscale ) * 0.2;
// verifico che sia tutto caricato
if( t > 0 && l >= t && p == 100 ) {
this.gotoAndPlay( 2 );
// a frame 3 c'e' uno stop con una datagrid
// importataa in runtime sharing
delete this.onEnterFrame;
}
}
}
queto e' l' esempio, filmato 1 peso 660 byte, filmato con vari components peso 90 Kb ... preload effettuato con successo ...
http://www.3site.it/ESEMPI/RUNTIME_SHARING/