`

如何把Papervision3d物体加到 flex中(附 立方体例子)

    博客分类:
  • flex
阅读更多

本文介绍怎么在flex 项目中使用Pv3d

需要你对flex有一定的了解。


方法1 直接在mxml文件中加入Pv3D组件

 

1。下载pv3组件,(Papervision3d 最新源代码和swc库文件:http://code.google.com/p/papervision3d / )

 

 

2。把Papervision3D_2.0.883.swc和header.swc加入工程。

 

3。源程序如下:

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    width="640"
    height="480"
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute"
    applicationComplete="applicationComplete()">
    <mx:Script>
        <![CDATA[
 
            import org.papervision3d.objects.primitives.Cube;
            import org.papervision3d.view.BasicView;
            import org.papervision3d.lights.PointLight3D;
            import org.papervision3d.materials.BitmapMaterial;
            import org.papervision3d.materials.shaders.PhongShader;
            import org.papervision3d.materials.shaders.ShadedMaterial;
            import org.papervision3d.materials.shaders.Shader;
            import org.papervision3d.materials.utils.MaterialsList;
           
           
            import org.papervision3d.core.utils.Mouse3D;
            import org.papervision3d.cameras.Camera3D;
            import org.papervision3d.view.layer.ViewportLayer;
            import org.papervision3d.objects.DisplayObject3D;
           
         private var myMouse3D:Mouse3D;

           
        [Embed(source="../assets/1.jpg")]
        private var frontAsset:Class;
       
        [Embed(source="../assets/2.jpg")]
        private var backAsset:Class;
       
        [Embed(source="../assets/4.jpg")]
        private var bottomAsset:Class;

        [Embed(source="../assets/5.jpg")]
        private var leftAsset:Class;

        [@Embed(source='../assets/6.jpg')]
        private var rightAsset:Class;

        [Embed(source="../assets/3.jpg")]
        private var topAsset:Class;
       
        private var light:PointLight3D;
        private var cube:MyCube;
        private var basicView:BasicView = new BasicView();
               
        private var materialsList:MaterialsList = new MaterialsList();
       
        private function applicationComplete():void
        {
            materialsList.addMaterial(createShadedMaterial( new frontAsset(),true ), "front");   
            materialsList.addMaterial(createShadedMaterial( new backAsset() ), "back");
            materialsList.addMaterial(createShadedMaterial( new bottomAsset() ), "bottom");           
            materialsList.addMaterial(createShadedMaterial( new leftAsset() ), "left");
            materialsList.addMaterial(createShadedMaterial( new rightAsset() ), "right");
            materialsList.addMaterial(createShadedMaterial( new topAsset() ), "top");
            //定义立方体
            cube = new MyCube(materialsList, 500, 500, 500, 5, 5, 5);
            basicView.scene.addChild(cube);
           
            Mouse3D.enabled = true;
               basicView.viewport.interactive=true;
               myMouse3D =this.basicView.viewport.interactiveSceneManager.mouse3D;
              
            this.stage.addEventListener(MouseEvent.MOUSE_WHEEL,onWheels);
            this.stage.addEventListener(MouseEvent.MOUSE_MOVE,onRenderTick);
          
            basicView.startRendering();
            pv3dPanel.rawChildren.addChild(basicView); //method #1
        }
           
        protected function onRenderTick(event:Event=null):void
        {
           
            cube.rotationY += (basicView.viewport.containerSprite.mouseX - cube.rotationY) * .1;
            cube.rotationX += (basicView.viewport.containerSprite.mouseY - cube.rotationX) * .1;
            basicView.renderer.renderScene(basicView.scene,basicView.camera, basicView.viewport);
        }
           
           
        private function createShadedMaterial(bitmap:Bitmap,precise:Boolean=false):ShadedMaterial
        {
            var bitmapMaterial:BitmapMaterial = new BitmapMaterial(bitmap.bitmapData,precise);
            bitmapMaterial.smooth=true;
            bitmapMaterial.interactive=true;
            var shader:Shader = new PhongShader(light, 0xffffff, 0x333333, 10, bitmap.bitmapData, bitmap.bitmapData);
            var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
           
            return shadedMaterial;
        }
       
       //滚动鼠标中间轮,进行缩放
       private function onWheels(event:MouseEvent):void
       {
               basicView.camera.moveForward(10*event.delta);
       }
     ]]>
    </mx:Script>

    <mx:Panel id="pv3dPanel" width="100%" height="100%">
        <mx:Label text="Label" id="testLabel"/>
    </mx:Panel>
</mx:Application>

 

4。运行效果如下:demo

 

 

 

方法2:使用自定义控件,把3d窗体封装到自定义控件中, 在主应用中引入这个自定义控件。

根据方法1进行自定义,源程序略。

 

 

 

  • 大小: 49.2 KB
分享到:
评论
1 楼 frogfool 2010-03-26  
header.swc

MyCube是啥?

相关推荐

    如何把Papervision3d物体加到 flex项目中(附 旋转圆球例子)

    在本文中,我们将深入探讨如何将Papervision3D对象整合到Flex项目中,以及如何实现一个旋转圆球的示例。Papervision3D是一个强大的开源库,用于在Adobe Flash Player环境中构建三维(3D)图形。而Flex则是一种基于...

    Papervision3D 教程打包下载

    2. **3D对象和场景**:在Papervision3D中,3D对象是由多个基本形状(如立方体、球体、平面等)构建的,这些形状可以通过组合和变换形成复杂的几何结构。场景(Scene)是所有3D对象的容器,可以包含多个层次(Layers...

    flex Papervision 3D 事例

    在Flex 3.0版本中,Papervision3D提供了一个灵活且高效的解决方案,将3D技术引入到富互联网应用程序(RIA)中。 标题"flex Papervision 3D 事例"表明这是一个具体的项目实例,包含了使用Flex和Papervision3D开发的...

    papervision3d_868.swc

    《PaperVision3D SDK在Flex环境中的应用与实践》 PaperVision3D(简称PV3D)是一款基于Adobe Flex和ActionScript 3.0的开源3D图形库,它为Web开发者提供了在Flash Player环境中构建三维图形和交互式应用程序的能力...

    初识Papervision3D

    在实际项目中,Papervision3D可以与Flex Builder或Flash Professional等开发工具结合使用,提供丰富的编程接口和调试工具。尽管Papervision3D是一个强大且灵活的库,但它也有一定的学习曲线,尤其是对于没有3D编程...

    flexBuilder3中使用Papervision3D

    本文将详细介绍如何在Flex Builder 3环境中利用Papervision3D(简称PV3D)这一强大的3D渲染引擎来创建3D应用。 #### 一、了解Flex Builder 3与Papervision3D **Flex Builder 3**是Adobe公司推出的一款专业级的集成...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    - **实例4:动态光照**:展示了Papervision3D中的光照效果,包括环境光、点光源、平行光等,以及它们如何影响3D物体的外观。 - **实例5:物理模拟**:通过引入Box2D物理库,展示了如何在3D环境中实现物体的碰撞...

    PaperVision3D

    《PaperVision3D:探索Flash 3D编程的深度与广度》 PaperVision3D,作为一款基于Adobe Flash的3D图形库,是Flash AS3.0时代的一个重要里程碑,它为Web开发者提供了一个在二维舞台上构建三维场景的强大工具。...

    Papervision3D_API_Insomnia.rar_flex

    《Papervision3D API 详解:在Flex中的应用》 Papervision3D,作为一款强大的开源三维(3D)图形引擎,为Adobe Flex开发者提供了在Flash平台上构建三维交互式应用的能力。这个名为"Papervision3D_API_Insomnia.rar_...

    Papervision3D Essentials 中文PDF及书中源码

    Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web开发人员提供了在浏览器中创建交互式3D图形的能力,极大地拓宽了Web应用的视觉表现力。 本书旨在详细介绍PV3D的基本概念和技术,帮助读者理解如何...

    Papervision3D

    Papervision3D是一个基于ActionScript 3.0的开源框架,专为在Adobe Flash环境中构建三维(3D)图形和应用而设计。这个框架的出现极大地扩展了Flash平台的功能,使得开发者能够利用Flash Player在网页上创建复杂的3D...

    Papervision3D.Essentials

    - **3D模型导入**: 学习如何将3D模型导入到Papervision3D中,包括常见的文件格式和支持的导入方法。 - **场景构建**: 探讨如何构建复杂的3D场景,包括灯光设置、材质贴图等关键要素。 - **动画与交互**: 分析如何...

    《Papervision3D+Essentials》中文翻译

    《Papervision3D+Essentials》是一本专注于Papervision3D技术的权威指南,对于深入了解和掌握这个强大的3D图形库至关重要。Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web...

    papervision3D

    Papervision3D是基于Adobe Flash和Flex平台的一个强大的三维(3D)图形渲染引擎。这个技术允许开发者在Web浏览器中创建出丰富的、交互式的3D场景,为用户提供了一种全新的网页体验。该框架利用ActionScript 3.0语言...

    《Papervision3D_Essentials》中文翻译

    - **基本形状**:讲解如何使用Papervision3D创建常见的3D几何体,如立方体、球体、圆柱等。 - **操作3D对象**:介绍如何在3D空间中移动、旋转和平移这些基本形状。 #### 5. 材质 - **材质定义**:解释Papervision...

    FLEX + Papervision3D 所有资料

    flashplayer 11 播放器 Papervision3D -帮助文档 Papervision3D_2[1].1.920.swc Papervision3D源码例子 帮助文档 需要解锁 ,源码例子拷贝到新建工程的AS 类中,修改名称和类名就可以运行了。

    Papervision3D的API

    《Papervision3D API详解》 Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握...

Global site tag (gtag.js) - Google Analytics