杜鹏的小代码
中国 陕西 西安

导航

 

这个是个基础的东西,目前想要在网页上实现一个类似于CS的效果,就是有一个房屋,通过使用键盘和鼠标来控制移动与视角,在房屋内移动,房屋也是通过as代码来初始化的。不过目前我还没完全掌握PV3D技术,所以先粘贴别人的代码来看看,学习学习。一下是代码部分。

代码
1 package {
2 import flash.events.Event;
3 import flash.events.MouseEvent;
4 import org.papervision3d.cameras.CameraType;
5 import org.papervision3d.objects.primitives.Sphere;
6 import org.papervision3d.view.BasicView;
7 import org.papervision3d.materials.BitmapFileMaterial;
8
9 //设置舞台宽高、背景颜色、帧频
10 [SWF (width="460", height="300", backgroundColor="0xffffff", frameRate="30")]
11
12 public class pv3dwholeScene extends BasicView
13 {
14 private var sphere:Sphere;
15 private var w:Number=460;
16 private var h:Number=300;
17 private var angleX:Number;
18 private var angleY:Number;
19 private var over:Boolean=false;
20
21 public function pv3dwholeScene()
22 {
23 super(460,300,true, false,CameraType.FREE);
24 init();
25 }
26 private function init():void
27 {
28 initObj();
29
30 //注册帧频侦听用于不断刷新屏幕
31 addEventListener(Event.ENTER_FRAME,onEnterFrame);
32
33 //当鼠标移到舞台时注册侦听
34 stage.addEventListener(MouseEvent.MOUSE_OVER,onOver);
35
36 //当鼠标移出舞台时注册侦听
37 stage.addEventListener(MouseEvent.MOUSE_OUT,onOut);
38 }
39
40 private function initObj():void
41 {
42 var material:BitmapFileMaterial=new BitmapFileMaterial("images/yourImage.jpg");
43
44 //PV3D默认情况下不显示背面,doubleSided属性应设为true
45 material.doubleSided = true;
46 material.smooth = true;
47
48 //实例化球体 (由周长算出半径 S=2*PI*R)
49 sphere=new Sphere(material,98.68,20,20);
50 scene.addChild(sphere);
51
52 //把摄像机移到中心位置,PV3D摄像机的默认位置是camera.z=-1000
53 camera.z=0;
54
55 //摄象机的缩放参数,
56 camera.zoom=.8;
57
58 //摄象机的焦距
59 camera.focus=300;
60 }
61
62 private function onEnterFrame(e:Event):void
63 {
64
65 if(over)
66 {
67 //当over是真时设置摄像机的旋转角度
68 var xm:Number=stage.mouseX;
69 var ym:Number=stage.mouseY;
70 angleX=(w/2-xm)*-.004;
71 angleY=(h/2-ym)*-.002;
72 }
73 else
74 {
75 //当over是假时设置摄像机的旋转角度为0
76 angleX=0;
77 angleY=0;
78 }
79 // 旋转摄像机
80 camera.yaw(angleX);
81 camera.pitch(angleY);
82 //渲染
83 singleRender();
84 }
85
86 private function onOver(event:MouseEvent):void
87 {
88 over=true;//鼠标移到场景上为真
89 }
90 private function onOut(event:MouseEvent):void
91 {
92 over=false;//鼠标移出场景为假
93 }
94
95 }
96
97 }
98

 

posted on 2010-06-12 22:56  杜鹏  阅读(3378)  评论(1编辑  收藏  举报