flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
浏览主题:求教:如何使new 出来的sphere 动起来~?

求教:如何使new 出来的sphere 动起来~?
yookim2406 (2009-07-25 09:39:44)

package {
     import flash.display.MovieClip;
     import flash.events.Event;
     import org.papervision3d.objects.primitives.Sphere;
     import org.papervision3d.core.proto.MaterialObject3D;
     public class Ball extends Sphere {
           public var sx:Number;
           public var sy:Number;
           public var sz:Number;
           public var speed:Number;
           public function Ball(material:MaterialObject3D=null, radius:Number=100, segmentsW:int=8, segmentsH:int=6) {
                 super(material,radius,segmentsW,segmentsH);
                 initBall();
                 addEventListener(Event.ENTER_FRAME,eventHandle,false,0,true);
           }
           public function eventHandle(e:Event) {
                 moving();
           }
           public function initBall() {
                 sx=1;
                 sy=-1;
                 sz=1;
                 speed=3;
           }
           public function moving() {
                 trace(this.x)//这里输出不到,如何才能支持onenterframe?
                 this.x=sx*speed;
                 this.y=sy*speed;
                 this.z=sz*speed;
                 if (this.x<-250||this.x>250) {
                       sx*=-1;
                 }
                 if (this.y<-250||this.y>250) {
                       sy*=-1;
                 }
                 if (this.z<-250||this.z>250) {
                       sz*=-1;
                 }
           }
     }
}


flash 3d 研究所 DDM君
(2009-07-25 10:49:51)
yookim君代码真是奇怪啊,这样写,继承sphere还有什么意义嘛?直接new Sphere不就好了。
不能enterframe的原因是因为Ball类的爸爸Sphere和它的祖先都没有继承于DisplayObecjt这个类。

该在另一个继承于Sprite的类里面写

new Ball(什么什么的)
然后再这个类里面addEventListener(Event.ENTER_FRAME,eventHandle)

flash 3d 研究所 yookim2406
(2009-07-25 10:54:17)
恍然大悟

flash 3d 研究所 DDM君
(2009-07-25 10:57:11)
^____^

flash 3d 研究所 yookim2406
(2009-07-25 14:25:10)
还是不明白new 出来的sphere如何放入MovieClip里 再放到scene中渲染

flash 3d 研究所 yookim2406
(2009-07-25 16:52:16)
继承displayObject3D类能实现enterframe吗?·



flash 3d 研究所 xiaoyanggao
(2009-07-25 17:25:37)
想不通,干嘛对继承这些类费心思呢,概念的问题我不懂,要是我的话,何不在场景里直接建个Sphere,然后在用enterframe来检测这个Sphere就行了,非得自己建个Ball类来实现效果呢?

flash 3d 研究所 yookim2406
(2009-07-25 17:42:30)
因为要实现的工程里 有不同的球 比如把球看成是子弹类 不同的子弹有不同的属性 如果全部放在场景 里 工程就太复杂啦,
你说的场景里建个sphere 我也会 来这的第一课就会了
还可以做碰撞旋转 视角切换
但是我现在想要的是不同种类的sphere 方便操作

flash 3d 研究所 DDM君
(2009-07-26 12:03:55)
看了我们教程的的第5篇? yookim君您的理解和您的代码一样有点奇怪,把二维控制和三维控制混起来了。继续做下去就会发现二维碰撞检测三维空间的物体实际上是有问题的,最后等于是完全不用三维的情况。

如果非要做您说的,需要把sphere要先放到scene里,然后把sphere变成一个layer(其实是一个sprite),然后再放进movieclip里。


flash 3d 研究所 yookim2406
(2009-07-27 08:58:09)
请教DDM君如何实现多球碰撞呢(用物理引擎部分我明白),碰撞后的各个球体的状态又如何去控制呢?

flash 3d 研究所 DDM君
(2009-07-27 18:16:49)
碰撞后的各个球体的状态是物理引擎自带的功能。如果自己写的话得参考很多物理公式。

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了