![]() |
kolapander (2009-03-31 14:11:41) |
renderer.renderScene(scene,camera,viewport);去掉 这句里面的viewport需要是viewport3类型而你的viewport是ReflectionView类型 |
![]() |
fur3 (2009-03-31 14:29:14) |
ReflectionView是个basicView kolapander兄是高手呢 |
![]() |
(2009-03-31 14:51:31) |
那具体这句应该怎么写呢,之前替换过,还是不行 |
![]() |
kolapander (2009-03-31 15:24:01) |
过奖了 也在摸索中 呵呵 大家多关照 |
![]() |
kolapander (2009-03-31 15:24:44) |
把 renderer.renderScene(scene,camera,viewport); 直接去掉就可以了 不是替换 |
![]() |
kolapander (2009-03-31 16:05:59) |
import flash.display.*; import flash.events.Event; //导入Tweenlite类 import gs.TweenLite; import gs.easing.*; //导入四大基本3D类 import org.papervision3d.cameras.Camera3D;//摄象机 import org.papervision3d.render.BasicRenderEngine;//渲染器 import org.papervision3d.scenes.Scene3D;//场景 import org.papervision3d.core.effects.view.ReflectionView;//倒影窗口 import org.papervision3d.materials.*;//位图文件材料(外部) import org.papervision3d.objects.primitives.Plane;//平面 import org.papervision3d.objects.DisplayObject3D;//3D物体(所有3D物体都是继承自它 import org.papervision3d.events.InteractiveScene3DEvent;//交互事件 //声明 var viewport:ReflectionView; var renderer:BasicRenderEngine; var scene:Scene3D; var camera:Camera3D; var plane1:Plane; var plane2:Plane; var my3d_mc:DisplayObject3D; var mybit1:*; var mybit2:BitmapFileMaterial; var pd:int = 1; // viewport=new ReflectionView(550,400,false,true); viewport.surfaceHeight = -300 renderer=new BasicRenderEngine ; scene=new Scene3D; camera=new Camera3D(); my3d_mc = new DisplayObject3D(); //mybit1 = new BitmapFileMaterial("map1.jpg"); mybit2 = new BitmapFileMaterial("map2.jpg"); mybit1 = new ColorMaterial(0xff00ff); plane1 = new Plane(mybit1,300,300,3,3); plane2 = new Plane(mybit2,300,300,3,3); stage.addChild(viewport); viewport.scene.addChild(my3d_mc); my3d_mc.addChild(plane1); my3d_mc.addChild(plane2); // plane1.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan) plane2.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan) function fanzhuan(event:InteractiveScene3DEvent):void{ if(pd == 1){ TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:180,ease:Circ.easeOut}); }else{ TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:0,ease:Circ.easeOut}); } pd = -pd } //开始渲染 addEventListener(Event.ENTER_FRAME,renderer_start); function renderer_start(event:Event):void { viewport.singleRender() //renderer.renderScene(scene,camera,viewport); } //初始化 plane2.rotationY = 180; camera.zoom = 50 camera.z = -800 |
![]() |
fur3 (2009-03-31 17:30:18) |
写成类吧,不要写成祯语句 然后就可以直接继承 extends ReflectionView, 其他用法就和basicView一样了 |
![]() |
(2009-03-31 17:50:20) |
谢谢啊,试出来了。还有个小问题,就是现在倒影和MC的距离很大,有什么方法可以拉近它们的距离么? |
![]() |
fur3 (2009-03-31 22:10:05) |
不错!具体是哪里的问题呢? 这个倒影不是‘真’的倒影啦,只能视觉上靠近些而已 |
![]() |
kolapander (2009-04-01 08:32:43) |
修改viewport.surfaceHeight 值调整距离 |
![]() |
zhangkan654 (2009-06-09 18:45:44) |
请问上面这段程序,如果我想两个图片都显示怎么办呢?因为我试了一下,按上述方法,显示出结果:两个图片是重叠的(通过设置plane2.rotationY = 180;改变角度发现两个图是在一个数轴上 )。所以有什么办法让两个图的位置分开来显示呢?谢谢啦 |
![]() |
DDM君 (2009-06-10 10:05:52) |
两个图是指上下倒影的两个图?不能分开的吧,否则怎么能叫倒影呢 |
![]() |
zhangkan654 (2009-06-10 14:04:38) |
不好意思,DDM君,我表达不太清楚~~我的意思是如果我想分别做出两个不同的图片的倒影效果,在一个画面中一起表达出来(即例子中的mybit1 和mybit2分别有自己的倒影),怎么能改变mybit1 或者mybit2的位置,使得mybit1和mybit2这两张原图(两张图不是上下倒影关系)分开排列?(即左边显示mybit1和它的倒影,右边显示mybit2和它的倒影)谢谢了!!! |
![]() |
(2009-06-11 08:21:18) |
x赋不同值 |
![]() |
DDM君 (2009-06-11 10:34:28) |
个人对这个类研究很少(因为我们很少可能用到这个功能),但改变1,2的横坐标x,难道没用吗? |
![]() |
zhangkan654 (2009-06-12 21:34:07) |
哦,是的是的,不好意思啦,本人是菜鸟,谢谢大家 |
|
|