HTML.it è il sito italiano del web publishing

rilevamento coordinate di un oggetto in mvimento



scegli un altro forum
    Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ:

MSN:

Skype:


rilevamento coordinate di un oggetto in mvimento
Salve,
sto lavoando ad un progetto e mi sono bloccato in un punto:
ho un oggetto che trascino col mouse e voglio fare in modo che via via che si avvicina ad un altro oggetto mi aumenti il volume di un mp3 di sottofondo.
la parte relativa al suono è già imlementata, mi servirebbe solo sapere come rilevare, se è possibile, le coordinate dell'oggetto che trascino per poi da li ricavare la distanza ed effettuare le operazioni....

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 04-07-2012 12:01
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
randi
Utente di HTML.it



Registrato il: Feb 2009

Provenienza: Olbia

Messaggi: 2704


ICQ :

MSN :

Skype :


con un evento ENTER_FRAME
codice:
mc.addEventListener(MouseEvent.MOUSE_DOWN, trascina)
function trascina(evt:MouseEvent):void{
	mc.startDrag()
}
addEventListener(Event.ENTER_FRAME, leggi_coordinate)
function leggi_coordinate(evt:Event):void{
	trace(mc.x)
	trace(mc.y)
}

Segnala ad un moderatore | IP: Collegato | Permalink

randi è offline Old Post 04-07-2012 12:27
Clicca qui per vedere il profilo dell'utente randi Clicca qui per inviare all'utente randi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente randi Aggiungi l'utente randi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ :

MSN :

Skype :


grazie per la celere risposta
però io non devo solo leggerle dinamicamente ma fare un azione in base a queste coordinate ossia:
in ogni punto in cui si sposta l'immagine devo prenderne le coordinate e calcolare la distanza con un altro punto e in base a questa distanza compiere un'altra azione. cioè non c'è bisogno che io personalmente legga le coordinate ma che le legga una funzione che deve poi calcolare la distanza, ripeto dinamicamente, come faccio?

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 04-07-2012 13:06
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
randi
Utente di HTML.it



Registrato il: Feb 2009

Provenienza: Olbia

Messaggi: 2704


ICQ :

MSN :

Skype :


ma si avvicina da un solo lato?

Segnala ad un moderatore | IP: Collegato | Permalink

randi è offline Old Post 04-07-2012 17:28
Clicca qui per vedere il profilo dell'utente randi Clicca qui per inviare all'utente randi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente randi Aggiungi l'utente randi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ :

MSN :

Skype :


no in realtà da qualsiasi lato, io perciò voglio trasformarlo in un punto e calcolare la distanza con un altro....

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 04-07-2012 19:22
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
randi
Utente di HTML.it



Registrato il: Feb 2009

Provenienza: Olbia

Messaggi: 2704


ICQ :

MSN :

Skype :


Non è tanto facile...

Segnala ad un moderatore | IP: Collegato | Permalink

randi è offline Old Post 04-07-2012 19:33
Clicca qui per vedere il profilo dell'utente randi Clicca qui per inviare all'utente randi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente randi Aggiungi l'utente randi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
KillerWorm
Utente di HTML.it



Registrato il: Apr 2004

Provenienza: dalla polvere

Messaggi: 1848


ICQ :

MSN : undefined

Skype : null


Ciao,
in effetti, come dice rendi, non è troppo semplice.
Ho provato comunque a buttare giù un piccolo esempio utilizzando le classi e i metodi disponibili in as3. In particolare la classe Point e il metodo distance che ti permette di determinare al volo la distanza tra due punti. La parte difficile è stata più che altro elaborare un algoritmo, che fosse anche customizzabile, per trasformare il valore distanza in volume.

Questo e quanto sono riuscito a fare.
codice:
// PARAMETRI
var distanzaMin:Number=10;
var distanzaMax:Number=200;
var volumeMin:Number=0;
var volumeMax:Number=1;

// CARICO E IMPOSTO IL SUONO
var snd:Sound=new Sound();
var sndCh:SoundChannel=new SoundChannel();
var sndTr = new SoundTransform();
snd.load(new URLRequest("music.mp3"));
snd.addEventListener(Event.COMPLETE,onComplete,false,0,true);
function onComplete(evt:Event):void {
	sndCh=snd.play();
	setVolume();
}

// ELEMENTO TRASCINABILE
var obj1:Sprite = new Sprite();
obj1.graphics.beginFill(0x009900);
obj1.graphics.drawCircle(0, 0, 20);
obj1.graphics.endFill();
obj1.x=200;
obj1.y=50;
addChild(obj1);
obj1.buttonMode=true;
obj1.addEventListener(MouseEvent.MOUSE_DOWN, startDragObj);
obj1.addEventListener(MouseEvent.MOUSE_UP, stopDragObj);

// ELEMENTO "PUNTO DI RIFERIMENTO" (TRASCINABILE)
var obj2:Sprite = new Sprite();
obj2.graphics.beginFill(0x990000);
obj2.graphics.drawCircle(0, 0, 5);
obj2.graphics.endFill();
obj2.x=200;
obj2.y=200;
addChild(obj2);
obj2.buttonMode=true;
obj2.addEventListener(MouseEvent.MOUSE_DOWN, startDragObj);
obj2.addEventListener(MouseEvent.MOUSE_UP, stopDragObj);

// RAPPRESENTAZIONE GRAFICA DELLE DISTANZE LIMITI
obj2.graphics.lineStyle(1,0x6666cc);
obj2.graphics.drawCircle(0, 0, distanzaMin);
obj2.graphics.lineStyle(1,0xcccc00);
obj2.graphics.drawCircle(0, 0, distanzaMax);


// EVENTI TRASCINAMENTO
function startDragObj(e:MouseEvent):void {
	e.currentTarget.startDrag();
	e.currentTarget.addEventListener(MouseEvent.MOUSE_MOVE, setVolume);

}
function stopDragObj(e:MouseEvent):void {
	stopDrag();
	e.currentTarget.removeEventListener(MouseEvent.MOUSE_MOVE, setVolume);

}

// REGOLA VOLUME
function setVolume(e:MouseEvent=null):void {
	(e)&&e.updateAfterEvent();
	var p1:Point=new Point(obj1.x,obj1.y);
	var p2:Point=new Point(obj2.x,obj2.y);
	var distanza:Number=Point.distance(p1,p2);
	var distanzaAssoluta:Number =(distanza-distanzaMin)/(distanzaMax-distanzaMin);
	var vol:Number= Math.min(volumeMax,Math.max(volumeMin, volumeMax+(volumeMin-volumeMax)*distanzaAssoluta));
	sndTr.volume=vol;
	sndCh.soundTransform=sndTr;
}


Lo script carica un mp3 esterno che dovrai predisporre nella cartella dove c'è il filmato e nominarlo "music.mp3".
E' possibile impostare i 4 parametri iniziali. Lo script crea due sprite trascinabili in uno vengono disegnati i limiti della distanza entro i quali avviene la regolazione del volume.
Ho messo giusto qualche commento.
La parte che dovrebbe interessarti è la funzione setVolume.
Vedi se può esserti utile come spunto per il tuo progetto.
Se c'è bisogno di qualche chiarimento, chiedi pure.


__________________
Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta.

clsid

Segnala ad un moderatore | IP: Collegato | Permalink

KillerWorm è offline Old Post 05-07-2012 00:57
Clicca qui per vedere il profilo dell'utente KillerWorm Clicca qui per inviare all'utente KillerWorm un messaggio privato Visualizza ulteriori messaggi scritti dall'utente KillerWorm Aggiungi l'utente KillerWorm alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
randi
Utente di HTML.it



Registrato il: Feb 2009

Provenienza: Olbia

Messaggi: 2704


ICQ :

MSN :

Skype :


Bravissimo Killer....

Segnala ad un moderatore | IP: Collegato | Permalink

randi è offline Old Post 05-07-2012 08:35
Clicca qui per vedere il profilo dell'utente randi Clicca qui per inviare all'utente randi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente randi Aggiungi l'utente randi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ :

MSN :

Skype :


Ti ringrazio Killer ma forse non è proprio quello che mi serve!
Mi spiego meglio:
Ho un oggetto trascinabile
nella funzione mousedown inizio a spostarlo, le sue coordinate variano.trasformandolo in un punto,p1, ho solo due coordinate che lo identificano.
Ho le coordinate di un altro puntoP2 che sono fisse.
durante il trascinamento il punto p1 e il punto p2 supponiamo che si avvicinano e quindi la loro distanza diminuisce. Man mano che diminuisce io devo aumentare il volume di un suono.
Ora ho già implementato il tutto ma non mi funziona perchè secondo me non vengono calcolate bene le coordinate IN EVOLUZIONE dell'oggetto trascinabile. il problema forse è proprio lì: la variabile distanza_attuale tra i due oggetti calcolata come differenza di coordinate tra i due punti è in continua modifica, come gestirla?

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 05-07-2012 08:55
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
randi
Utente di HTML.it



Registrato il: Feb 2009

Provenienza: Olbia

Messaggi: 2704


ICQ :

MSN :

Skype :


Ma hai provato lo script di kilerWorm? Scusa fa proprio quello che descrivi. Devi solo adattarlo al tuo filmato.

Segnala ad un moderatore | IP: Collegato | Permalink

randi è offline Old Post 05-07-2012 09:08
Clicca qui per vedere il profilo dell'utente randi Clicca qui per inviare all'utente randi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente randi Aggiungi l'utente randi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ :

MSN :

Skype :


ora provo e vi faccio sapere.....

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 05-07-2012 09:28
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
fabioliberato
Utente di HTML.it



Registrato il: Jul 2012

Provenienza: caserta

Messaggi: 7


ICQ :

MSN :

Skype :


funziona ma in parte, il suono aumenta se mi avvicino alla figura, ma siccome ci sono 3 figure mi succede quanto segue:
se la figura giusta è in prima posizione il volume aumenta se mi avvicino a tale figura giusta ma aumenta ugualmente se mi avvicino alla terza figura, se invece la fisura giusta è al centro tra le tre il volume aumenta solo in direzione di questa giusta!!!

Segnala ad un moderatore | IP: Collegato | Permalink

fabioliberato è offline Old Post 05-07-2012 14:24
Clicca qui per vedere il profilo dell'utente fabioliberato Clicca qui per inviare all'utente fabioliberato un messaggio privato Visualizza ulteriori messaggi scritti dall'utente fabioliberato Aggiungi l'utente fabioliberato alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 08:57.     

    Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca