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文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...
随机推荐
- C#窗口应用如何居中
在form的属性设置里面有一个初始位置的设置(startposion)设置成centerscreen(屏幕居中即可)
- extjs6环境
安装JDK http://www.oracle.com/technetwork/java/javase/downloads/ 安装到指定路径,例如D:\Java配置环境变量 此电脑—属性—高级系统设置 ...
- spring的beans.xml中classpath
classpath就是代表 /WEB-INF /classes/ 这个路径(如果不理解该路径,就把一个web工程发布为war包,然后用winrar查看其包内路径就理解啦) 常用的场景: 在SSH架构中 ...
- http协议性能相关的技术要点
1.http协议介绍 HTTP是一种请求/响应式的协议,基于TCP协议来进行数据传输. HTTPS是HTTP协议和安全套借口层(SSL)的结合,即安全增强版的HTTP. HTTP请求由三部分组成:请求 ...
- UDP 一个封锁操作被对 WSACancelBlockingCall 的调用中断
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using S ...
- Thread and ThreadPool
C#中Thread与ThreadPool的比较 Thread类,一次使用一个线程,来创建和删除线程.这种方式建立和删除线程是很昂贵的(cpu密集型). Threadpool类 对于大多数的情况下是使用 ...
- 简单的比大小 shell 脚本和ping
#!/bin/bash echo "输入第一个数字"read Aecho "输入第二个数字"read B if [ $A -gt $B ] thenecho & ...
- uva 11806 Cheerleaders
// uva 11806 Cheerleaders // // 题目大意: // // 给你n * m的矩形格子,要求放k个相同的石子,使得矩形的第一行 // 第一列,最后一行,最后一列都必须有石子. ...
- HDU 1010 Tempter of the Bone
题意:从开始位置走到结束位置,恰好走 t 步 YES 否则 NO 搜索题,由于是恰好走到,所以用到了奇偶剪枝 什么是奇偶剪枝,我也是刚知道 所给步数为 t ,起始位置坐标 (begin_x,begin ...
- Python学习之路—Day1
第1章 Python语言简介 1.1 Python是什么 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn)是什么呢?简单的说,它是一种计算机编程语言及一组配套的软件工具和库. ...