动态绘制时钟

知识点:

1、动态画圆:实际上圆的边线就是无数个小圆点的集合,也就是这些小圆点一个一个地显示便形成了大圆的边线。下面是小圆点的坐标

X=Math.cos(j1 / 180 * Math.PI) * 100 + w;
Y=Math.sin(j1 / 180 * Math.PI) * 100 + h;
j1++;


 

且坐标随着j1的改变而改变。

2、进一步学习TIMER类;

3、动态画直线(让直线一点一点地显示出来);下面是动态绘制的秒针语句:

秒针.graphics.lineStyle(1.5,0x00CCCC);
秒针.graphics.moveTo(0,0);
秒针.graphics.lineTo(0,-j4);
j4++;
秒针.x=w;
秒针.y=h;



4、注意钟表中指针的坐标设定(不然就与实际指针走的方向不一致),见第3点中。

5、使绘制的钟表居于舞台中央,首先设定变量值,如下:

var w:Number=stage.stageWidth/2;
var h:Number=stage.stageHeight/2;

 

然后再调用。(否则你改变舞台的大小时就会错位)



 

var w:Number=stage.stageWidth/2;
var h:Number=stage.stageHeight/2;
var 半径:Sprite= new Sprite();
addChild(半径);
var 外圆:Sprite= new Sprite();
addChild(外圆);
var 内圆:Sprite= new Sprite();
addChild(内圆);
var 表格:Sprite= new Sprite();
addChild(表格);
var 时针:Sprite= new Sprite();
addChild(时针);
var 分针:Sprite= new Sprite();
addChild(分针);
var 秒针:Sprite= new Sprite();
addChild(秒针);
//画圆心
var yx:Sprite=new Sprite;
yx.graphics.beginFill(0x00CCCC);
yx.graphics.drawCircle(w,h,5);
yx.graphics.endFill();
addChild(yx);
//申明变量
var X:Number=0;
var Y:Number=0;
var X1:Number=0;
var Y1:Number=0;
var X2:Number=0;
var Y2:Number=0;
var j1:uint= 0;
var j2:uint=0;
var j3:uint=0;
var j4:uint=0;
var j5:uint=0;
var j6:uint=0;
var 画外圆计时:Timer=new Timer(10,360);
var 画内圆计时:Timer=new Timer(10,360);
var 画表格计时:Timer=new Timer(200,12);
var 画秒针计时:Timer=new Timer(10,90);
var 画分针计时:Timer=new Timer(10,75);
var 画时针计时:Timer=new Timer(10,60);
画外圆计时.start();
画外圆计时.addEventListener(TimerEvent.TIMER,画外圆);
画外圆计时.addEventListener(TimerEvent.TIMER_COMPLETE,画外圆完成);
function 画外圆(event:TimerEvent):void {
 X=Math.cos(j1 / 180 * Math.PI) * 100 + w;
 Y=Math.sin(j1 / 180 * Math.PI) * 100 + h;
 j1++;
 外圆.graphics.beginFill(0xAAAAAA);
 外圆.graphics.drawCircle(X, Y, 1.5);
 外圆.graphics.endFill();
}
function 画外圆完成(event:TimerEvent):void {
 画内圆计时.start();
 画内圆计时.addEventListener(TimerEvent.TIMER,画内圆);
 画内圆计时.addEventListener(TimerEvent.TIMER_COMPLETE,画内圆完成);
}
function 画内圆(event:TimerEvent):void {
 X1=Math.cos(j2 / 180 * Math.PI) * 92 + w;
 Y1=Math.sin(j2 / 180 * Math.PI) * 92 + h;
 j2++;
 内圆.graphics.beginFill(0x999999);
 内圆.graphics.drawCircle(X1, Y1, 1.5);
 内圆.graphics.endFill();
 半径.graphics.lineStyle(3,0x000000);
 半径.graphics.moveTo(w,h);
 半径.graphics.lineTo(X1,Y1);
}
function 画内圆完成(event:TimerEvent):void {
 画表格计时.start();
 画表格计时.addEventListener(TimerEvent.TIMER,画表格);
 画表格计时.addEventListener(TimerEvent.TIMER_COMPLETE,画表格完成);
}
function 画表格(event:TimerEvent):void {
 X2=Math.cos(j3 / 180 * Math.PI) * 80 + w;
 Y2=Math.sin(j3 / 180 * Math.PI) * 80 + h;
 j3+=30;
 表格.graphics.beginFill(0x00CCCC);
 表格.graphics.drawCircle(X2, Y2, 2);
 表格.graphics.endFill();
}
function 画表格完成(event:TimerEvent):void {
 画秒针计时.start();
 画秒针计时.addEventListener(TimerEvent.TIMER,画秒针);
 画秒针计时.addEventListener(TimerEvent.TIMER_COMPLETE,画秒针完成);
}
function 画秒针(event:TimerEvent):void {
 //画秒针
 秒针.graphics.lineStyle(1.5,0x00CCCC);
 秒针.graphics.moveTo(0,0);
 秒针.graphics.lineTo(0,-j4);
 j4++;
 秒针.x=w;
 秒针.y=h;
}
function 画秒针完成(event:TimerEvent):void {
 画分针计时.start();
 画分针计时.addEventListener(TimerEvent.TIMER,画分针);
 画分针计时.addEventListener(TimerEvent.TIMER_COMPLETE,画分针完成);
}
function 画分针(event:TimerEvent):void {
 //画分针
 分针.graphics.lineStyle(3,0x00AAAA);
 分针.graphics.moveTo(0,0);
 分针.graphics.lineTo(0,-j5);
 j5++;
 分针.x=w;
 分针.y=h;
}
function 画分针完成(event:TimerEvent):void {
 画时针计时.start();
 画时针计时.addEventListener(TimerEvent.TIMER,画时针);
}
function 画时针(event:TimerEvent):void {//画时针
 时针.graphics.lineStyle(4,0x008888);
 时针.graphics.moveTo(0,0);
 时针.graphics.lineTo(0,-j6);
 j6++;
 时针.x=w;
 时针.y=h;
}
//画针动起来
stage.addEventListener(Event.ENTER_FRAME,gx);
function gx(e:Event):void {
 var sj:Date=new Date();
 var hm:uint=sj.getMilliseconds();
 var m:uint=sj.getSeconds();
 var f:uint=sj.getMinutes();
 var s:uint=sj.getHours();
 秒针.rotation =(m+hm/1000)*6;
 分针.rotation =f* 6+m*0.1;
 时针.rotation =s * 30 +f * 0.5;
}


效果:见原文地址:http://www.68design.net/Web-Guide/Flash/53122-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 MATLAB 代码,用于绘制动态时钟: ```matlab % 设置时钟的位置和大小 clock_pos = [0.5 0.5]; clock_radius = 0.4; % 创建一个新的 figure 窗口 figure; % 设置绘图的参数 axis equal; axis([0 1 0 1]); axis off; hold on; % 循环绘制时钟 while true % 获取当前时间 current_time = clock; % 计算指针的角度 hour_angle = (current_time(4) / 12) * 360; minute_angle = (current_time(5) / 60) * 360; second_angle = (current_time(6) / 60) * 360; % 绘制时钟圆形轮廓 circle_x = clock_pos(1) + clock_radius * cosd(0:360); circle_y = clock_pos(2) + clock_radius * sind(0:360); plot(circle_x, circle_y, 'Color', 'k', 'LineWidth', 2); % 绘制时钟的刻度线 for i = 1:12 tick_angle = i * 30; tick_x = clock_pos(1) + (clock_radius - 0.05) * cosd(tick_angle); tick_y = clock_pos(2) + (clock_radius - 0.05) * sind(tick_angle); plot([tick_x clock_pos(1)], [tick_y clock_pos(2)], 'Color', 'k', 'LineWidth', 2); end % 绘制指针 hour_x = clock_pos(1) + (clock_radius - 0.2) * cosd(hour_angle - 90); hour_y = clock_pos(2) + (clock_radius - 0.2) * sind(hour_angle - 90); minute_x = clock_pos(1) + (clock_radius - 0.1) * cosd(minute_angle - 90); minute_y = clock_pos(2) + (clock_radius - 0.1) * sind(minute_angle - 90); second_x = clock_pos(1) + (clock_radius - 0.05) * cosd(second_angle - 90); second_y = clock_pos(2) + (clock_radius - 0.05) * sind(second_angle - 90); plot([clock_pos(1) hour_x], [clock_pos(2) hour_y], 'Color', 'r', 'LineWidth', 3); plot([clock_pos(1) minute_x], [clock_pos(2) minute_y], 'Color', 'g', 'LineWidth', 2); plot([clock_pos(1) second_x], [clock_pos(2) second_y], 'Color', 'b', 'LineWidth', 1); % 更新绘图 drawnow; % 暂停一秒钟 pause(1); % 清空绘图 clf; end ``` 运行代码后,将会出现一个动态时钟的窗口。指针会根据当前时间的变化而移动。您可以通过修改 `clock_pos` 和 `clock_radius` 参数来调整时钟的位置和大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值