[]不规则热区的实现

已邀请:

cuixueying

赞同来自: lexnewgate

下面通过一个实例来看下(AS版本,点击ape1的空白区不影响ape2的触发)
步骤一:
  我们先把2张图片拖拽放到舞台上,并且命名好var = ape1与var = ape2,方便发布后对图片实例的获取

111.png

步骤二:
  双击其中一个ape,进入到ape内部,然后从左侧的组件面板的Graphics文件夹中拖出来一个Poly(不规则多边形),这个就相当于我们在代码中的Graphics实例。

888.png

步骤三:
  通过在Poly右侧属性面板中添加更多的points坐标点,来得到一个多边形,并且让多边形通过点与点之间的连线绘制成ape的外边框模样,同时设置ape的renderType为hit。
  此步骤在程序中就相当于用Graphcis的实例绘制出了一个ape形状的多边形,并且这个实例的RenderType属性为hit,即可点击区域。

222.png

步骤四:
  复制ape1的Poly粘贴给ape2,同上
 
 
333.png

步骤五:
  为2个ape添加点击事件(UI组件本身已经自动计算宽高,所以可直接相应鼠标事件),程序中如果用sprite对ape进行添加显示,请务必为sprite设置size或hitArea

444.png

【此效果,如果单纯的用sprite去创建,由于image本身包含空白区域,所以鼠标响应的区域是个Rectangle(含透明区),并非单纯的肉眼可视的显示区域,这就会出现明明点击的是ape2,却触发了ap1的点击事件】
 

Monica - 知识达人

赞同来自:

赞~\(≧▽≦)/~

popo

赞同来自:

 class a extends sprite
{
function test():void
{
var t:Texture = datas;
m_hitAreaSprite.graphics.drawRect(t.offsetX,t.offsetY,t.width, t.height,'#FFFFFF');
m_hitAreaSprite.width = t.width;
m_hitAreaSprite.height = t.height;
}
}
理论上些类是可以有响应的,为何他没有反应,是那里写错了吗?

要回复问题请先

商务合作
商务合作