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文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...
随机推荐
- 《第一本docker书》- 第一章笔记
环境: Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic i686) 第一章: 1 Docker客户端和服务器 2 Docker镜像 添加一个文件,执行一 ...
- C# 模拟上传图片
上传图片的格式一定要按规定的写,不然没办法正确上传的. 我在上传的时候就是值前面没有空一行,导致上传不成功,很纠结的错误. 我要模拟的是一个FLASH的上传控件,我开始用HttpAnalyze抓包是抓 ...
- LeetCode(124) Binary Tree Maximum Path Sum
题目 Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequen ...
- layout优化实践
昨天确定了启动时,inflate耗时太多,当时不知道怎么回事,去Trinea的博客一逛,发现原来是需要进行layout优化,跟着他们的步伐,做了下面的修改. 1.据说在lint前是一款layout工具 ...
- div 指令
div 指令 div 是除法指令,后面跟的是除数,被除数默认在 ax, 或者 dx.ax 组成的存储单元中. 除数可以有 8 位和 16 位两种,存储于一个 reg 或内存单元中,也就是说不可以 di ...
- hdu 1181(DFS)变 形 课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- comet4j
简介 准备工作 下载服务端jar文件 下载客户端js文件 修改服务器配置文件 在web.xml中加载Comet4J框架 客户端使用简介 JS.Engine.start方法 JS.Engine.stop ...
- 手拼SQL小技巧,WHERE 1=1
由于项目要求,要手动拼接SQL,(不知道领导们怎么想的--),然后就再次回到原始时代,append(SQL). 但后面查询牵扯到动态多条件,如果是mybatis的话就直接 可以用<if>标 ...
- [fortify] 不安全的函数eregi()
PHP 5.4/5.3弃用函数eregi() memory_limit绕过漏洞 [日期:2012-04-02] 来源:Linux社区 作者:Linux [字体:大 中 小] 发布日期:2012- ...
- Python 学习---------Day4
第十章 Python语句简介Python的代码书写要求,以及换行等语句可以扩越多行,只要将其封闭在圆括号内,方括号内或大括号内即可,可以使用分号终止.用\可以允许我们跨越多行一个简单的交互式循环whi ...