Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Metodo HitTestPoint di Flash CS3

This is a discussion on Metodo HitTestPoint di Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Salve a tutti ! Oggi volevo scrivere due righe a riguardo di un metodo di Actionscript 3.0 , più precisamente del ...


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 07-12-07, 06:40
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Metodo HitTestPoint di Flash CS3

Salve a tutti !


Oggi volevo scrivere due righe a riguardo di un metodo di Actionscript 3.0, più precisamente del metodo HitTestPoint della classe DisplayObject.
Non lasciatevi ingannare o mettervi dubbi dalla classe DisplayObject in quanto la classe MovieClip eredita da DisplayObject.
Questo significa che possiamo utilizzare il metodo HitTestPoint anche con una MovieClip.
Questo metodo valuta se la MovieClip per il quale lo utilizziamo si sovrappone o collide con una certa coordinata stabilita dai punti x e y che gli passiamo come parametri.

Inoltre il metodo HitTestObject, implementa un altro parametro: shapeFlag.
Il shapeFlag è un valore di tipo Boolean ( true/false ) che indica se vogliamo che il metodo valuti la reale forma della nostra MovieClip oppure la sua area di rettangolo totale.
In questo tutorial vedremo a cosa può servire il metodo HitTestPoint e che sintassi adottare per utilizzarlo.
Vedremo inoltre che l' swf in cui utilizziamo HitTestPoint si comporta allo stesso modo anche se caricato in un altro SWF.

Creo un FLA che salvo con nome ' main.fla '.
Al suo interno creo una MovieClip sullo stage con una forma a caso ( meglio non quadrata ne rettangolare per fare le prove successive ), gli assegno il nome istanza clip_mc e la posiziono esattamente al centro dello stage.

Utilizzo HiteTestPoint per controllare se clip_mc collide con il punto centrale dello stage.
Quindi, passo come parametri i puti stage.stageWidth/2 ( cioè la metà della larghezza dello stage ) e stage.stageHeight/2 ( la metà dell' altezza dello stage )
Code:
if(clip_mc.hitTestPoint(stage.stageWidth/2,stage.stageHeight/2))
{
	trace('ok');
}
e infatti appena pubblico il FLA, ottengo ok come output.

Ora voglio controllare se clip_mc collide con il mouse, quindi questa volta passerò i valori mouseX e mouseY al metodo HitTestPoint. In più passo come terzo parametro u valore true, che dice a Flash di controllare se collide solo con l' effettiva forma di clip_mc:
Code:
clip_mc.addEventListener(Event.ENTER_FRAME,checkMouse);
function checkMouse(evt:Event):void
{
	if(evt.target.hitTestPoint(mouseX,mouseY,true))
	{
		trace('now');
	}
}
ed ogni volta che il mouse toccherà clip_mc flash lo intercetterà ( infatti ottengo now come output in quanto viene eseguito il comando trace ).
Se invece avessi utilizzato false come terzo parametro, allora Flash eseguirebbe il trace('now'); al momento in cui il mouse entra in collisione con l' effettiva area di spazio rettangolare di clip_mc.

Questo comportamento del metodo HitTestPoint rimane esattamente lo stesso anche se volessimo caricare main.swf in un altro SWF.
Infatti, se preparo il codice corretto ( utilizzando Event.ADDED_TO_STAGE ) in modo da poter essere caricato senza errori ) per main.swf:
Code:
addEventListener(Event.ADDED_TO_STAGE,init);

function init(evt:Event):void
{
	removeEventListener(Event.ADDED_TO_STAGE,init);
	if(clip_mc.hitTestPoint(stage.stageWidth/2,stage.stageHeight/2))
	{
		trace('ok');
	}
	clip_mc.addEventListener(Event.ENTER_FRAME,checkMouse);
}

function checkMouse(evt:Event):void
{
	if(evt.target.hitTestPoint(mouseX,mouseY,true))
	{
		trace('now');
	}
}
e creo l' swf in cui caricarlo, quindi creo un FLA che salvo con nome ' test.fla ' e gli aggiungo il codice per caricare main.swf:
Code:
var request:URLRequest=new URLRequest('main.swf');
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
loader.load(request);

function onComplete(evt:Event):void
{
	addChild(loader);
}
a questo punto se pubblico test.swf che carica main.swf, ottengo lo stesso risultato ma solo perchè ho utilizzato Event.ADDED_TO_STAGE in main.fla.

Stay tuned !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 07-12-07, 19:16
Junior Member
 
Join Date: Jan 1970
Posts: 27
Rep Power: 0
dalis84 is on a distinguished road
Re: Metodo HitTestPoint di Flash CS3

Molto utile.

Quel che mi domando, però... è possibile avere in qualche modo sta benedetta shapeFlag anche col metodo hitTestObject ?

Grazie cmq.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 07-12-07, 19:35
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: Metodo HitTestPoint di Flash CS3

Con hitTestObject, il shapeFlag funziona allo stesso modo.
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
problema con hitTestPoint etr102108 Actionscript 3.0 base 5 15-05-08 12:12
Metodo mailto di Flash CS3 Flep Articoli e tutorials 3 06-03-08 11:15
getBounds - metodo di Flash CS3 Flep Articoli e tutorials 0 23-11-07 05:57
BitmapData e metodo draw Flep Articoli e tutorials 0 19-09-07 14:13
Problema con hitTestPoint luzzz Actionscript 3.0 avanzato 10 13-09-07 12:10


All times are GMT. The time now is 22:50.


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