Away3D-0 网页中的全屏

 1 package 
 2 {
 3     import away3d.entities.*;
 4     import away3d.materials.*;
 5     import away3d.primitives.*;
 6     import away3d.utils.*;
 7     import flash.display.*;
 8     import flash.events.*;
 9     import away3d.containers.*;
10     import flash.ui.ContextMenu;
11     import flash.ui.ContextMenuItem;
12     /**
13      * ...
14      * @author HonmaMeiko
15      */
16     [SWF(width="600",height="400",backgroundColor="#FFFFFF", frameRate="60", quality="LOW")]
17     public class Main extends Sprite 
18     {
19         [Embed(source = "earth2.jpg")]
20         private var earth:Class;//图片资源
21         private var view:View3D;//Away3D的3D视图
22         private var sphere:Mesh;//网格
23         public function Main():void //构造函数
24         {
25             //创建3D视图
26             view = new View3D();
27             //加载球形几何图形数据
28             var geo:SphereGeometry = new SphereGeometry(200);
29             //加载纹理
30             var texture:TextureMaterial = new TextureMaterial(Cast.bitmapTexture(earth));
31             //合成Mesh
32             sphere = new Mesh(geo, texture);
33             //添加到3D视图中
34             view.scene.addChild(sphere);
35             //构造新的右键菜单,覆盖掉Away3D原有的右键菜单
36             var menu:ContextMenu = new ContextMenu;
37             menu.customItems.push(new ContextMenuItem("Test"));
38             menu.hideBuiltInItems();
39             view.contextMenu = menu;
40             
41             //设置stage属性
42             stage.align = StageAlign.TOP_LEFT;//让子节点停靠在左上角
43             stage.scaleMode = StageScaleMode.NO_SCALE;//不拉伸模式
44             stage.addChild(view);//添加3D视图到stage中
45             //监听事件
46             stage.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
47             stage.addEventListener(MouseEvent.CLICK, onMouseClick);
48             stage.addEventListener(Event.RESIZE, OnResize);
49             OnResize();
50             
51         }
52         private function OnEnterFrame(e:Event):void
53         {
54             
55             //sphere.pitch(1);    //绕X轴旋转,沿着向量(-1,0,0)指向的方向看,正数顺时针,负数逆时针
56             //sphere.roll(1);    //绕Z轴旋转,向量(0,0,-1)
57             sphere.yaw(1);        //绕Y轴旋转,向量(0,-1,0)
58             view.render();        //渲染
59         }
60         private function onMouseClick(event:Event = null):void
61         {
62             //判断当前是否是全屏状态
63             if (stage.displayState != "fullScreen") {
64                 //不是则切换到全屏状态
65                 stage.displayState = StageDisplayState.FULL_SCREEN;
66             }
67             else {
68                 //是则切换到窗口状态
69                 stage.displayState = StageDisplayState.NORMAL;
70             }
71             //在IE 9.0.8112.16421下,flash版本11.6.602.180下正常运行,能进行切换且切换后内容显示正常
72             //在chrome 26.0.1410.64 m下,flash版本11.7.700.179下窗口模式下能显示,切换到全屏后不显示任何内容,再切换回窗口模式也不显示内容
73         }
74         private function OnResize(event:Event = null):void
75         {
76             //窗口大小改变后设置view的宽度和高度
77             view.x = 0;
78             view.y = 0;
79             if (stage.displayState == "fullScreen")
80             {
81                 view.width = stage.fullScreenWidth;
82                 view.height = stage.fullScreenHeight;
83             }
84             else {
85                 view.width = stage.stageWidth;
86                 view.height = stage.stageHeight;
87             }
88         }
89     }
90     
91 }

测试图一张(来自away3d的example):

测试图512*256

图像的宽和高必须是2的倍数,否则纹理加载会失败.

posted @ 2013-04-30 12:53  Kinel  阅读(371)  评论(0)    收藏  举报