第四部分—得到所有其他三个点:
同上面一样,你有几种情况要考虑。
第一种情况比较简单。第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;
}
}
哇,现在我们快完成了,继续!
转载保留:http://www.qqread.com/flash/2006/10/s246523.html进入讨论组讨论。相关专题
- Flash教程 常用短语trace();使用 (0次浏览)
- 贪吃蛇游戏代码翻译 (0次浏览)
- 把fla文件输出成和swf一样的gif文件 (0次浏览)
- 什么是AS2.0面向对象编程 (0次浏览)
- AS3学习笔记 (0次浏览)
- Flash交互式动画之星座查询器制作 (0次浏览)
- AS3.0的类及绑定 (0次浏览)
- AS3 中的反射 (0次浏览)
- AS3 技巧和提示 (0次浏览)
- 利用引导线制作动态爱心两例 (0次浏览)






