主题:  我找到了一个两点拖动的fla,谁能帮忙改一下?

Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#12001/8/16 11:58:35
演示地址: go4.163.com/fierce/10.swf
源文件下载:
谁能帮忙改成两点拖动,而且线的长度不会变
两个拖动点可以被线拉拽

编辑历史:[这消息被冷语编辑过(编辑时间2001-08-16 17:14:35)]


Demon.S

职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
#22001/8/16 12:09:24
setProperty ("newLine1", _xscale, getProperty("02", _x)-getProperty("01", _x));
setProperty ("newLine1", _yscale, getProperty("02", _y)-getProperty("01", _y));


这里是关键,这种scale方法比较简单,但是无法做复杂的变形...



谁能帮忙改成两点拖动,而且线的长度不会变
两个拖动点可以被线拉拽


这个用scale方法是做不了的,得用我上次说的那种象限算法方法



Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#32001/8/16 12:28:52
能把内核写出来让我看看么?
我还是不太明白



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#42001/8/16 14:47:31
画魔在上个帖子中说
引用:
setProperty ("newLine1", _xscale, getProperty("02", _x)-getProperty("01", _x));
setProperty ("newLine1", _yscale, getProperty("02", _y)-getProperty("01", _y));
……



呵呵,这就是用修改scale的方式来实现连接两点的算法



5D荣誉斑竹

职务:普通成员
等级:5
金币:10.0
发贴:3292
注册:2001/5/24 10:01:29
#52001/8/16 16:03:00
我不懂ac的语法,下面是思路

要求出直线的长度,line.xy=((01.x-02.x)的平方+(01.y-02.y)的平方)的平方根

定义固定长度c

if (line.xy>c) then
定义超出长度的百分比:p=c/line.xy;
02点的x坐标:02.x=01.x-(01.x-02.x)*p;
02点的y坐标:02.y=01.y-(01.y-02.y)*p;

然后再画线
setProperty ("newLine1", _xscale, getProperty("02", _x)-getProperty("01", _x));
setProperty ("newLine1", _yscale, getProperty("02", _y)-getProperty("01", _y));

以上是移动01时的算法,移动02也同理
好象可以精简一点,太复杂了



Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#62001/8/16 20:40:39

页面:点这儿参观
看看这个
谁能分析一下?



Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#72001/8/16 23:55:51

页面:点这儿参观



Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#82001/8/16 23:56:24

页面:点这儿参观



5D荣誉斑竹

职务:普通成员
等级:5
金币:10.0
发贴:3292
注册:2001/5/24 10:01:29
#92001/8/17 1:14:30
能说说算法吗?



Fierce

职务:普通成员
等级:2
金币:10.0
发贴:468
注册:2001/4/5 20:04:37
#102001/8/17 8:50:51
不是我做的
是帝国的人做的
源码地址 : www.webappcabaret.com/bba96/smartline.fla