最近工作中用到个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实现时钟效果(全脚本实现)的更多相关文章

  1. 编写 Bash 补全脚本

    编写 Bash 补全脚本   对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. B ...

  2. transform实现的时钟效果

    又来一个时钟效果了,这个的实现不需要canvas,都是div.ul.li画出的,好玩有真实. 哈哈~ 需要的js才能实现到走动这个效果,但js的内容不多,也不难. 主要是一个css里transform ...

  3. Adobe Edge Animate –地球自转动画的实现,类似flash遮罩层的效果

    Adobe Edge Animate –地球自转动画的实现,类似flash遮罩层的效果 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 目前Edge的功能尚 ...

  4. 原生javascript实现网页显示日期时钟效果

    刚接触javascript中Date内置对象时,以为这些方法都太简单了,结果要自己实际操作写一个时钟效果还真一时把我难住了,主要有几点大家要注意的.先看实际效果 要实现这样的效果 某年某月某日星期几几 ...

  5. 史上最简单的js+css3实现时钟效果

    今天我看到百度搜索的时间那个效果不错,于是就产生了模仿一下的效果,不过为了节省时间,就随便布了下局,废话不多说,先看看效果吧,顺便把百度的效果也拿过来. 对比样子差了好多啊,但是基本功能都是实现了的, ...

  6. GDI绘制时钟效果,与系统时间保持同步,基于Winform

    2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...

  7. 转 CSS3+js实现多彩炫酷旋转圆环时钟效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 启用Flash Player 11.3的全屏键盘输入注意事项

    启用Flash Player 11.3的全屏键盘输入,注意以下事项: 1. HTML代码<param name=”allowFullScreenInteractive” value=”true” ...

  9. 【Flash 插件】时钟类插件

    1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...

随机推荐

  1. 安装完ODAC,出现ORA-12560:TNS:协议适配器错误 12541 无监听程序的解决

    进入系统环境变量设置,查看Path路径,发现D:\oracle\product\11.2.0\client_1等路径放到了oracle11g数据库路径前面,将新加入的路径置后即可解决ORA-12560 ...

  2. java线程池初步理解

    多线程基础准备 进程:程序的执行过程,持有资源和线程 线程:是系统中最小的执行单元,同一个进程可以有多个线程,线程共享进程资源 线程交互(同步synchronized):包括互斥和协作,互斥通过对象锁 ...

  3. 三道关于Taylor级数的题目,证明你爹是你爹

    =============幂级数的唯一性==================

  4. Centos 6.X基本维护操作

    设置163源,全新最小化安装时,更改源需先yum install wget mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-B ...

  5. 自适应布局webkit-box的用法

    Flexible Box Model(灵活盒子模型)在平常的web横排布局中,会经常用到float或display:inline-block,但是在多种不同宽度的移动设备的自适应布局中用的话,还得设置 ...

  6. Azure Service Bus 中的身份验证方式 Shared Access Signature

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  7. Java线程同步

    package a.thread; public class A { private static int x = 0; public void run() { // 同步代码块 synchroniz ...

  8. 总有一项适合你:联想 Miix2 8寸版触摸屏失灵的各项解决方案

    今天试着自己拆开后盖重新拆了一下排线,果然这个方法才是王道.在搜索攻略的时候看到了下面的帖子,觉得总结的不错,特此转载过来:     白色石头 2015-05-22 10:07● 使用评测   总有一 ...

  9. testng xml中按顺序执行java类

    如红字部份,将安顺序执行4个类 <?xml version="1.0" encoding="UTF-8"?><suite name=" ...

  10. CCNA第四章第五章Cisco的IOS与SDM及其管理考试要点学习笔记

    1. IOS的用户界面        Cisco互联网操作系统(IOS)是思科路由器和大多数交换机的核心,它是一个可以提供路由,交换,网络互联以及远程通信功能的专有内核. Cisco路由器的IOS软件 ...