zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Leetcode 238. Product of Array Except Self
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 290. Word Pattern
    Leetcode 205. Isomorphic Strings
    Leetcode 107. Binary Tree Level Order Traversal II
    Leetcode 102. Binary Tree Level Order Traversal
    三目运算符
    简单判断案例— 分支结构的应用
    用switch判断月份的练习
    java基本打印练习《我行我素购物系统》
  • 原文地址:https://www.cnblogs.com/2hill/p/3149107.html
Copyright © 2011-2022 走看看