Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    680

    AS3: problema caricamento 2 immagini da PC

    Ciao a tutti,
    sto utilizzando il codice che riporto qua sotto per caricare un immagine esterna nel mio swf in esecuzione. All'immagine caricata viene associata la funzione drag per lo spostamento... ora:
    se io carico un immagine tutto ok, se carico una seconda immagine la prima non la posso più toccare e il drag va solo sulla seconda, così come se carico una terza immagine la seconda si blocca e così via.
    Tutto questo giusto perchè carico nella stessa variabile (contenitore) l'immagine esterna.
    Ciò che vorrei sapere è come posso far si che le immagini vengano caricate in variabili diverse e che di conseguenza il drag e le altre funzioni si possano utilizzare su tutte le immagini caricate.

    Spero di essere stato abbastanza chiaro.
    Questo il codice:

    codice:
    var _loadFile:FileReference;  
    
    carica.addEventListener(MouseEvent.CLICK, caricaFile);  
    function caricaFile(evt:MouseEvent)
    {
    	_loadFile = new FileReference();  
    	_loadFile.addEventListener(Event.SELECT, scegliFile);  
    	var filtro:FileFilter = new FileFilter("Immagini: (*.jpeg, *.jpg, *.gif, *.png)", "*.jpeg; *.jpg; *.gif; *.png");  
    	_loadFile.browse([filtro]);  
    }
    
    function scegliFile(evt:Event)
    {  
    	_loadFile.removeEventListener(Event.SELECT, scegliFile);  
    	_loadFile.addEventListener(Event.COMPLETE, fileCaricato);  
    	_loadFile.load();  
    }
    
    function fileCaricato(evt:Event)  
    {  
    	_loadFile.removeEventListener(Event.COMPLETE, fileCaricato);  
    	var immagine:Loader = new Loader();  
    	immagine.contentLoaderInfo.addEventListener(Event.COMPLETE, immaginePronta);  
    	immagine.loadBytes(evt.target.data);  
    } 
    
    function immaginePronta(evt:Event)  
    {  
    	LoaderInfo(evt.target).removeEventListener(Event.COMPLETE,immaginePronta);  
    	volantino.contenitore = new Sprite();  
    	volantino.contenitore.addChild(evt.target.content);
    	addChild(volantino.contenitore);
    	{
    		function startDragging3(event:MouseEvent):void
    		{
    			volantino.contenitore.startDrag();
    		}
    		volantino.contenitore.addEventListener(MouseEvent.MOUSE_DOWN, startDragging3);
    		
    		function stopDragging3(event:MouseEvent):void
    		{
    			volantino.contenitore.stopDrag();
    		}
    		volantino.contenitore.addEventListener(MouseEvent.MOUSE_UP, stopDragging3);
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    I metodi startDrag() e stopDrag() li puoi applicare ai MovieClip contenitori quindi risolvi inserendo ogni immagine in un suo specifico contenitore.

    Nell'esempio che segue ho creato 3 contenitori vuoti con nome istanza 'contenitore1', 'contenitore2' e 'contenitore3'.
    Li ho posizionati sullo stage e nel codice li ho inseriti in un Array.
    Ho creato una variabile 'numContenitore' che incremento a ogni immagine caricata e in questo modo assegno un contenitore diverso a ogni immagine.

    I metodi startDrag() e stopDrag() vengono poi eseguiti dallo specifico contenitore che ha chiamato l'evento MouseDown e MouseUp.

    Codice PHP:
    var _loadFile:FileReference;
    var 
    immagine:Loader;

    var 
    contenitori:Array = new Array(contenitore1,contenitore2,contenitore3);
    var 
    numContenitore:Number 0

    carica
    .addEventListener(MouseEvent.CLICKcaricaFile);
    function 
    caricaFile(evt:MouseEvent)
    {
        
    _loadFile = new FileReference();
        
    _loadFile.addEventListener(Event.SELECTscegliFile);
        var 
    filtro:FileFilter = new FileFilter("Immagini: (*.jpeg, *.jpg, *.gif, *.png)","*.jpeg; *.jpg; *.gif; *.png");
        
    _loadFile.browse([filtro]);
    }
    function 
    scegliFile(evt:Event)
    {
        
    _loadFile.removeEventListener(Event.SELECTscegliFile);
        
    _loadFile.addEventListener(Event.COMPLETEfileCaricato);
        
    _loadFile.load();
    }
    function 
    fileCaricato(evt:Event)
    {
        
    _loadFile.removeEventListener(Event.COMPLETEfileCaricato);
        
    immagine = new Loader();
        
    immagine.contentLoaderInfo.addEventListener(Event.COMPLETEimmaginePronta);
        
    immagine.loadBytes(evt.target.data);
    }
    function 
    immaginePronta(evt:Event)
    {
        
    LoaderInfo(evt.target).removeEventListener(Event.COMPLETE,immaginePronta);
        
    contenitori[numContenitore].addChild(immagine);
        
    contenitori[numContenitore].addEventListener(MouseEvent.MOUSE_DOWNstartDragging3);
        
    contenitori[numContenitore].addEventListener(MouseEvent.MOUSE_UPstopDragging3);
        
    numContenitore ++ ;
        if (
    numContenitore 2)
        {
            
    numContenitore 0;
        }
    }
    function 
    startDragging3(evento:MouseEvent):void
    {
        
    evento.currentTarget.startDrag();
    }
    function 
    stopDragging3(evento:MouseEvent):void
    {
        
    evento.currentTarget.stopDrag();


    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    680
    Grazie mille, così funziona perfettamente, però così son costretto ad avere un numero predefinito di immagini.. nel tuo esempio 3.
    Non posso fare una cosa dinamica anche per i movieclip?

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    ... no, in questo caso sei costretto ad avere un numero predefinito di MovieClip non di immagini.
    Un'eventuale 4a immagine viene caricata nel primo contenitore sopra la precedente.

    Anche se crei i MovieClip da codice, questi devono avere un nome univoco, una posizione e un addChild che li aggiunge allo stage.




    ciao

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.