我正在构建一个游戏,其中舞台上有一个位图图像(库符号),我需要监视用户在位图上的鼠标手势。
这个想法是当用户将鼠标悬停在图像上的不同点上时,会发生不同的操作(不同坐标的不同操作)。
我过去做过这个,但是我通过在图像上放置不可见的MovieClip来欺骗,然后在这些MovieClip上侦听鼠标事件。我现在不能这样做,因为图像上有超过200个兴趣点,在舞台上有如此多的额外MovieClip真的会让它完全放慢速度。
所以,我认为最好的方法是手动将所有X Y坐标硬编码到类中,然后与鼠标坐标进行比较。问题是它变得棘手,我的代码膨胀而且没有优化。
这样做是否有共同/好的方式?
答案 0 :(得分:2)
对所有X Y坐标进行硬编码看起来确实非常激烈 - 考虑这种解决方法可以直观地放置矩形:
0,0
且小于其width,height
,而不是检查鼠标是否翻过来。这是一个可行的解决方案吗?它至少会将所有过程密集型动作集中在一开始就可以加载,而不是在整个游戏中传播。作为开发人员,您也会更直观。
答案 1 :(得分:2)
为了加快确定哪个热点(如果有)在鼠标坐标下的计算,您可以在启动时生成“命中测试”位图。此位图永远不会显示给用户,但每个热点都会绘制为具有生成的唯一颜色的矩形。
对于每个热点,您还可以在字典中添加一个条目(可以是字典实例,数组或普通对象),其中键是颜色,热值是值。这很好地扩展,因为无论你有多少个热点,你只需要执行一个getPixel()然后检查字典中的热点。