这似乎应该很容易让我感到尴尬,但我无法得到它。
我有一个大圆形MovieClip(用作按钮)。此MovieClip包含插入MovieClip的 PNG,背景为透明。 由于它的大小,在4个角(边界框)上有大的空注册区域。
如何将鼠标注册为仅覆盖圆形像素而不是方形边框中的空白区域(Alpha通道像素)?
简单示例代码:
main
答案 0 :(得分:3)
以下是实现此目的的3种不同方法。
编辑由于您后来解释说您的按钮是图片,因此第一个选项对您不起作用
如果file = open('test.txt', 'r')
data = file.read()
data2 = data.split('\n')
上的形状标记与您的按钮一起使用(例如它的形状),您可以在鼠标单击处理程序中使用<table class="table table-bordered table-condensed">
<thead>
<tr class="info">
<th class="col-md-2"><input type="checkbox" class="app-all"/> <button type="button" class="btn btn-primary btn-xs">Modify</button></th>
<th class="col-md-1 text-center">Comments</th>
</tr>
</thead>
<tbody id="Container" data-filteredresult=""></tbody>
</table>
来确定点击是否为实际上是在对象上:
hitTestPoint
如果由于您的按钮中有bimtap数据而导致上述操作不起作用,那么实现此目的的一个简单方法就是在按钮上添加一个形状蒙版。
因此,使用FlasPro在您的按钮内部,用圆形掩盖所有内容,或者在第一次显示按钮时通过执行以下操作来执行此操作:
hitTestPoint
如果使用图像作为按钮,或者您想设置考虑点击的透明度阈值,则可以检查鼠标下像素的透明度:
public function doStuff(event:MouseEvent){
//only continue if hit test point is true,
//the x and y values are global (not relative to the mc your testing as one might suppose)
//the third parameter should be true, so it takes into account the shape of object and not just it's bounds
if(mc1.hitTestPoint(stage.mouseX, stage.mouseY, true)){
mc2.gotoAndStop(2);
}
}