发新话题
打印

[基础] 关于实型碰撞问题

关于实型碰撞问题

关于实型碰撞问题:

A1 碰撞检测成功
A2,将A1主祯(实际上就1祯)复制为元件主祯,播放元件碰撞检测失败。
问题在哪儿?

A1.fla (32.5 KB)
A2.fla (31.5 KB)

TOP

hitTest里的参数true表示的是全局坐标
元件中的话,此元件注册点左上角的时候坐标应该是0,0,才能和全局坐标一致,才能应用这个hitTest
或许可以用LocalToGlobal来转化坐标,懒得做ing

附件

未命名-2.fla (64 KB)

2008-5-3 09:38, 下载次数: 22

未命名-2.swf (1.07 KB)

2008-5-3 09:38, 下载次数: 30

TOP

引用:
原帖由 Cer 于 2008-5-3 01:38 发表
hitTest里的参数true表示的是全局坐标
元件中的话,此元件注册点左上角的时候坐标应该是0,0,才能和全局坐标一致,才能应用这个hitTest
或许可以用LocalToGlobal来转化坐标,懒得做ing
谢谢指点

TOP

迷迷糊糊就成了

cer说的我补充一点。
1、hitTest里的布尔参数中,true表示与目标剪辑的实际外型发生碰撞;false表示与目标剪辑的范围框发生碰撞。对于任何剪辑而言,实际外型各个不同,而范围框却是一样的,都是一个矩形框。似乎与本地坐标、全局坐标没有关系。
2、我试过了,无论元件的注册点在何地方,都能发生碰撞--------以“1的第一帧复制,拷贝到A2的第一帧上”为前提。
我不明白的还有一点,楼主的A2里mc1和mc2怎么成一个剪辑了?拷贝关键帧时不会出现这种情况呀?
A2.swf (997 Bytes)

TOP

他说的不是拷贝关键帧
是问把需要的作碰撞2元件放到一个容器元件里的时候,hitTest为什么失效了

试试就知道了,感觉还是全局坐标的问题

TOP

本地与全局

偶又认真看了hitTest(x,y,true),进一步了解到:
参数 x: Number 舞台上点击区域的 x 坐标。
y: Number 舞台上点击区域的 y 坐标。
xy 坐标都在全局坐标空间中定义。

楼主的hitTest(x,y,true)命令是下在嵌套元件中的,属于本地坐标空间,放到主场景中时,坐标空间变了,所以失效了。
通过讨论,偶明白了这一点,又长进了
有没有方法所本地坐标转化为主场景坐标呢?
版主,快发言吧!

TOP

本地坐标转换成全局坐标

大家讨论来讨论去,版主也不发言。
偶通过实验,有几点体会:
1、在创建子剪辑时,是否把它的坐标定位成(0,0),与此问题无关。
2、虽然有把全局坐标转换成本地坐标的代码,但对于此问题不适用。
3、没有把本地坐标转换成全局坐标的代码。
但是,我们可以通过表达式把本地坐标转换成全局坐标:
子元件实例的坐标=子元件实例的本地坐标+父级元件实例在主场景中的坐标。
根据这一思路,本例可以有两种解决办法:
1、把代码写在主场景中。假设半圆实例和曲线实例的名字分别是:mc2,mc3.二者组合后的实例在主场景中叫mc1.可以用如下代码实现楼主的效果:
onEnterFrame=function(){
if(_root.mc1.mc3.hitTest(_root.mc1.mc2._x+_root.mc1._x, _root.mc1.mc2._y+root.mc1._y, true  )){_root.mc1.mc2._x=root.mc1.mc2._x-50}else{_root.mc1.mc2._x-=2}}
本地坐标转换成全局坐标.swf (771 Bytes) 本地坐标转换成全局坐标.fla (32 KB)


}

TOP

本地坐标转换成全局坐标

按照以上思路,在元件内部使用parent也应该能够实现楼主的效果。

TOP

上面那个方法是我测试过才贴出来的
肯定可行。

TOP

hen hao hen xi huan

TOP

发新话题