查看: 1782|回复: 0
打印 上一主题 下一主题

Away3D学习笔记-元素点选

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-30 10:16:19 |只看该作者 |倒序浏览
在Flash里调试影片总是很慢很慢,关掉actionscript的警告信息后,速度似乎的确快了一点,勉强可以承受。
研究Away3D卡在物体点选上,总找不到合适的监听函数一劳永逸地解决所有物体的精确点选,后来在某国外blog上看到一个球面点选的例子,但代码已经过时了,不再适用于3.6.0,于是根据他提供的思路,自己摸索了一下,搞定了点选问题。
其实3.6.0把每次鼠标点中的对象和点中的几何元素都传给了MouseEvent3D对象,而通常我们只适用它的target或者object属性,却忽略了表示几何元素的elementVO属性。
elementVO在Aawy3D中一个重要继承是faceVO,faceVO中的face属性就是当前选中的三角形,faceVO的其他属性在Away3D的文档中没有解释,源代码中也没有一行注释,可能是还处于半开发阶段。不过face类能用就行。
面是所有几何体的基础,任何几何体都是由若干个三角形面组成的。在Away3D中要实现灵活的图形绘制,也一定会和face类打交道。
face类的重要属性有material(材质,可以是任何材质对象),normal(面的法向量),v0,v1,v2(三角形面的三个点,按逆时针定义的),以及xyz三方向的最大和最小坐标maxX,minX....
如果要构造一个face,直接设置三个点是无效的,需要调用face类的moveTo,lineTo,curveTo方法,这些方法类似于graphics中的对应方法。绘制各边的顺序没有要求,可以顺时针也可以逆时针,但最后一定要封闭。有一种例外就是在一个已存在的face旁边构造face,利用已有face的一条边,则新构造的face可以不封闭。
回到物体点选的问题上,了解了face类之后,点选就很好做了,代码是这样的,很简短:



源码附件 :
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-3-13 15:19 , Processed in 0.157483 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部