1: package
2: {
3: import away3d.cameras.HoverCamera3D;
4: import away3d.containers.ObjectContainer3D;
5: import away3d.containers.View3D;
6: import away3d.core.math.Number3D;
7: import away3d.core.utils.Cast;
8: import away3d.materials.BitmapMaterial;
9: import away3d.materials.EnviroBitmapMaterial;
10: import away3d.primitives.Plane;
11: import away3d.primitives.Sphere;
12: import away3d.primitives.Torus;
13:
14: import flash.display.Sprite;
15: import flash.events.Event;
16: import flash.events.MouseEvent;
17:
18: [SWF(width="600", height="500", frameRate="60", backgroundColor="#FFFFFF")]
19: public class enviroBitmapMaterial extends Sprite
20: {
21: //定义 变量
22: private var view:View3D;
23: private var cam:HoverCamera3D;
24:
25: private var planeMaterial:BitmapMaterial;
26: private var torusMaterial:EnviroBitmapMaterial;
27: private var plane:Plane;
28: private var group:ObjectContainer3D;
29: private var torus:Torus;
30:
31: private var mouseDown:Boolean;
32: private var lastMouseX:Number;
33: private var lastMouseY:Number;
34: private var lastPanangle:Number;
35: private var lastTiltangle:Number;
36: private var cameraSpeed:Number;
37:
38: //嵌入图片,goldbackground.jpg用于背景及环境图;adobe_ico.jpg 是圆环的皮肤
39: [Embed(source="resources/goldbackground.jpg")] private var goldImage:Class;
40: [Embed(source="resources/nooon.jpg")] private var skinImage:Class;
41:
42: public function enviroBitmapMaterial()
43: {
44: //新建各贴图材质,备用。
45: createMaterial();
46: //inital 3D
47: init3D();
48: //create 3D Scene
49: createScene();
50: //addLsitener
51: addEventListener(Event.ENTER_FRAME,update);
52: stage.addEventListener(MouseEvent.MOUSE_DOWN,m_down_h);
53: stage.addEventListener(MouseEvent.MOUSE_UP,m_up_h);
54:
55: }
56: private function createMaterial():void
57: {
58: //背景的贴图材质为 BitmapMaterial
59: planeMaterial=new BitmapMaterial(Cast.bitmap(new goldImage()),{smooth:true, precision:5});
60: //圆环要反射环境,用EnviroBitmapMaterial
61: //EnviroBitmapMaterial构造函数EnviroColorMaterial(color:*, enviroMap:BitmapData, init:Object = null)
62: //第二个参数必须是BitmapData,用于设置反射环境图,本例与背景平面用同一张图goldBackground
63: torusMaterial=new EnviroBitmapMaterial(Cast.bitmap(new skinImage()),Cast.bitmap(new goldImage()));
64: //设置EnviroBitmapMaterial的反射系数,数值为0~1,自行设定数值大小看看效果。
65: torusMaterial.reflectiveness = 0.4;
66:
67: //在这里顺便设置下后面要用到的一个参数cameraSpeed,这个参数影响:拖动鼠标是整个场景旋转速度。
68: cameraSpeed=.3;
69: };
70: private function init3D():void
71: {
72: cam = new HoverCamera3D({focus:300});
73: cam.lookAt( new Number3D(0, 0, 0) );
74: cam.distance=900;
75: cam.panangle=cam.targetpanangle=30;
76: cam.tiltangle=cam.targettiltangle=15;
77: cam.mintiltangle=5;
78:
79: view = new View3D({camera:cam,x:300,y:250});
80: addChild(view);
81: };
82: private function createScene():void
83: {
84: group=new ObjectContainer3D();
85: //创建背景平面
86: plane=new Plane({material:planeMaterial,width:250,height:250,segmentsW:8,segmentsH:8});
87: //创建圆环
88: //radius:圆环总半径;tube:环的圆管半径
89: //所使用的材质为 torusMaterial,它是EnviroBitmapMaterial
90: torus= new Torus({material:torusMaterial,radius:30,tube:20,segmentsR:15,segmentsT:12});
91: torus.y=55;
92:
93: view.scene.addChild(group);
94:
95: group.addChild(plane);
96: group.addChild(torus);
97: };
98: private function update(e:Event):void
99: {
100: if(mouseDown)
101: {
102: cam.targetpanangle=cameraSpeed*(stage.mouseX-lastMouseX)+lastPanangle;
103: cam.targettiltangle=cameraSpeed*(stage.mouseY-lastMouseY)+lastTiltangle;
104: };
105: torus.yaw(-1);
106: torus.pitch(-1);
107: torus.roll(-1);
108: cam.hover();
109: view.render();
110:
111: };
112: private function m_down_h(e:MouseEvent):void
113: {
114: mouseDown=true;
115: lastMouseX=stage.mouseX;
116: lastMouseY=stage.mouseY;
117: lastPanangle=cam.targetpanangle;
118: lastTiltangle=cam.targettiltangle;
119: };
120: private function m_up_h(e:MouseEvent):void
121: {
122: mouseDown=false;
123: };
124:
125: }
126: }
相关推荐
实例教程 - 贴图(EnviroBitmapMaterial) 实例教程 - 贴图(texture mapping) 学习笔记 - away3d类库下载 学习笔记1 - 戏说Flash 三维引擎 学习笔记2-三维世界的四个基本构件 学习笔记3--3D世界的坐标系 学习笔记...
away3d-core-fp11_4_0_9_gold.swc 官网最新最全版本
away3d例子 away3d-away3d-examples-fp11-b4a4817
away3d-core-fp11_4_0_0_beta.zip
away3d-core-fp11_4_0_9_gold是关于away3D在flex中的库文件,对flex中实现3D效果有很大的作用
原始版的away3d-core-fp11_4_1_4.swc
away3d的4.0版代码库,没有demo,只有纯代码,导入即可使用
away3d 在flex 平台开发,效果非常好,是学习的一个好例子
Away3D 基础教程 Flash 3d 开发必备
Away3D的APIAway3D的APIAway3D的API
Away3D 4.1官方开发包,flash 3D开发利器
最新版Away3D 引擎,flash版和flex版
#将Away3D用于OpenFL的示例 ## Introduction Away3D for Flash是Flash Away3D引擎的端口,可为OSX,Windows,iOS,Android和其他应用启用OpenFL C ++本机版本。 ##安装 haxelib install away3d-examples 或者,...
自己做的Away3D 3.6 入门初级的一个实例,是一个带贴图的盒子,可以拖拽旋转,刚学Away3d的可以参考学习一下。
fhasl as3.0 pv3D类 最新4_1_6.swc
《Away3D傻瓜系列教程3 — 灯光和投影》示例代码,教程地址:http://www.chenlinsheng.com/?p=2109
flex结合away3D引擎做的3D象棋
Away3D是Flash的3D引擎,这是Away3D 3.6 Cookbook 教程源码
away3d-core-fp9-master.zip是开源的flash3的开发的平台,fp9是flashcs3嗲用的版本。