我有一個movieclip包含一個位圖,我不想增加命中區域。我知道我可以在它後面添加一個透明的形狀,但這是通過ios編譯的,我不想引起不必要的重繪。AS3:定義命中區域
有沒有辦法將矩形定義爲命中區域或其他解決方案?
我有一個movieclip包含一個位圖,我不想增加命中區域。我知道我可以在它後面添加一個透明的形狀,但這是通過ios編譯的,我不想引起不必要的重繪。AS3:定義命中區域
有沒有辦法將矩形定義爲命中區域或其他解決方案?
爲此目的有一個特殊的hitArea字段。
const MOUSE_ZONE_SIZE:Number = 10;
const hitArea:Sprite = new Sprite()
hitArea.graphics.beginFill(0xFFFFFF);
hitArea.graphics.drawRect(-MOUSE_ZONE_SIZE, -MOUSE_ZONE_SIZE, MOUSE_ZONE_SIZE* 2, MOUSE_ZONE_SIZE* 2);
hitArea.mouseEnabled = false;
hitArea.visible = false;
hitArea.x = bitmap.x
hitArea.y = bitmap.y
bitmap.hitArea = hitArea;
addChild(bitmap);
addChild(hitArea);
不幸的是,即使你重寫則hitTest * InteractiveObject的功能,他們將不會被用於鼠標事件調度:(如果有人知道如何強制閃光使用覆蓋的方法 - 我想知道這一點。
你也可以在裏面創建一個帶有位圖的按鈕,然後定義hitArea,它基本上和Ilya在代碼中做的事情是一樣的,但是當你將新的按鈕實例添加到舞臺上時, MouseEvents to it。
漂亮的圖片:)
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class main extends MovieClip
{
public function main()
{
var btn:button = new button();
btn.addEventListener(MouseEvent.CLICK, clicked);
this.addChild(btn);
}
private function clicked(e:MouseEvent):void{
trace("Clicked");
}
}
}
問題是,這將增加的內存和電源量在iOS做到這真是一個馬一塊... :(
所以它不會使用MouseEvent偵聽器?也不會因爲我們實際填充矩形並將其視爲位圖而導致重繪。 –
hitArea正確地使用鼠標事件。 問題出現了替代方法 - 重疊hitTest *方法。所以不用擔心,只需使用hitArea。 矩形(hitArea)是不可見的,所以它不應該繪製。但我不確定Air是如何計算內部命中的 - 如果運氣好的話,只需檢查rect即可。 –