| 
 第四部分—得到所有其他三个点: 
 同上面一样,你有几种情况要考虑。 
 第一种情况比较简单。第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专栏版块参加讨论
	       |