![]() |
ericvan76 (2009-11-04 17:33:51) |
为什么一定要感应边呢?你可以另画四条线作为边,然后在这四条线上加事件,接下来只要重画Plane就行了。 |
![]() |
YYuan (2009-11-05 02:25:28) |
谢谢。想感应边的目的是找一个方便的编程办法而已。加四条边的办法挺好,虽然稍微编程麻烦些,那鼠标的问题解决了。剩下的问题就是在不重绘Plane的情况下,有没有能够直接修改或移动Plane的一条边的办法,因为我想即时拖动边时,相应地Plane也同时改变那个边,害怕重绘Plane会有太大闪动。 |
![]() |
DDM君 (2009-11-05 15:21:44) |
这个功能看起来简单,其实非常麻烦。 一般几何体的变化是通过scale来变化,但问题是很难让鼠标刚刚好与缩放的大小合拍。 而且缩放是,一个轴向的正负方向一起缩放,所以如果只是缩放一边,还需要在4个角上建立4个虚拟物体,然后更具情况让plane子级给各个角落上的虚拟物体,然后缩放这个虚拟物体达到只缩放一个方向的效果。 不知道这样解释能不能看懂^_^ |
![]() |
ericvan76 (2009-11-05 15:26:52) |
想要改变Plane的大小,貌似只有重画了,应该不会有闪动的。 其实PV3D只是提供了最最基本的一些物体,在实际使用过程中,最好还是根据各自的需求,再封装成一个自己的类来使用,在该类中加一个update方法,然后在这个方法中根据新的参数重画。 封装自己的类还有一个好处,代码的结构会比较强,以后如果要换到别的3D引擎的话,也比较容易修改。 |
![]() |
YYuan (2009-11-06 02:08:48) |
谢谢DDM君和ericvan76。 我根据你们的建议做了一个用四个Line3D的线对象构成的矩形来响应鼠标,里面放一个Plane对象可以加各种材质。不知不用Plane对象能否在四个Line3D对象构成的矩形中填充材质。我想下来用Line3D的线对象响应鼠标后重新计算矩形的大小和位置,然后重绘Plane对象。希望如ericvan76所说的,Plane不会闪动。 不知DDM君说的“四个角上建立4个虚拟物体”是什么类型物体。另外你的最后两句话“然后更具情况让plane子级给各个角落上的虚拟物体,然后缩放这个虚拟物体达到只缩放一个方向的效果”,是否和我上面想的一致,能否介绍详细一些。 谢谢。 |
![]() |
DDM君 (2009-11-06 16:20:06) |
ericvan76的建议非常的好。 的确是这样,我们这里给初学者写的代码很简单,那是为了容易理解。要想更上一个级别的话,必须要多多熟悉AS和基本面对对象的理念,熟悉设计模式。 ps: 1) 虚拟物体就是个空DisplayObject3D. 2) “A子级给B”就是"B.addChild(A) " 3) line3D好像是没法自动填充内部的。 |
![]() |
YYuan (2009-11-07 03:12:37) |
谢谢了,理解了,这样做应该没问题,就是挺麻烦的,呵呵。 |
![]() |
DDM君 (2009-11-09 12:39:15) |
呵呵,是的,不过多多练习,以后就很简单了。 |
|
|