第四部分—得到所有其他三个点:
同上面一样,你有几种情况要考虑。
第一种情况比较简单。第3点位于边EF上。在这种情况下,点D4与点D3位于同一位置。

另一种情况比较难一点。点D3位于边CE上。你需要计算D3和D4。

或者:

这里,我们需要一些三角函数来获得所有的数值。嗨,一定有更有效的方式来编码,我真是没兴趣再做一遍。:(
我只需要提醒你一件事: Flash的坐标系开始于左上角,逐渐向下扩展到右边。
对于一个数学家来说,求得所有的点很可能只需要几分钟,但是我却花了整整一个上午。如果你想做,你可以自己做,或者只需拷贝这些代码。
//用D1和F来找到其他的点 function getD234(){ len = _root._root.getDist( pfx, pfy, _root.stage.d1._x,_root.stage.d1._y); len1 = len/2; len2 = (pfx - _root.stage.d1._x)/2;
_root.stage.d2._x = pfx - len1*len1/len2; _root.stage.d2._y = pfy;
len2 = (pfy - _root.stage.d1._y)/2; len3 = len1*len1/len2;
_root.stage.d3._x = pfx; _root.stage.d3._y = pfy - len3;
// 检查D4是否和D3在同一个位置 if (_root.stage.d3._y < pey){ ptx = pex - (pfx - _root.stage.d2._x)*(pey - _root.stage.d3._y)/len3; pty = pey;
len = _root.getDist(_root.stage.d3._x, _root.stage.d3._y, ptx, pty); len1 = (pex - ptx)*(pey - _root.stage.d3._y)/len;
len2 = len1*len1/(pex - ptx); _root.stage.d4._x = pex - len2*2;
len2 = len1*len1/(pey - _root.stage.d3._y); _root.stage.d4._y = pey - len2*2;
_root.stage.d3._x = ptx; _root.stage.d3._y = pty;
} else { _root.stage.d4._x = _root.stage.d3._x; _root.stage.d4._y = _root.stage.d3._y; } }
哇,现在我们快完成了,继续!
出处:5D多媒体
责任编辑:qhwa
上一页 第三部分-初始化 下一页 第五部分-绘制 mask shape
◎进入论坛Flash专栏版块参加讨论
|