Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

HitTest con Flash CS3

This is a discussion on HitTest con Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Il caro buon vecchio metodo hitTest ? E' stato rimosso, o per meglio dire è stato diviso in 2 separati metodi che ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 19-09-07, 15:23
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
HitTest con Flash CS3

Il caro buon vecchio metodo hitTest ? E' stato rimosso, o per meglio dire è stato diviso in 2 separati metodi che si chiamano HitTestObject e hitTestPoint.
L' utilizzo di questi metodi non è molto diverso dal vecchio hitTest.

Vediamo come funzionano...

La Document Class che ho creato è questa:
Code:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	
	public class ProvaNuovoHitTest extends MovieClip
	{
		public function ProvaNuovoHitTest()
		{
			primoCaso();
			secondoCaso();
		}
		
		private function primoCaso():void
		{
			black_mc.addEventListener(Event.ENTER_FRAME,controllaMouse);
		}
		
		private function controllaMouse(e:Event):void
		{
			if(black_mc.hitTestPoint(mouseX,mouseY,true))
				debug_0_txt.text='si';
			else
				debug_0_txt.text='no';
		}
		
		private function secondoCaso():void
		{
			circle_1_mc.buttonMode=true;
			circle_1_mc.addEventListener(MouseEvent.MOUSE_DOWN,sposta);
			circle_1_mc.addEventListener(MouseEvent.MOUSE_UP,ferma);
		}
		
		private function sposta(m:MouseEvent):void
		{
			circle_1_mc.startDrag(true);
			circle_1_mc.addEventListener(Event.ENTER_FRAME,controllaContatto);
		}
		
		private function controllaContatto(e:Event):void
		{
			if(circle_1_mc.hitTestObject(circle_0_mc))
				debug_1_txt.text='si';
			else
				debug_1_txt.text='no';
		}
		
		private function ferma(m:MouseEvent):void
		{
			circle_1_mc.stopDrag();
			circle_1_mc.removeEventListener(Event.ENTER_FRAME,controllaContatto);
		}
	}
}
Risultato:










Analizziamo il codice:

nel primoCaso ( metodo ) lo script controlla sotto evento ENTER_FRAME se la clip collide con il mouse.
In questo caso utilizzo il metodo hitTestPoint che ' vuole ' 3 parametri:
-x del punto
-y del punto
-forma: è un valore boolean ( true/false ) con il quale si può decidere se applicare hitTestPoint solo alla reale sagoma della forma dell' oggetto oppure al suo bounding box.
Invito a provare di cambiare quel valore per poter capire meglio se qualcuno avesse dei dubbi :)


Nel secondoCaso ( metodo ) controllo se la MovieClip rossa ( che è trascinabile ) collide con quella blu utilizzando il metodo hitTestObject che vuole un solo parametro ( appunto l' oggetto di cui si vuole verificare la collisione ).
Con il metodo hitTestObject non è possibile scegliere se appilcarlo alla reale forma oppure albounding box. Per fare ciò ci sono altre maniere e richiedono un livello molto avanzato di Actionscript e di trigonometria ( lo vedremo più avanti ).


Alla prossima !
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 16-04-08, 22:32
Junior Member
 
Join Date: Apr 2008
Posts: 9
Rep Power: 0
CrowSix is on a distinguished road
Re: HitTest con Flash CS3

Salve a tutti. Mi ricollego a questo topic per un piccolo problema riguardo la funzione hitTest.
Sto provando a realizzare un semplice platform game e utilizzo dunque la funzione hitTest per controllare quando il mio personaggio tocca o meno il terreno.
Ho dunque inserito nel mio livello un movieclip chiamato Omino e un movieclip chiamato Terreno.
Con la funzione:
Code:
 Omino.hitTestObject(Terreno)
riesco a vedere effettivamente se il mio omino tocca il terreno.

Il problema sorge però se voglio modificare il terreno e renderlo da piatto (ho usato inizialmente un semplice rettangolo) a qualcosa di più complesso (ad esempio una sporgenza o una buca). In questo caso hitTest funziona, ma restituisce true se l'oggetto Omino ha la X uguale alla sporgenza più alta del Terreno. In pratica, viene restituito true se l'oggetto Omino entra in contatto con l'oggetto Terreno, indipendentemente dalla sua forma, ma solo dalla sua 'altezza' massima.
(Nell'allegato trovate un esempio di omino su buca: come si può vedere, viene considerata l'altezza del Terreno e non l'effettiva forma)
Come è possibile rimediare?
Attached Images
File Type: jpg Esempio.jpg (12.1 KB, 5 views)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 21-04-08, 08:07
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: HitTest con Flash CS3

Ciao
Per collisioni avanzate, il mio consiglio è di usare altri metodi, tipo Pitagora e la trigonometria.

Trovi alcuni esempi :

Rotazione di coordinate e collisioni in superfici angolate con Flash CS3

http://www.flepstudio.org/tutorials/...071206224.html

Collisioni con Actionscript 3.0 - esempio 1
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 21-04-08 at 08:11..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 21-04-08, 09:33
Junior Member
 
Join Date: Apr 2008
Posts: 9
Rep Power: 0
CrowSix is on a distinguished road
Re: HitTest con Flash CS3

Grazie mille. Appena ho un po' di tempo mi studio questi tutorial :D
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Actionscript 2 piccolo problema con hitTest skywalter Flash CS3 generale 2 11-08-08 18:31
New HitTest method of Actionscript 3.0 Flep Tutorials 3 05-03-08 23:06


All times are GMT. The time now is 10:48.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406