[转]注册点不在原点的碰撞检测
[url]http://bbs.9ria.com/viewthread.php?tid=71944&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400 [/url]
一般bitmapdata的碰撞检测,如果注册点是在原点的都可以正常的进行碰撞检测
如果把注册点移位的话就会出现问题
正常
异常
下载看了就知道了,只是改变了其中以个MC内图形的位置
hitTest.rar (10.84 KB)
结贴
感谢以下各位的提点,修改为 //用getBounds方法获得mc2相对于自己坐标系的偏移量,相当于针对原点的偏移,如果有对getBounds方法不明
白的可以查询一下手册(简单的理解为getBounds方法是获得一个图形针对
某个坐标系(参数)显示实际的矩形范围)
var mmm=(mc2 as MovieClip).getBounds(mc2)
var mix:Matrix=new Matrix();
mix.tx=-mmm.x;//校正偏移
mix.ty=-mmm.y;//校正偏移
var bmd2 = new BitmapData(mc2.width, mc2.height, true, 0);
bmd2.draw(mc2,mix);
//mmm2是实际检测碰撞时的矩形范围,stage是mc1所在的坐标系
var mmm2=(mc2 as MovieClip).getBounds(stage)
bmd1.hitTest(new Point(mc1.x, mc1.y), 0x55, bmd2, new Point(mmm2.x, mmm2.y))
复制代码//以上这样基本做到了不管偏移到哪里都可以实际的检测到实际像素的碰撞,希望高手可以进行优化
//这里主要是对碰撞检测可能出现的情况做一补充,希望对大家都有用!