加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex+Papervision3D三维技术研究(基础篇二)

发布时间:2020-12-15 01:06:28 所属栏目:百科 来源:网络整理
导读:上一篇中,已经可以在flex网页中实现一个会自动旋转的平面,那能不能把2D平面的组件添加到3D平面呢,为这个问题,我查了很多资料,结果多样,却没有谁作一个系统的说明,在这里,我也不能作一个具体的解说(功力不够深厚啊),我只是用一个具体的实例来实现

上一篇中,已经可以在flex网页中实现一个会自动旋转的平面,那能不能把2D平面的组件添加到3D平面呢,为这个问题,我查了很多资料,结果多样,却没有谁作一个系统的说明,在这里,我也不能作一个具体的解说(功力不够深厚啊),我只是用一个具体的实例来实现我的想法。我的想法是将Flex原有的组件,例如一个Button控件添加到一个平面上。上图


该功能是在as文件中动态添加一个Button,然后将这个Button添加到3D环境中的Panel中,自动旋转。
上代码:

package com.neil
{
	import flash.events.Event;
	
	import mx.core.UIComponent;
	
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.MovieMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;


	public class MainView extends UIComponent
	{
		private var viewport:Viewport3D;
		private var scene:Scene3D;
		private var camera:Camera3D;
		private var renderer:BasicRenderEngine;
		private var movieMaterial:MovieMaterial;
		private var plane:Plane;
		
		public function MainView()
		{
			init();
		}
		private function init():void{
			viewport=new Viewport3D(640,480,false,true);
			addChild(viewport);
			scene=new Scene3D();
			camera=new Camera3D();
			renderer=new BasicRenderEngine();

                       var btn:Button=new Button();
			btn.label="ddd";
			btn.width=100;
			btn.height=30;
			/*btn.includeInLayout=false;
			btn.blendMode=BlendMode.ERASE;*/
			addChild(btn);
			
			movieMaterial=new MovieMaterial(btn,true,true);
			movieMaterial.doubleSided=true;
			movieMaterial.precise=true;
			movieMaterial.smooth=true;
			movieMaterial.interactive=true;
			
			
			plane=new Plane(material);
			scene.addChild(plane);
			
			addEventListener(Event.ENTER_FRAME,onEnterFrame);
		}
		private function onEnterFrame(e:Event):void{
			plane.yaw(2);//设置动画速度
			renderer.renderScene(scene,camera,viewport);
		}
	}
}
代码是很简单吧,可是如果真要在网上找实例来实现这个功能,要下一家功夫的哦。还有一个问题就是,看到在页面上有两个Button是吧,我只是想添加到3D场景中,不想在2D环境中出现。为了这个这个问题,也花了我不少时间,最后有一个最简单的办法,直接设置Button的BlendMode属性,设置为ERASE,代码为注释掉部分。这样,就可以实现将Flex里的一般组件添加到3D场景中了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读