[AS3]as3实现长方形的转动效果源代码实例
[AS3]as3实现长方形的转动效果源代码实例
[AS3]as3实现长方形的转动效果源代码实例
- package
- {
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- import flash.display.MovieClip;
- import flash.events.Event;
- import flash.utils.Timer;
- import flash.events.TimerEvent;
- public class Main extends Sprite
- {
- private var rect_mc:MovieClip = null;
- private var circle_mc:MovieClip = null;
- private var array1:Array=new Array(
- {m_x:275,m_y:100},{m_x:325,m_y:113.4},{m_x:361.6,m_y:150}
- ,{m_x:375,m_y:200},{m_x:361.6,m_y:250},{m_x:325,m_y:286.6}
- ,{m_x:275,m_y:300},{m_x:225,m_y:286.6},{m_x:188.4,m_y:250}
- ,{m_x:175,m_y:200},{m_x:188.4,m_y:150},{m_x:225,m_y:113.4});
- private var counter:Number = 0;
- public function Main()
- {
- /*圆,圆画在元件上默认圆心坐标(0,0)
- 也就是说圆心和元件中心重合*/
- circle_mc=new MovieClip();
- var circle_s:Sprite=new Sprite();
- with (circle_s)
- {
- graphics.lineStyle(5,0x000000);
- graphics.drawCircle(0,0,100);
- }
- circle_mc.addChild(circle_s);
- circle_mc.x = stage.stageWidth / 2;
- circle_mc.y = stage.stageHeight / 2;
- stage.addChild(circle_mc);
- /*长方形,长方形画在元件上默认左上角坐标(0,0)
- 也就是说长方形左上角和元件中心重合*/
- rect_mc=new MovieClip();
- var rect_s:Sprite=new Sprite();
- with (rect_s)
- {
- graphics.lineStyle(2,0x000000);
- graphics.beginFill(0x000000);
- graphics.drawRect(0,0,10,50);
- graphics.endFill();
- }
- /*将长方形的“下边中心”和元件的中心重合
- 这样在旋转长方形的时候就会以“下边中心”为基点*/
- rect_s.x = -5;
- rect_s.y = -50;
- rect_mc.addChild(rect_s);
- rect_mc.x = stage.stageWidth / 2;
- rect_mc.y = stage.stageHeight / 2;
- stage.addChild(rect_mc);
- var timer:Timer = new Timer(1000,12);
- timer.addEventListener(TimerEvent.TIMER,rectangleRotating);
- timer.start();
- }
- //长方形旋转
- private function rectangleRotating(e:TimerEvent):void
- {
- var angle1:Number = getAngleBy2Points(rect_mc.x,rect_mc.y,array1[counter].m_x,array1[counter].m_y);
- trace(angle1);
- rect_mc.rotation = angle1;
- counter++;
- }
- /*获取长方形元件的中心点与鼠标点击点连线和长方形的角度
- x1代表中心点的X坐标
- y1代表中心点的Y坐标
- x2代表鼠标点的X坐标
- y2代表鼠标垫的Y坐标*/
- private function getAngleBy2Points(x1:Number,y1:Number,x2:Number,y2:Number):Number
- {
- //获取长方形元件的中心点与鼠标点击点连线和长方形的弧度
- var radian1:Number=Math.atan((x2-x1)/(y1-y2));
- //根据弧度获取角度
- var angle1:Number=radian1/(Math.PI/180);
- if (x2 >= x1)
- {
- if (y2 <= y1)
- {
- angle1angle1 = angle1;
- }
- else
- {
- angle1 += 180;
- }
- }
- else
- {
- if (y2 > y1)
- {
- angle1 += 180;
- }
- else
- {
- angle1 += 360;
- }
- }
- return angle1;
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...