Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [AS3]Preload che sposta una maschera con tweener

    Salve a tutti, eccomi di nuovo qui con un altro mio problemino....
    Sto creando un preload che spostando una maschera mi dovrebbe dare l'effetto di riempimento di una forma.
    Per spostare la maschera sto provando con il tweener caurina ma non và....posto il codice per capire dove sbaglio:
    codice:
    private function init():void 
    {
    	url='img.swf';
    	var request:URLRequest=new URLRequest(url);
    	loader=new Loader();
    	initListeners(loader.contentLoaderInfo);
    	loader.load(request);			
    }
    private function initListeners(dispatcher:IEventDispatcher):void 
    {
    	dispatcher.addEventListener(Event.OPEN,inizia);
    	dispatcher.addEventListener(ProgressEvent.PROGRESS,inCaricamento);
    	dispatcher.addEventListener(Event.COMPLETE,completato);
    }
    		
    private function inizia(event:Event):void 
    {
    	preload_mc.visible=true;
    }
    		
    private function inCaricamento(event:ProgressEvent):void 
    {
    	var percentuale:uint=(event.bytesLoaded/event.bytesTotal)*100; 
            Tweener.addTween(preload_mc.mask_mc{x:116,time:percentuale,delay:0,transition:"linear"});			
    }
    		
    private function completato(event:Event):void 
    {
    	preload_mc.visible=false;
    	addChild(loader);
    }
    l'oggetto che cerco di spostare con la tweener si trova alla posizione x=0 e devo farlo arrivare a x=116 con il tempo calcolato con 'percentuale'.
    Dove sbaglio? Eppure non mi da nessun errore....

  2. #2
    nessuno può darmi una mano?

  3. #3
    ciao simone.
    Ho appena dato un occhiata al tuo post e posso subito dire che così a prima vista mi sembra che ci siano alcune cosucce che secondo me non vanno.
    Analizziamole con calma
    Codice PHP:
    private function inCaricamento(event:ProgressEvent):void 
    {
    var 
    percentuale:uint=(event.bytesLoaded/event.bytesTotal)*100
            
    Tweener.addTween(preload_mc.mask_mc{x:116,time:percentuale,delay:0,transition:"linear"});            

    come vedi qui fai un errore...
    setti al parametro time della caurina il tuo valore di percentuale ed è sbagliato perchè se ci pensi un attimo ti accorgerai sicuramente che percentuale viene aggiornata continuamente durante il preload fino ad arrivare al valore 100

    se tu la imposti come time ti ritroverai ad avere ad ogni incremento del caricamento una tween che dura sempre di più fino a durare 100 secondi

    cioè la tua maschera si sposterà in posizione x=116 dopo 100 secondi
    impensabile

    quello che posso suggerirti di fare è di dividere 116/100
    che esce circa
    1,16
    e di fare una cosa del genere
    Codice PHP:
    //nelle varibili di istanza dichiari
    private var spostamento:int=1,16;

    //----------------------------------------------

    //ricordati di settare la larghezza della tua maschera a 1
    preload_mc.mask_mc.width=1;

    private function 
    inCaricamento(event:ProgressEvent):void 
    {

    var 
    percentuale:uint=(event.bytesLoaded/event.bytesTotal)*100
    //qui invece della x devi settare la width della maschera cioè si deve allargare di 116 px   

    //qui setti di volte in volte la variabile spostamento e la aggiorni fino ad arrivare al valore 116   
    spostamento=spostamento*percentuale;
    Tweener.addTween(preload_mc.mask_mc{width:spostamento,time:0.2,delay:0,transition:"linear"});            

    spero di essere stato chiaro
    www.splashcode.it il blog dedicato ad ogni Web-Master

  4. #4
    In effetti non ci avevo pensato, ed è normale che non funziona.......
    proverò subito la tua soluzione...grazie!!

  5. #5
    Ciao Mirco,
    la tua soluzione va benissimo però ho dovuto far un piccolo aggiustamento sulla tween.
    Infatti agendo sulla larghezza della maschera
    codice:
    preload_mc.mask_mc.width=1;
    non funzionava così ho dovuto eliminare questa riga e sostituire nella tween x:spostamento al posto di width:spostamento.
    In questa maniera funziona perfettamente.
    Grazie ancora per il tuo grande aiuto!!!

  6. #6
    figurati non c'è di che
    purtroppo non sapevo come era strutturato il tuo clip maschera quindi podarsi che per quello non funzionava...
    cmq credo che il problema era dovuto al punto di ancoraggio della maschera del tuo mc..
    infatti sicuramente la larghezza aumentava ma in base al punto di ancoraggio che secondo me non era fissato in modo corretto...
    ti spiego meglio
    se volevi un riempimento dal basso verso l'alto man mano che si carica dovevi fissare il punto di ancoraggio in basso

    se volevi un riempimento dall'alto al basso dovevi fissare il punto di ancoraggio in alto...
    cosi funzionava sicuramnete

    l'importante che hai risolto
    www.splashcode.it il blog dedicato ad ogni Web-Master

  7. #7
    ho capito.....va bè, anche così mi va benissimo....
    un salutone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.