ruotazione oggetto con pulsanti e/o con mouse

matsu

Nuovo Utente
9 Lug 2009
5
0
0
Salve a tutti, devo realizzare un player per un oggetto in flash.
Ho scattato 60 foto all'oggetto bloccandolo nel suo baricentro e facendolo girare su se stesso al fine di avere il suo giro completo.
A questo punto ho fatto un movie clip con all'interno 60 frame, uno per ogni posizione scattata. Questo per farlo andare in loop e vederlo girare su se stesso all'infinito.


Però ora ho bisogno che l'oggetto, da fermo, si possa muovere su se stesso:

- attraverso l'ausilio di due pulsanti (sinstra - destra) che tenendoli premuti si muove alla stessa velocità del loop in senso orario o antiorario a seconda del pulsante.

- con il trascinamento del mouse. Se ad esempio dal centro dell'oggetto, clicco e tenendo premuto mi sposto con il mouse verso sx, l'oggetto deve girare in senso orario, viceversa se vado verso dx l'oggetto si deve muovere in senso antiorario (più omeno l'effetto deve essere quello che si vede in molti siti web con macchine fotografiche o altri oggetti tecnologici..se volete vi posso postare qualche link). [funzione drag and drop??]

Non so proprio come muovermi..prego aiutatemi..

Grazie.

marco
Rispondi con citazione
 

matsu

Nuovo Utente
9 Lug 2009
5
0
0
grazie per la risposta..
cmq non credo che riuscire a realizzarlo sia super complicato.

Soprattutto per quanto riguarda il primo problema
- attraverso l'ausilio di due pulsanti (sinstra - destra) che tenendoli premuti si muove alla stessa velocità del loop in senso orario o antiorario a seconda del pulsante.
non credo sia troppo difficile..basta che assegni ad esempio al pulsante "destra" di andare al frame successivo..o viceversa con il pulsante "sinistra" andasse a quello precedente (il top sarebbe se fin tanto tengo premuto il pulsante, mi scorresse i frame uno dopo l'altro).



Per quanto riguarda invece il secondo problema
- con il trascinamento del mouse. Se ad esempio dal centro dell'oggetto, clicco e tenendo premuto mi sposto con il mouse verso sx, l'oggetto deve girare in senso orario, viceversa se vado verso dx l'oggetto si deve muovere in senso antiorario
il problema qui è più complesso..e davvero non so da che parte iniziare..mi ci vorrebbe un actionscript (credo) che consideri il movimento del mouse..e che agisca di conseguenza..

davvero nessuno sa come aiturami??
 

carla146

Utente Attivo
14 Lug 2004
1.539
0
0
mhm?
www.carla146.it
per il primo puoi usare allora gotoAndPlay()
e per il secondo puoi trovare un tutorial per le slideshow orizzontali che si muovono con lo spostamento del mouse.
 

matsu

Nuovo Utente
9 Lug 2009
5
0
0
per il primo puoi usare allora gotoAndPlay()

..quindi qualcosa del tipo gotoAndPlay(next_frame), o gotoAndPlay(previous_frame) ???
Cmq considera che a me servirebbe che fin tanto tengo premuto il pulsante mi scorre i frame..altrimenti ad ogni singolo click deve andare solo di 1 frame alla volta..



e per il secondo puoi trovare un tutorial per le slideshow orizzontali che si muovono con lo spostamento del mouse.

mmmh..perché no..può essere una valida soluzione..
hai per caso qualcosa a portata di "tastiera" o conosci qualche sito dove posso andare sul sicuro per trovare qualcosa del genere??



grazie ancora per tutto il supporto..

:D
 

matsu

Nuovo Utente
9 Lug 2009
5
0
0
sono 2/3 gg che non faccio altro che guardare esempi..

ma niente che si avvicini a quello che cerco io..

:(:(:(
 

Silver55

Nuovo Utente
28 Lug 2009
4
0
1
ciao,

... questo esempio mostra come ottenere un effetto di "rotazione" visualizzando le immaggini (.jpg) corrispondenti ai vari "scatti".
Tutte le immagini sono preventivamente caricate in un Array e visualizzate singolarmente al CLICK sui bottoni, o in progressione temporizzata quando si tiene il MOUSE DOWN.
E' inoltre previsto un file XML contenente i nomi delle immagini (scatti), cosi' da poter avere una maggiore generalizzazione e diminuzione del peso dell'SWF.

... in allegato il .fla completo con il file xml e le immagini di esempio

PHP:
// ................................................................... 
//  NAME : RuotaOggetto.fla - [ CS3 - AS3 ] 
//         Esempio di rotazione di un oggetto caricando, da un file 
//         XML, gli n "scatti" (.jpg) 
// 
//  Il file XML :  
// 
//  <scatti> 
//    <foto url="scatto1.jpg" /> 
//    <foto url="scatto2.jpg" /> 
//    <foto url="scatto3.jpg" /> 
//    etc..... 
//  </scatti>
//  
//  ... sullo stage sono presenti i bottoni btn_sx e btn_dx 
// 
// ................................................................... 
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.IOErrorEvent;

// ... variabili globali : 

var richiestaXML      :URLRequest; 
var caricatoreXML     :URLLoader; 

var gestoreXML        :XML; 
var listaFotoUrl      :XMLList; 


var richiestaIMG      :URLRequest; 
var caricatoreIMG     :Loader; 
var caricatoreInfoIMG :LoaderInfo; 

// ... Array contenente le immagini caricate dal file XML 
var arrayIMG          :Array; 

// ... il numero di immagini presenti nel file XML 
var numImages         :uint; 

// ... l'immaggine corrente (l'iesimo scatto) 
var currentImage      :uint; 

// ... i timer per la gestione continua della rotazione 
var timerSinistra     :Timer;
var timerDestra       :Timer;


// ... crea gli oggetti relativi : 

// ... l'oggetto URL relativo al File XML 
richiestaXML   = new URLRequest(); 

// ... l'oggetto URLLoader per il caricamento dell'XML 
caricatoreXML  = new URLLoader(); 

// ... l'ascoltatore evento : COMPLETE al caricatore XML  
caricatoreXML.addEventListener(Event.COMPLETE, completatoCaricamentoXML); 

// ... l'ascoltatore evento : IO_ERROR per eventuali errori  
caricatoreXML.addEventListener(IOErrorEvent.IO_ERROR, erroreCaricamentoXML); 


// ... l'Array che conterrà le immagini caricate  
arrayIMG       = new Array(); 

// ... gli oggetti timer per la rotazione continua
//     ( impostare i millisisecondi : es. 85  ) 
timerSinistra  = new Timer(85, 0);
timerSinistra.addEventListener("timer", onTimerSinistra);

timerDestra    = new Timer(85, 0);
timerDestra.addEventListener("timer", onTimerDestra);

// ... 

// ... assegna l'url relativo al file XML da caricare  
richiestaXML.url = "scatti.xml"; 


// ... ok, carica il file XML  
caricatoreXML.load(richiestaXML); 

// ... 

// ................................................................... 
//  FUNCTION : completatoCaricamentoXML()  
//             Evento : COMPLETE 
//             questa funzione sara' richiamata quando il file XML 
//             sara' copletamente caricato 
// ................................................................... 
function completatoCaricamentoXML(evento:Event):void  
{ 
    // ... caricamento del File XML Completato!  
     
    // ... crea un oggetto XML :
    
    // ... l'oggetto XML consente di accedere ed     
    //     estrarre i valori relativi ai TAGS ed agli  
    //     ATTRIBUTI di un contenuto di dati XML. 

    // ... al costruttore viene passata la proprietà .data  
    //     dell'URLoader (il contenuto dei dati letti) 
    gestoreXML      = new XML(caricatoreXML.data); 
     
    // ... <foto url="scatto1.jpg" /> 

    // ... estrai i valori di tutti gli ATTRIBUTI url
    //     del TAG <foto> ed inseriscili in un oggetto XMLList
    listaFotoUrl    = gestoreXML.foto.@url; 

    // ... ora nell'array : listaFotoUrl ci sono i nomi di tutte 
    //     le immagini da caricare 
	
    // ... salva il numero dei TAGS <foto> presenti nel file XML
    //     ( corrisponde al numero di immagini ) 
    numImages       = listaFotoUrl.length();    
	
    // ... imposta l'indice dell'Immagine corrente a ZERO   
    currentImage    = 0;

    // ... ok!, carica la prima immagine 
    caricaImmagine(currentImage);
} 
// ................................................................... 

// ................................................................... 
//  FUNCTION : erroreCaricamentoXML()  
//             Evento : IO_ERROR 
//             questa funzione sara' richiamata se dovesse verificarsi  
//             un errore durante durante il caricamento del file XML  
// ................................................................... 
function erroreCaricamentoXML(evento:IOErrorEvent):void  
{
    // ...  
    // trace("... errore caricamento file XML : " + evento.type); 
} 
// ................................................................... 

// ................................................................... 
//  FUNCTION : caricaImmagine()  
//             caricamento di una singola immagine (i-esima)
// ................................................................... 
function caricaImmagine(p_idxImg:uint):void  
{
     // ... crea gli oggetti per il caricamento del'iesima immagine 
	
     // ... l'oggetto URL   
     richiestaIMG      = new URLRequest(); 

     // ... l'oggetto Loader 
     caricatoreIMG     = new Loader(); 
     
     // ... il contentLoaderInfo a cui associare gli asoltatori
     caricatoreInfoIMG = LoaderInfo(caricatoreIMG.contentLoaderInfo); 
	
    // ... aggiungi gli asacoltatori :
	
    // ... l'ascoltatore evento : COMPLETE al caricatore XML  
    caricatoreInfoIMG.addEventListener(Event.COMPLETE, completatoCaricamentoIMG); 

    // ... l'ascoltatore evento : IO_ERROR per eventuali errori  
    caricatoreInfoIMG.addEventListener(IOErrorEvent.IO_ERROR, erroreCaricamentoIMG); 
	
    // ... assegna url dell'immagine da caricare   
    richiestaIMG.url  = listaFotoUrl[p_idxImg]; 

    // ... ok!, carica l'iesima immagine  
    caricatoreIMG.load(richiestaIMG);     
} 
// ................................................................... 

// ................................................................... 
//  FUNCTION : completatoCaricamentoIMG()  
//             Evento : COMPLETE 
//             questa funzione sara' richiamata al caricamento    
//             completato di ogni immagine 
// ................................................................... 
function completatoCaricamentoIMG(evento:Event):void  
{ 
    // ... l'iesima IMG e' stata caricata completamente!  

    // ... l'immagine caricata  
    var imgLoader:Loader = Loader(evento.currentTarget.loader);
	
    // ... salva l'immagine nell'Array 
    arrayIMG[currentImage] = imgLoader; 
	
    // ... controlla se tutte le immagini sono state caricate 
    if ( currentImage < (numImages - 1) )      
    { 
        // ... no, incrementa contatore  
        currentImage++; 

        // ... e carica la prossima  
        caricaImmagine(currentImage);
    } 
    else  
    { 
        // ... Ok!, TUTTE le immagini sono state caricate nell'Array
		
        // ... reimposta l'indice dell'immagine corrente 
        currentImage = 0;
		
        // ... aggiungi gli ascoltatori per la gestione degli eventi 
        //     sui Bottoni (SINISTRA e DESTRA) 
        btn_sx.addEventListener(MouseEvent.MOUSE_DOWN, onMouseGiu);		
        btn_dx.addEventListener(MouseEvent.MOUSE_DOWN, onMouseGiu);	
		
        btn_sx.addEventListener(MouseEvent.MOUSE_UP, onMouseSu);
        btn_dx.addEventListener(MouseEvent.MOUSE_UP, onMouseSu);		
        // ... imposta il Mouse mode ( cursor Hand )  
        btn_sx.buttonMode = true;
        btn_dx.buttonMode = true;

        // ... e visualizza la prima immagine! 
        ShowImage(currentImage);
    } 
} 
// ................................................................... 

// ................................................................... 
//  FUNCTION : erroreCaricamentoIMG()  
//             Evento : IO_ERROR 
//             questa funzione sara' richiamata se dovesse verificarsi  
//             un errore durante durante il caricamento di un'immagine 
// ................................................................... 
function erroreCaricamentoIMG(evento:IOErrorEvent):void  
{
    // ... 
    // trace("... errore caricamento file IMG : " + evento.type); 
} 
// ................................................................... 

// ................................................................... 
//  FUNCTION : ShowImage()
//             visualizzaione dell'i-esima immagine  
// ................................................................... 
function ShowImage(p_idxImg:uint)
{
    // ... dichiara una variabile locale  
    var img:Loader;

    // ... get dell'immagine   
    img = arrayIMG[p_idxImg]; 
	
    // ... posiziona l'immagine sullo Stage (o in altro contenitore)   
    img.x = 100;
    img.y = 10;

    // ... aggiungi l'immagine allo stage (o ad altro contenitore)
    addChild(img);
}
// ................................................................... 


// ................................................................... 
//  FUNCTION : onMouseGiu()
//             Evento : MOUSE_DOWN 
//             questa funzione sara' richiamata al MOUSE DOWN su uno 
//             dei due bottoni 
// ................................................................... 
function onMouseGiu(evento:MouseEvent)
{
    // ... variabile locale che conterra' il riferimento del bottone 
    var btn :MovieClip;
	
    // ... get del Bottone     
    btn = MovieClip(evento.currentTarget);

    // ... test del Bottone  
    if (btn == btn_sx) 
    {
        // ... ruota una sola volta a sinistra   
        vaiSinistra();
		
        // ... e START del timer di sinistra  
        timerSinistra.start();
    }
    else 
    {
        // ... ruota una sola volta a destra   
        vaiDestra();
		
        // ... e START del timer di destra  
        timerDestra.start();
    }
}
// ................................................................... 


// ................................................................... 
//  FUNCTION : onMouseSu()
//             Evento : MOUSE_UP 
//             questa funzione sara' richiamata al MOUSE UP su uno 
//             dei due bottoni 
// ................................................................... 
function onMouseSu(evento:MouseEvent)
{
    // ... variabile locale che conterra' il riferimento del bottone   
    var btn :MovieClip;
	
    // ... get del Bottone     
    btn = MovieClip(evento.currentTarget);

    // ... test del Bottone  
    if (btn == btn_sx) 
    {
        // ... STOP del timer di sinistra 
        timerSinistra.stop();
    }
    else 
    {
        // ... STOP del timer di destra  
        timerDestra.stop();
    }
}
// ................................................................... 


//.....................................................................
//  FUNCTION : onTimerSinistra()
//             Evento : TIMER 
//             questa funzione sara' richiamata ogni n millisecondi 
//             dall'avvio del timer a cui e' associata  
//.....................................................................
function onTimerSinistra(evento:TimerEvent):void
{
    // ... al MOUSE DOWN il timer e' avviato, ma continua la  
    //     visalizzazione delle immagini solo se e' trascorso 
    //     un po' di tempo ( es. dopo 3 * millisiecodi )
    if ( timerSinistra.currentCount > 3 )   
    {
        vaiSinistra();
    }
}
//.....................................................................

//.....................................................................
//  FUNCTION : onTimerDestra()
//             Evento : TIMER 
//             questa funzione sara' richiamata ogni n millisecondi 
//             dall'avvio del timer a cui e' associata  
//.....................................................................
function onTimerDestra(evento:TimerEvent=null):void
{
    // ... al MOUSE DOWN il timer e' avviato, ma continua la  
    //     visalizzazione delle immagini solo se e' trascorso 
    //     un po' di tempo ( es. dopo 3 * millisiecodi )
    if ( timerDestra.currentCount > 3 )   
    {
        vaiDestra();
    }
}   
//.....................................................................


//.....................................................................
//  FUNCTION : vaiSinistra()
//             visualizza l'immagine precedente nell'Array               
//.....................................................................
function vaiSinistra():void
{
    // ... remove dell'iesima immagine 
    removeChild(arrayIMG[currentImage])
	
    // ... controlla l'indice   
    if ( currentImage == 0 )   
    {
        // ... se la prima, vai all'ultioma 
        currentImage = (numImages - 1);
    }
    else 
    {
        // ... decrementa 
        currentImage--;
    }
    // ... e visualizza l'immagine precedente  
    ShowImage(currentImage);
}
//.....................................................................

//.....................................................................
//  FUNCTION : vaiDestra()
//             visualizza l'immagine seguente nell'Array               
//.....................................................................
function vaiDestra():void
{
    // ... remove dell'iesima immagine 
    removeChild(arrayIMG[currentImage])
	
    // ... controlla l'indice   
    if ( currentImage < (numImages - 1))   
    {
        // ... incrementa 
        currentImage++;
    }
    else 
    {
        // ... ricomincia 
        currentImage = 0;
    }
    // ... e visualizza l'immagine seguente 
    ShowImage(currentImage);
}
//.....................................................................

// ... end of JOB

... spero che cio' ti sia di aiuto, ciao.
 

Allegati

  • RuotaOggetto.zip
    97,4 KB · Visite: 317
Discussioni simili
Autore Titolo Forum Risposte Data
C Ruotazione schermo testo non si allarga HTML e CSS 0
S Impossibile scorrere un oggetto in JavaScript Javascript 0
V oggetto webbrowser Visual Basic 0
B [MySQL] contare quante un oggetto e' presente MySQL 2
V Ricevere messaggi email certificata con CDO o altro oggetto in ASP Classic ASP 0
M HTML: oggetto data HTML e CSS 1
M [Photoshop] Problema Oggetto avanzato Photoshop 0
F Fermare oggetto che si muove al click del mouse - Javascript Ajax 1
F Coordinate di un oggetto - javascript Javascript 2
napuleone OnChange con oggetto Text non funziona Javascript 3
napuleone Oggetto " button " js non mi funziona Javascript 3
JackIlPazzo Come creare un oggetto con attributi multipli? PHP 1
M Passare una funzione a una proprietà di oggetto Javascript 2
G Evento ".onClick" su oggetto di d3.js Javascript 0
G Oggetto OLE MS Access 0
G Visualizzazione proprietà oggetto PHP 0
P Problma passaggio valori input hidden in oggetto $.post() jQuery 8
F [RISOLTO]oscurare momentaneamente oggetto del database PHP 38
L [RISOLTO]inserire funzione in un oggetto (HTML5+canvas) Javascript 2
F Problema associazione tabs/oggetto array jQuery 17
S Linkare oggetto in div o linkare div? HTML e CSS 11
M rendere attivo un oggetto CSS tramite javascript Javascript 3
F Oggetto non trovato! IE, Chrome in localhost PHP 3
D invocare metodo oggetto php da form html PHP 0
Eliox Accedere a tutte le proprietà di un oggetto PHP 1
F Prelevare un valore dall'oggetto selcet Javascript 4
G Droplist con oggetto a comparsa Javascript 26
A Realizzare il gioco del tris usando javascript, il dom e l'oggetto event-. Javascript 4
A Distruggere un oggetto appena creato PHP 1
max_400 Movimento oggetto jQuery 3
R [problema] Inizializzare Oggetto Ajax posso dichiararlo e dopo fare la send? Ajax 1
A Proprietà 'style': oggetto nullo o non definito Javascript 2
K Problemi nell'uso dell'oggetto MYSQLI PHP 2
A Oggetto: stripslashes e tag input PHP 3
WorldWideWeb Invio e-mail tramite oggetto CDO - VB6 Visual Basic 1
L oggetto stdClass PHP 0
WorldWideWeb Passaggio dell'oggetto Me ad una funzione Visual Basic 6
T Getattribute è nullo o non è un oggetto AIUTOOO Classic ASP 0
renoir09 oggetto flash in mamp PHP 2
S Oggetto: Come Scrivere una e-mail su due cm quadrati di spazio ! ? ! Posta Elettronica 2
D Oggetto della normalizzazione di un database relazionale sql Database 0
M Come faccio a creare un oggetto con Ajax e salvarlo su DB? Ajax 0
D problema oggetto flash con explorer 7 Flash 1
J inserire oggetto flash in pagina html, cambiamenti? Flash 0
S Come si ripete un azione senza l'ausilio dell' oggetto timer? Programmazione 0
S Oggetto OLE Visual Basic 0
S Come si "moltiplica" un oggetto in Visual basic 6? Visual Basic 3
M Errore Necessario Oggetto Classic ASP 7
PaIkEa Come incollare un oggetto in una gif Webdesign e Grafica 4
K importare in un oggetto Javascript 0

Discussioni simili