用AS3绘图API来画一个旋转的太极图
2013-04-16 13:03
351 查看
知识点:
1、绘制API的线条、填充样式的控制2、在合适的代码位置,结束或者开始绘制,重设样式
3、注册点,绕中心点旋转
实例演示:
源代码和说明:
package { import flash.display.Graphics; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; [SWF( frameRate = "60", width = "960", height = "600", backgroundColor = "0xcccccc" )] public class TaiChi extends Sprite { private var container:Sprite; // 实现绕中心点旋转的容器 private var shape:Shape; // 太极图 public function TaiChi() { container = new Sprite(); addChild( container ); shape = new Shape(); container.addChild( shape ); draw( 480, 300, 200 ); animat(); } public function draw( dx:Number, dy:Number, radius:Number ):void { shape.x = -radius; shape.y = -radius; container.x = dx; container.y = dy; shape.cacheAsBitmap = true; var arcRadius:Number; // 圆弧半径 var smlRadius:Number; // 小圆半径 var center:Point = new Point( radius + 0, radius + 0 ); // 设置底层填充颜色(大圆背景色,也是一半“逗号形状”的背景色) shape.graphics.beginFill( 0xffffff ); // 绘制一个大圆 drawArc( shape.graphics, center.x, center.y, radius, 0, 360 ); // 我们只需要填充大圆背景,然后去除填充,防止路径自动闭合 shape.graphics.endFill(); // 弧半径 arcRadius = radius >> 1; // 小圆半径(小圆半径以弧半径一半,圆心正好位于弧线的圆心上) smlRadius = arcRadius * 0.375; // 填充半圆 shape.graphics.beginFill( 0x000000 ); drawArc( shape.graphics, center.x, center.y, radius, 0, 180 ); shape.graphics.beginFill( 0xffffff ); drawArc( shape.graphics, center.x, center.y, radius, 180, 360 ); // 左边的圆弧 shape.graphics.beginFill( 0x000000 ); drawArc( shape.graphics, center.x - arcRadius, center.y, arcRadius, 180, 360 ); // 右边的圆弧 shape.graphics.beginFill( 0xffffff ); drawArc( shape.graphics, center.x + arcRadius, center.y, arcRadius, 0, 180 ); // 两个小圆 shape.graphics.beginFill( 0x000000 ); shape.graphics.drawCircle( center.x + arcRadius, center.y, smlRadius ); shape.graphics.beginFill( 0xffffff ); shape.graphics.drawCircle( center.x - arcRadius, center.y, smlRadius ); // 结束绘制 shape.graphics.endFill(); // 大圆的线条 shape.graphics.lineStyle( 5, 0x000000, 1.0 ); // 绘制一个大圆,两个圆弧,两个小圆 drawArc( shape.graphics, center.x, center.y, radius, 0, 360 ); } /** * 绘制弧线 * @param g 绘图接口 * @param dx 弧心的X坐标 * @param dy 弧心的Y坐标 * @param radius 弧半径 * @param startAngle 开始角度 * @param endAngle 结束角度 */ public function drawArc( g:Graphics, dx:Number, dy:Number, radius:Number, startAngle:Number, endAngle:Number ):void { if( startAngle == endAngle ) return; for( var i:int = startAngle; i <= endAngle; i++ ) { var px:Number = dx + radius * Math.cos( -i * Math.PI / 180 ); var py:Number = dy + radius * Math.sin( -i * Math.PI / 180 ); if( i == startAngle ) { g.moveTo( px, py ); } g.lineTo( px, py ); } } public function animat():void { addEventListener( Event.ENTER_FRAME, enterFrameHandler ); } private function enterFrameHandler( event:Event ):void { container.rotation -= 5; } } }
相关文章推荐
- flash 绘图API:太极
- opengl绘图,画一个旋转的四边形和一个旋转的三角形,平滑着色和单一着色
- flash 绘图API:太极
- HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
- flash 绘图API:太极
- Java实现的一个旋转效果(旋转太极)
- CSS3画八卦太极图(绕一个圆旋转)
- 3. 使用绘图API自定义视图 --- 旋转的方块
- Flash Player 10提供的一个新的绘图 API
- d3d实现一个旋转的三角形
- 一个简易的网页爬虫,可用于下载在线API文档
- 一个给 Java 程序员用的 Api 文档生成工具
- Android学习教程之2D绘图基础及绘制太极图
- 一个使用PJSUA-API编写的简单例子,演示了SIP注册,呼叫,语音交互(少于200行代码)【译】
- 一个注入winlogon的程序的代码,学习API用
- 刚遇到的一个C#中调用api,回调函数的问题
- [ActionScript 3.0] AS3调用百度天气预报查询API
- 提供一个成语api
- 建立一个更高级别的查询 API:正确使用Django ORM 的方式
- iOS开发之高效绘图,通过一个绘图应用进行讲解