Flash AS实现时钟效果(全脚本实现)
最近工作中用到个Flash效果,好久没有写FlashAS脚本了,就想从以前写的代码中找一些实例。竟然看到硬盘中还留有若干年前的代码。
这个时钟效果是全部采用脚本实现,图形也是用脚本绘制的。写于2005年,当然还是基于As2.0编写。现在想想自己当时也是闲得没事儿,竟然写这个东东。呵呵。2005年啊,8年前……无限回味啊,当初自己还是个小菜鸟,写出这样的东西真不容易,现在都想不起怎么写出来的了。里面用到了圆方程!当时刚出校门,理论基础还算扎实,现在什么都忘记了。

现在也可以用,使用很简单,把代码复制到帧的动作面板中即可。代码如下:
/*
一个表的效果,全AS绘制,只需把一下面的代码全复制到
第一帧就OK了。
作者:晴风 10522779
*/
//生成元件的起始深度值
var lv:Number = 100;
//钟表的半径
var radius:Number = 100;
// 钟表跟随鼠标的速度
var speed:Number = 5;
//钟表的颜色值及透明度
var my_color = 0xB1C0F3;
var my_line = 0xffffff;
var my_alpha = 100;
//用于圆形方程计算
var p:Number = 0;
var n:Number = 0;
//设定文本样式的函数
function text_CSS(word) {
CSS = new TextFormat();
CSS.size = radius*.14;
//文本居中
CSS.align = "center";
//文本的颜色
CSS.color = my_color;
//CSS.color = Math.floor(Math.random()*255) << 16 | Math.floor(Math.random()*255) << 8 | Math.floor(Math.random()*255);
word.setTextFormat(CSS);
}
//生成一续列,动态文本字段
for (i=0; i<=30; i++) {
createTextField("time"+i, lv++, 0, 0, radius*0.2, radius*.2);
this["time"+i].selectable = false;
this["time"+i]._alpha = my_alpha/3;
}
//生成标志文本
createTextField("biaozi", lv++, 0, 0, radius*0.6, radius*0.2);
biaozi.text = "晴风时钟";
biaozi._alpha = my_alpha/3;
text_CSS(biaozi);
//绘制中心点
createEmptyMovieClip("zhongxin", lv++);
with (zhongxin) {
beginFill(0xffffff, my_alpha);
moveTo(-2, 2);
lineTo(2, 2);
lineTo(2, -2);
lineTo(-2, -2);
lineTo(-2, 2);
endFill();
_x = 200;
_y = 150;
_width = _height=radius*.04;
}
//绘制时针
createEmptyMovieClip("shi", lv++);
with (shi) {
beginFill(my_color, my_alpha);
lineStyle(1, my_line, my_alpha/2);
moveTo(-5, 6);
lineTo(0, 10);
lineTo(5, 6);
lineTo(3, -35);
lineTo(0, -37);
lineTo(-3, -35);
lineTo(-5, 6);
endFill();
_x = _parent.zhongxin._x;
_y = _parent.zhongxin._y;
_height = radius*.50;
_width = _height*.25;
}
//绘制分针
createEmptyMovieClip("fen", lv++);
with (fen) {
beginFill(my_color, my_alpha/3*2);
lineStyle(1, my_line, my_alpha);
moveTo(-3, 10);
lineTo(0, 13);
lineTo(3, 10);
lineTo(2, -60);
lineTo(-2, -60);
lineTo(-3, 10);
endFill();
_x = _parent.zhongxin._x;
_y = _parent.zhongxin._y;
_height = radius*.65;
_width = _height*.15;
}
//绘制秒针
createEmptyMovieClip("miao", lv++);
with (miao) {
beginFill(my_color, my_alpha/2);
moveTo(-1.5, 15);
lineTo(1.5, 15);
lineTo(.5, -65);
lineTo(-.5, -65);
lineTo(-1.5, 15);
endFill();
//绘制秒针上的红星
beginFill(my_color, my_alpha);
moveTo(-2, -53);
lineTo(2, -53);
lineTo(2, -55);
lineTo(-2, -55);
lineTo(-2, -53);
endFill();
_x = _parent.zhongxin._x;
_y = _parent.zhongxin._y;
_height = radius*.7;
_width = _height*.05;
}
//绘制刻度
for (m=1; m<=12; m++) {
createEmptyMovieClip("kedu"+m, lv++);
with (this["kedu"+m]) {
//刻度为几边形的图案
var num:Number = 6;
//刻度的半径
var r:Number = radius*0.12;
var p:Number = 2*Math.PI/num;
var start_x:Array = new Array();
var start_y:Array = new Array();
for (i=0; i<num; i++) {
start_x[i] = Math.sin(p*i)*r;
start_y[i] = Math.cos(p*i)*r;
lineStyle(.5, my_color, my_alpha/1.5);
for (n=0; n<num; n++) {
moveTo(start_x[i], start_y[i]);
lineTo(start_x[n], start_y[n]);
}
}
}
}
//中心点调到最前面
zhongxin.swapDepths(lv+1000);
onEnterFrame = function () {
now_date = new Date();
zhongxin._rotation = now_date.getSeconds()*12;
miao._rotation = now_date.getSeconds()*6;
fen._rotation = now_date.getMinutes()*6;
// +now_date.getSeconds()*.1;
shi._rotation = now_date.getHours()*30+now_date.getMinutes()*.5;
// 当前时间数组,依次为:年,月,日,周,时,分,秒。
var now = new Array(now_date.getFullYear(), now_date.getMonth()+1, now_date.getDate(), now_date.getDay(), now_date.getHours(), now_date.getMinutes(), now_date.getSeconds());
var xingqi = new Array("日", "一", "二", "三", "四", "五", "六");
var riqi = now[0]+"年"+now[1]+"月"+now[2]+"日"+" "+"星期"+xingqi[now[3]];
var shijian = now[4]+"点"+now[5]+"分"+now[6]+"秒 ";
var now_time:String;
switch (Math.floor(now[4]/4)) {
case 0 :
now_time = riqi+" "+"凌晨"+" "+shijian;
break;
case 1 :
now_time = riqi+" "+"早上"+" "+shijian;
break;
case 2 :
now_time = riqi+" "+"上午"+" "+shijian;
break;
case 3 :
now_time = riqi+" "+"中午"+" "+shijian;
break;
case 4 :
now_time = riqi+" "+"下午"+" "+shijian;
break;
case 5 :
now_time = riqi+" "+"晚上"+" "+shijian;
break;
}
p = 2*Math.PI/now_time.length;
for (i=0; i<=now_time.length; i++) {
// 逐个给动态文本赋值
this["time"+i].text = now_time.charAt(i);
// 引用函数text_CSS,设定动态文本样式
text_CSS(this["time"+i]);
var mc = this["time"+i];
mc._y += ((Math.cos(n+p*i)*radius+zhongxin._y-radius*0.1)-mc._y)/speed;
mc._x += ((Math.sin(n+p*i)*radius+zhongxin._x-radius*0.1)-mc._x)/speed;
// mc._yscale = mc._xscale=(mc._y-bb._y)/2+100;
mc.swapDepths(lv+mc._y-zhongxin._y);
}
// 转动速度
n -= .02;
// 时针.分针.秒针,全部跟随中心点,中心点随鼠标
shi._x = fen._x=miao._x=zhongxin._x += (_xmouse+radius*1.2-zhongxin._x)/speed;
shi._y = fen._y=miao._y=zhongxin._y += (_ymouse+radius*1.2-zhongxin._y)/speed;
// 标志也跟随中心点
biaozi._x += (zhongxin._x-biaozi._x)/speed-biaozi._width/10;
biaozi._y += (zhongxin._y+radius*0.3-biaozi._y)/speed;
// 布置刻度
p = 2*Math.PI/12;
for (i=1; i<=12; i++) {
this["kedu"+i]._y += ((Math.cos(p*i)*radius*.75+zhongxin._y)-this["kedu"+i]._y)/speed;
this["kedu"+i]._x += ((Math.sin(p*i)*radius*.75+zhongxin._x)-this["kedu"+i]._x)/speed;
}
updateAfterEvent();
};
源文件下载:watch.rar
Flash AS实现时钟效果(全脚本实现)的更多相关文章
- 编写 Bash 补全脚本
编写 Bash 补全脚本 对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. B ...
- transform实现的时钟效果
又来一个时钟效果了,这个的实现不需要canvas,都是div.ul.li画出的,好玩有真实. 哈哈~ 需要的js才能实现到走动这个效果,但js的内容不多,也不难. 主要是一个css里transform ...
- Adobe Edge Animate –地球自转动画的实现,类似flash遮罩层的效果
Adobe Edge Animate –地球自转动画的实现,类似flash遮罩层的效果 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 目前Edge的功能尚 ...
- 原生javascript实现网页显示日期时钟效果
刚接触javascript中Date内置对象时,以为这些方法都太简单了,结果要自己实际操作写一个时钟效果还真一时把我难住了,主要有几点大家要注意的.先看实际效果 要实现这样的效果 某年某月某日星期几几 ...
- 史上最简单的js+css3实现时钟效果
今天我看到百度搜索的时间那个效果不错,于是就产生了模仿一下的效果,不过为了节省时间,就随便布了下局,废话不多说,先看看效果吧,顺便把百度的效果也拿过来. 对比样子差了好多啊,但是基本功能都是实现了的, ...
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...
- 转 CSS3+js实现多彩炫酷旋转圆环时钟效果
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 启用Flash Player 11.3的全屏键盘输入注意事项
启用Flash Player 11.3的全屏键盘输入,注意以下事项: 1. HTML代码<param name=”allowFullScreenInteractive” value=”true” ...
- 【Flash 插件】时钟类插件
1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...
随机推荐
- 设计模型MVC和JavaBean
六.设计模型1和设计模型2(MVC)1.模型1:JSP+JavaBean2.模型2:MVC M:Model模型 JavaBean V:视图 JSP C:控制器 Servlet 七.模型1开发一个简单的 ...
- codingNet项目的创建
首先,在codingNet上面创建一个项目(一般情况下) 然后,在本地打开项目并添加到储存库 其次,提交代码到已经创建好的项目中(注意赋值远程存储库的路径)
- Process 执行shell 脚本
概述: Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态以及销毁(杀掉 ...
- 【转】简易smtp调用类
用PHP发邮件的一个类,无需验证SMTP主机,类代码你可以不用管,只要按照后面的使用方法操作就行,这个类要先保存成一个php文件,文件名就叫smtp.php吧,下面是该文件代码: <?php c ...
- 手拼SQL小技巧,WHERE 1=1
由于项目要求,要手动拼接SQL,(不知道领导们怎么想的--),然后就再次回到原始时代,append(SQL). 但后面查询牵扯到动态多条件,如果是mybatis的话就直接 可以用<if>标 ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- CMM能力成熟度模型
CMM把软件企业的过程管理能力划分为5个等级: 1 .初始级:个别的.混乱无序的过程,软件缺乏定义,项目的成功严重依赖于某几个关键人员的努力.软件质量由个人的开发经验来保障. 2.可重复级 实施了基 ...
- 关于java8 interface的default方法
转自鸟窝 博主写的挺详细,不了解的看一看啊 以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题. 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implem ...
- [Java基础]java中this和super
一.this关键字 1.this概念 (参考:http://www.cnblogs.com/xdp-gacl/p/3636071.html) this是一个引用,它指向自身的这个对象,它的内存分析 ...
- Android APK 签名 (转发)
Cordova 3.5 为 Android APK 签名,生成可发布的 APK 程序文件 任侠 2014-06-07 00:04 移动开发 抢沙发 16,288 views 目录 [隐藏] ...