package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Vector3D;
import flash.text.TextField;
import flash.text.TextFormat; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-9-2 下午3:17:09
*
*/
[SWF(width="800",height="600")]
public class DrawCube extends Sprite
{
private var _faceArr:Array = [];
private var _sideLen:Number = 100;//正方形边长
private var _container:Sprite;
private var _text:String = "AS世界你好";
private var _tf:TextFormat = new TextFormat("微软雅黑",60,0xff0000);
public function DrawCube()
{
initViews();
initEventListeners();
}
private function initViews():void
{
_container = new Sprite();
_container.x = 300;
_container.y = 300;
this.addChild(_container);
creatCube();
}
private function initEventListeners():void
{
this.addEventListener(Event.ENTER_FRAME,onMove);
}
private function onMove(e:Event):void
{
for(var i:int = 0;i<6;i++){
_faceArr[i].transform.matrix3D.appendRotation((mouseX-_container.x)/50,Vector3D.Y_AXIS);
_faceArr[i].transform.matrix3D.appendRotation((_container.y-mouseY)/50,Vector3D.X_AXIS);
}
_faceArr.sortOn("z",18);
for(i=0;i<_faceArr.length;i++){
_container.setChildIndex(_faceArr[i],i);
}
}
private function creatCube():void
{
for(var i:int=0;i<6;i++){
var rect:Sprite = drawRect(_sideLen,_sideLen,Math.random()*0xffffff);
var txt:TextField = new TextField();
_container.addChild(rect);
rect.addChild(txt);
txt.autoSize = "center";
txt.selectable = false;
txt.defaultTextFormat = _tf;
txt.text = _text.substr(i,1);
txt.x = -txt.width*0.5;
txt.y = -txt.height*0.5;
rect.z = -_sideLen/2;
_faceArr[i] = rect;
i<4?rect.transform.matrix3D.appendRotation(90*i,Vector3D.Y_AXIS):0;
}
_faceArr[4].transform.matrix3D.appendRotation(-90,Vector3D.X_AXIS);
_faceArr[5].transform.matrix3D.appendRotation(90,Vector3D.X_AXIS);
}
private function drawRect(width:Number,height:Number,color:uint):Sprite
{
var rect:Sprite = new Sprite();
rect.graphics.beginFill(color,0.9);
rect.graphics.drawRect(-width*0.5,-height*0.5,width,height);
rect.graphics.endFill();
return rect;
}
}
}

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

  1. [ActionScript 3.0] AS3 绘制12面体

    package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; im ...

  2. [ActionScript 3.0] AS3 绘制星形

    package { import flash.display.Sprite; import flash.events.Event; /** * @author Frost.Yen * @E-mail ...

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

    package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; im ...

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

    分析: 将八面体置于3D坐标系中,其中心的坐标位于原点(0,0,0),让八面体的六个顶点恰好位于3D坐标系的x轴.y轴和z轴上,则从八面体的中心到这六个顶点的距离是相等的.我们可以假设这个距离为r,则 ...

  5. [ActionScript 3.0] AS3 绘制正二十面体(线条)

    分析: 正二十面体共有12个顶点.30条棱,其20个面都是正三角形.每条棱所对应的弧度值为1.1071487177940904弧度,这个弧度值可通过求Math.sqrt(5)/5的反余弦值求得.正二十 ...

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

    注:顶点坐标可以点击 package { import flash.display.Shape; import flash.display.Sprite; import flash.events.Mo ...

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

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  8. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  9. [ActionScript 3.0] AS3虚线绘制方法

    import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; var mc:Movie ...

随机推荐

  1. shell脚本实例-matrix

    [Sat Feb 27 17:51:36 1038 /dev/pts/0 192.168.2.250 ~/sh]#cat matrix blue="\033[0;34m" brig ...

  2. asp.net 程序,单击按钮时 同时实现打开页面并处理值

    来源:http://blog.csdn.net/nvhaixx/article/details/12430757 1)在网页中添加用于处理的客户端事件: <script language=&qu ...

  3. mysql导出查询结果到csv方法

    要将MySQL的查询结果导出为csv,一般会使用php连接mysql执行查询,将返回的查询结果使用php生成csv格式再导出. 但这样比较麻烦,需要服务器安装php才可以实现. 直接使用mysql导出 ...

  4. phpredis中文手册——《redis中文手册》 php版--引用他人

    出处: http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html 目录(使用CTRL+F快速查找命令): Key String H ...

  5. 本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。——Oracle监听器服务无法启动!

    问题: oracle服务设置为手动启动.但是开机后手动启动监听服务后弹出框,提示“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止.某些服务在未由其他服务或程 ...

  6. VBA 按照文件类型名称打开一个文件

    Application.GetOpenFilename(fileFilter, fileIndex, fileSelectTitle, button, False) fileFilter: 指定能够被 ...

  7. [转][工地][存]Oracle触发器死锁问题解决

    摘自http://blog.itpub.net/12932950/viewspace-607691/ 这两天一直在因为系统初期设计原因导致的一个触发器问题.问题如下:有表T,有客户编号.账户编号及地址 ...

  8. 在mui中遇到的内容覆盖导航栏的问题

    一.问题描述: 公司项目中为了让内容以页面的形式显示,并要格式化页面内容,采用了百度的UEditor编辑器来显示内容,但是遇到了一个问题就是当下拉页面到一定距离之后,页面上方的导航栏会被内容遮盖. 二 ...

  9. SPOJ #752. Power it!

    By property of mod operations , we can simply use Divide and Conquer + Recursion to solve it. Refere ...

  10. Python基础教程【读书笔记】 - 2016/7/4

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第二波:第7章  更加抽象 [总览] 创建自己的对象,是Python的核心概念!Python被称为面向对象的语言.介绍如 ...