一、hitArea
LayaAir下size的設(shè)置不是改變顯示對(duì)象的寬高值议惰,而是設(shè)定該顯示對(duì)象的鼠標(biāo)響應(yīng)區(qū)域藤树。
事件是否被命中有兩個(gè)條件旺罢,一個(gè)是是否設(shè)置了size的寬高母债,一個(gè)是mouseEnable是否為true勃蜘。
如果子對(duì)象被命中仰担,會(huì)自動(dòng)冒泡
var sprite:Sprite = new Sprite();
sprite.graphics.drawRect(100,100,100,100,"#ff9900");
var hitarea:HitArea = new HitArea();
var graphics:Graphics = new Graphics();
graphics.drawRect(100,100,100,100,"#ff9900");
hitarea.hit = graphics;
sprite.hitArea = hitarea;
1.把精靈添加到父精靈里统阿,設(shè)子精靈mouseenabled為true,父精靈設(shè)置mouseenabeld為false姥卢,則子精靈也不能響應(yīng)
2.Sprite本身寬高的作用只是用來(lái)點(diǎn)擊碰撞用的卷要,類似u3d的碰撞體。Sprite默認(rèn)沒(méi)有寬高隔显,可以手動(dòng)設(shè)置寬高却妨,或者通過(guò)getbounds函數(shù)獲取饵逐,還可以設(shè)置autoSize=true括眠,然后再獲取寬高。Sprite的寬高只是用來(lái)做碰撞使用倍权,并不影響顯示大小掷豺,如果更改顯示大小,需要使用scaleX薄声,scaleY当船。
Sprite默認(rèn)不接受鼠標(biāo)事件,即mouseEnabled=false默辨,但是只要對(duì)其監(jiān)聽(tīng)任意鼠標(biāo)事件德频,會(huì)自動(dòng)打開(kāi)自己以及所有父對(duì)象的mouseEnabled=true。
3.鼠標(biāo)事件會(huì)冒泡缩幸,也就是子對(duì)象被命中壹置,父對(duì)象也會(huì)收到相應(yīng)的事件,無(wú)論父對(duì)象寬高是多少(可以通過(guò)event.stopPropagation()阻止事件冒泡)表谊。其他事件包括自定義事件都是不冒泡的钞护。
二、alpha
某些建筑上黃色遮罩層爆办,可以簡(jiǎn)單地通過(guò)alpha=0.01和1來(lái)切換UP难咕,DOWN事件。這樣就不用設(shè)置點(diǎn)擊區(qū)域了
三距辆、不規(guī)則熱區(qū)
用Graphcis的實(shí)例繪制出了一個(gè)ape形狀的多邊形余佃,并且這個(gè)實(shí)例的RenderType屬性為hit,即可點(diǎn)擊區(qū)域跨算。參考不規(guī)則熱區(qū)的實(shí)現(xiàn)