本文介绍怎么在flex项目中使用Papervision3d,而不是在actionscript项目中。
(Papervision3d 最新源代码和swc库文件:http://code.google.com/p/papervision3d/
)
本文参照:http://pv3d.org/2008/11/29/adding-a-basicview-to-a-flex-uicomponent/
方法一 直接在mxml文件中加入 3D 窗体组件
代码:
<?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.Sphere;
import org.papervision3d.view.BasicView;
private function applicationComplete():void
{
var basicView:BasicView = new BasicView(); //3D 窗体, 是一个 UIComponent
var sphere:Sphere = new Sphere(null,200,16,16); //3D球体,属性依次是材质,半径,水平方向三角形数量,垂直方向三角形数量
basicView.scene.addChild(sphere); //把球体加入到 3D 窗体中
basicView.startRendering(); // 显示
pv3dPanel.rawChildren.addChild(basicView); //把3D窗体加入到panel中
}
]]>
</mx:Script>
<mx:Panel id="pv3dPanel" title="Papervision3D Panel" width="640" height="480"/>
</mx:Application>
运行效果:
代码分析:
用BasicView创建一个3d球体还是很简单, 比老版简化了很多步骤。 这里需要注意的是“ pv3dPanel.rawChildren.addChild()” , 官方文档入下:
http://livedocs.adobe.com/flex/3_cn/mx/core/Container.html#rawChildren
容器中通常包含子组件,可以使用 Container.getChildAt()
方法和 Container.numChildren
属性枚举这些子组件。此外,容器可以包含样式元素和外观,如边框和背景。Flash Player 和 AIR 创建的子组件和外观之间没有任何差异。二者均可以使用播放器的 getChildAt()
方法和 numChildren
属性进行访问。但是,Container 类通过覆盖 getChildAt()
方法和 numChildren
属性(以及其它多个方法)可造成容器的子项是唯一的子组件的错觉。
如果您需要访问容器的所有子项(内容子项和外观),则需使用 rawChildren
属性上的方法和属性,而不是常规 Container 方法。例如,可使用 Container.rawChildren.getChildAt())
方法。但是,如果容器为其子项创建了 ContentPane Sprite 对象,则 rawChildren
属性值将只计算 ContentPane,而不计算容器的子项。并非总能够确定容器何时包含 ContentPane。
注意:
如果您调用 rawChildren
对象的 addChild
或 addChildAt
方法,则需在添加的组件上设置 tabEnabled = false
。这可以防止用户跳位到所添加的仅可视组件。
也可以写成这样:(不推荐)
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
use namespace mx_internal;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
private function applicationComplete():void
{
var basicView:BasicView = new BasicView();
var sphere:Sphere = new Sphere(null,200,16,16);
basicView.scene.addChild(sphere);
basicView.startRendering();
pv3dPanel.$addChild(basicView);
}
]]>
</mx:Script>
代码下载:
http://dl.getdropbox.com/u/132579/sites/pv3d.org/flex/basics/FlexBasicView.zip
方法二:使用自定义控件,把3d窗体封装到自定义控件中, 在主应用中引入这个自定义控件。
主要代码:
import flash.events.Event;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
public class My3D extends BasicView
{
private var sphere:Sphere
public function My3D()
{
super(400,300,false,true,CameraType.FREE);
sphere = new Sphere(null,200,16,16);
scene.addChild(sphere);
startRendering();
}
/**
* 加入每一帧的动作
* @param event
*
*/
override protected function onRenderTick(event:Event=null):void
{
sphere.yaw(1);//球体绕Y轴旋转
renderer.renderScene(scene, camera, viewport);
}
}
代码分析:
其实就是把方法一封装一下,做一个自定义控件,用自定义控件来装载3d窗体,并把这个控件当作3d窗体的控制器, 然后把这个控件放到主应用中。
另外,比方法一多了球体旋转效果, 代码在上面贴了。
代码下载: 见附件
分享到:
相关推荐
9. **项目结构与组织**:学习如何组织代码和资源文件,以及如何将Papervision3D集成到现有的项目结构中,是成功开发3D应用的重要步骤。 10. **社区与资源**:Papervision3D拥有活跃的开发者社区,这个教程可能还...
在Flex 3.0版本中,Papervision3D提供了一个灵活且高效的解决方案,将3D技术引入到富互联网应用程序(RIA)中。 标题"flex Papervision 3D 事例"表明这是一个具体的项目实例,包含了使用Flex和Papervision3D开发的...
1. 引入PV3D库:在Flex项目中,将`papervision3d_868.swc`添加到库路径,并在主类中导入必要的PV3D类。 2. 创建3D场景:初始化一个`Scene3D`对象,作为3D图形的容器。 3. 创建3D物体:实例化一个`Box`对象,设置其...
本篇文章将通过实例“拖拽圆球”来探讨Papervision3D如何实现3D场景中的用户交互,以及涉及到的相关技术要点。 一、Papervision3D 简介 Papervision3D 是基于Adobe Flash平台的一个3D引擎,它允许开发者创建复杂的...
Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web开发人员提供了在浏览器中创建交互式3D图形的能力,极大地拓宽了Web应用的视觉表现力。 本书旨在详细介绍PV3D的基本概念和技术,帮助读者理解如何...
在实际项目中,Papervision3D可以与Flex Builder或Flash Professional等开发工具结合使用,提供丰富的编程接口和调试工具。尽管Papervision3D是一个强大且灵活的库,但它也有一定的学习曲线,尤其是对于没有3D编程...
《Papervision3D演示项目详解:七个实例深度剖析》 Papervision3D是一种基于Adobe Flash Platform的开源3D渲染引擎,它允许开发者在网页上创建复杂的3D场景和交互式应用。该技术的出现极大地拓宽了Flash的潜力,使...
通过PaperVision3D,开发者可以创建3D模型、纹理、灯光、相机视角等元素,并在舞台上进行动态操作,实现3D物体的旋转、缩放和移动,以及复杂的碰撞检测和物理模拟。 在PaperVision3D中,3D场景是由多个基本元素构成...
- **3D模型导入**: 学习如何将3D模型导入到Papervision3D中,包括常见的文件格式和支持的导入方法。 - **场景构建**: 探讨如何构建复杂的3D场景,包括灯光设置、材质贴图等关键要素。 - **动画与交互**: 分析如何...
Papervision3D是基于Adobe Flash和Flex平台的一个强大的三维(3D)图形渲染引擎。这个技术允许开发者在Web浏览器中创建出丰富的、交互式的3D场景,为用户提供了一种全新的网页体验。该框架利用ActionScript 3.0语言...
《Papervision3D+Essentials》是一本专注于Papervision3D技术的权威指南,对于深入了解和掌握这个强大的3D图形库至关重要。Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web...
《Papervision3D API 详解:在Flex中的应用》 Papervision3D,作为一款强大的开源三维(3D)图形引擎,为Adobe Flex开发者提供了在Flash平台上构建三维交互式应用的能力。这个名为"Papervision3D_API_Insomnia.rar_...
1. **准备工作**:首先需要下载Papervision3D的库文件并将其添加到项目中。原文推荐了一个名为“pv3d傻瓜包”的资源包,这个包包含了Papervision3D的核心库文件和其他辅助工具。 2. **创建项目**:在Flash CS3或CS4...
flashplayer 11 播放器 Papervision3D -帮助文档 Papervision3D_2[1].1.920.swc Papervision3D源码例子 帮助文档 需要解锁 ,源码例子拷贝到新建工程的AS 类中,修改名称和类名就可以运行了。
《Papervision3D API详解》 Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握...