[ActionScript 3.0] AS3 绘制立方体

 1 package
 2 {
 3     import flash.display.Sprite;
 4     import flash.events.Event;
 5     import flash.geom.Vector3D;
 6     import flash.text.TextField;
 7     import flash.text.TextFormat;
 8
 9     /**
10      * @author Frost.Yen
11      * @E-mail [email protected]
12      * @create 2015-9-2 下午3:17:09
13      *
14      */
15     [SWF(width="800",height="600")]
16     public class DrawCube extends Sprite
17     {
18         private var _faceArr:Array = [];
19         private var _sideLen:Number = 100;//正方形边长
20         private var _container:Sprite;
21         private var _text:String = "AS世界你好";
22         private var _tf:TextFormat = new TextFormat("微软雅黑",60,0xff0000);
23         public function DrawCube()
24         {
25             initViews();
26             initEventListeners();
27         }
28         private function initViews():void
29         {
30             _container = new Sprite();
31             _container.x = 300;
32             _container.y = 300;
33             this.addChild(_container);
34             creatCube();
35         }
36         private function initEventListeners():void
37         {
38             this.addEventListener(Event.ENTER_FRAME,onMove);
39         }
40         private function onMove(e:Event):void
41         {
42             for(var i:int = 0;i<6;i++){
43                 _faceArr[i].transform.matrix3D.appendRotation((mouseX-_container.x)/50,Vector3D.Y_AXIS);
44                 _faceArr[i].transform.matrix3D.appendRotation((_container.y-mouseY)/50,Vector3D.X_AXIS);
45             }
46             _faceArr.sortOn("z",18);
47             for(i=0;i<_faceArr.length;i++){
48                 _container.setChildIndex(_faceArr[i],i);
49             }
50         }
51         private function creatCube():void
52         {
53             for(var i:int=0;i<6;i++){
54                 var rect:Sprite = drawRect(_sideLen,_sideLen,Math.random()*0xffffff);
55                 var txt:TextField = new TextField();
56                 _container.addChild(rect);
57                 rect.addChild(txt);
58                 txt.autoSize = "center";
59                 txt.selectable = false;
60                 txt.defaultTextFormat = _tf;
61                 txt.text = _text.substr(i,1);
62                 txt.x = -txt.width*0.5;
63                 txt.y = -txt.height*0.5;
64                 rect.z = -_sideLen/2;
65                 _faceArr[i] = rect;
66                 i<4?rect.transform.matrix3D.appendRotation(90*i,Vector3D.Y_AXIS):0;
67             }
68             _faceArr[4].transform.matrix3D.appendRotation(-90,Vector3D.X_AXIS);
69             _faceArr[5].transform.matrix3D.appendRotation(90,Vector3D.X_AXIS);
70         }
71         private function drawRect(width:Number,height:Number,color:uint):Sprite
72         {
73             var rect:Sprite = new Sprite();
74             rect.graphics.beginFill(color,0.9);
75             rect.graphics.drawRect(-width*0.5,-height*0.5,width,height);
76             rect.graphics.endFill();
77             return rect;
78         }
79     }
80 }
时间: 2024-07-30 13:49:19

[ActionScript 3.0] AS3 绘制立方体的相关文章

[ActionScript 3.0] AS3 绘制星形

1 package 2 { 3 import flash.display.Sprite; 4 import flash.events.Event; 5 6 /** 7 * @author Frost.Yen 8 * @E-mail [email protected] 9 * @create 2015-9-9 下午4:47:50 10 * 11 */ 12 [SWF(width="1024",height="1024",frameRate="5")

[ActionScript 3.0] AS3 绘制正八面体(线条)

分析: 将八面体置于3D坐标系中,其中心的坐标位于原点(0,0,0),让八面体的六个顶点恰好位于3D坐标系的x轴.y轴和z轴上,则从八面体的中心到这六个顶点的距离是相等的.我们可以假设这个距离为r,则六个顶点的坐标分别为上(0,-r,0).下(0,r,0).四周:左(-r,0,0).右(r,0,0).前(0,0,-r).后(0,0,r). 1 package 2 { 3 import flash.display.MovieClip; 4 import flash.display.Sprite;

[ActionScript 3.0] AS3 绘制正四面体(线条)

1 package 2 { 3 import flash.display.MovieClip; 4 import flash.display.Sprite; 5 import flash.events.Event; 6 import flash.geom.Point; 7 import flash.geom.Vector3D; 8 9 /** 10 * @author Frost.Yen 11 * @E-mail [email protected] 12 * @create 2015-9-8 上

[ActionScript 3.0] AS3 绘制任意三角形任意顶点到对边的高

注:顶点坐标可以点击 1 package 2 { 3 import flash.display.Shape; 4 import flash.display.Sprite; 5 import flash.events.MouseEvent; 6 import flash.geom.Point; 7 import flash.text.TextField; 8 9 /** 10 * @author Frost.Yen 11 * @E-mail [email protected] 12 * @crea

[ActionScript 3.0] as3处理xml的功能和遍历节点

as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误). 利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构. 1.读取外部 XML 文档 可以使用 URLLoader 类从 URL 加载 XML 数据.若

[ActionScript 3.0] AS3虚线绘制方法

import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; var mc:MovieClip=new MovieClip(); addChild(mc); drawDashed(mc,new Point(100,100),new Point(500,100),5,5); function drawDashed(mc:Sprite,p1:Point,p2:Point,length:N

[ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains

简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时候,默认的设置工作的很好,你甚至不知道他们的存在. 但是某些时候你可能需要控制默认设置以外的更多行为和功能,这样你就会遇到前面所说的问题.你也许会困扰于Security.allowDomain和crossdomain.xml文件的区别,又或者你想要深究关于安全性的最佳实践.如果是这样,那么这篇文章就

[ActionScript 3.0] AS3.0和AS2.0的相互通信

AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) { var param = "this message is from as2"; var caller:LocalConnection = new LocalConnection(); caller.send("AS2 send to AS3","funI

[ActionScript 3.0] AS3 3D双圆环贴图

1 package 2 { 3 import flash.display.Bitmap; 4 import flash.display.BitmapData; 5 import flash.display.MovieClip; 6 import flash.display.Sprite; 7 import flash.display.TriangleCulling; 8 import flash.events.Event; 9 import flash.geom.ColorTransform;