主题:  请教自动连线效果

logimouse

职务:普通成员
等级:1
金币:0.0
发贴:132
注册:2001/10/29 16:41:34
#12001/11/26 17:19:21
我想要的效果:

有三个物体,A,B,C
A固定不动,B和C在初始状态在屏幕内缓慢随机移动,无论B和C移动到哪里,A和B,A和C之间都要有一条线连着。

然后,当鼠标靠近B (c) 的时候,B(c)自动吸附到鼠标上,然后随着鼠标运动,此时,若鼠标靠近C(b),则B(c)脱离鼠标,继续缓慢随机移动,而C(b)自动吸附到鼠标上,随鼠标运动。整个过程中AB, AC之间的还是有线在连着的。。。



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#22001/11/26 19:42:22
1.在enterframe事件中不断地执行一个在功能上自动连接两点的程序段

2.用一个数值来确定吸附范围。



5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:617
注册:2001/11/25 16:32:29
#32001/11/26 23:38:47
连接两点的程序段如下:
x1 = _root.A._x;
y1 = _root.A._y;
x2 = _root.B._x;
y2 = _root.B._y;
//获取两点的x,y坐标
_root.line._xscale = _root.x2-_root.x1;
_root.line._yscale = _root.y2-_root.y1;
//新建影片片断line(必须使直线,长度为100,且夹角为-45度,在场景中的实体名为line)连起AB(不包括角度只包括坐标)
x=x1-x2;
y=y1-y2;
//计算横纵坐标的差值
r = Math.sqrt((x*x)+(y*y));
//算出两点间的距离
sinthe = y/r;
//定义sinthe等于两点之间与水平的正弦值
rotation = Math.asin(sinthe);
//获得与水平之间的夹角rotation
_root.line._rotation = rotation*Math.asin(1/2);
//AB真正连起来了(包括角度与坐标)

呼呼~~~累死我了~~给小费啊~~~

编辑历史:[这消息被桃人编辑过(编辑时间2001-11-27 09:43:46)]
[这消息被桃人编辑过(编辑时间2001-11-27 09:45:09)]
[这消息被桃人编辑过(编辑时间2001-11-27 09:46:32)]