频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Flash 翻书效果研究

来源:5D多媒体 作者:阿鼠 出处:巧巧读书 2007-09-28 进入讨论组
上一页 1 2 3 4 5 6 下一页 

第四部分—得到所有其他三个点

同上面一样,你有几种情况要考虑。

第一种情况比较简单。第3点位于边EF上。在这种情况下,点D4与点D3位于同一位置。

Flash 翻书效果研究(图十)

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

Flash 翻书效果研究(图十)

或者:

Flash 翻书效果研究(图十二)

这里,我们需要一些三角函数来获得所有的数值。嗨,一定有更有效的方式来编码,我真是没兴趣再做一遍。:(

我只需要提醒你一件事:
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进入讨论组讨论。
上一页 1 2 3 4 5 6 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章