×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 6237|回复: 23

[AS] AS3 纯代码时钟

[复制链接]
发表于 2010-5-4 09:18:29 | 显示全部楼层 |阅读模式
本帖最后由 清风掠影 于 2010-5-4 09:59 编辑

AS3 纯代码时钟

文档类:
  1. package {
  2.     import flash.display.Bitmap;
  3.     import flash.display.BitmapData;
  4.     import flash.display.MovieClip;
  5.     import flash.display.Sprite;
  6.     import flash.events.Event;
  7.     import flash.text.TextField;
  8.     import flash.text.TextFormat;
  9.     import flash.text.TextFieldType;
  10.     import flash.text.FontType;
  11.     import flash.text.TextFormatAlign;

  12.     [SWF(width = "465", height = "465", backgroundColor = "0xffffff", frameRate = "30")]

  13.     public class NoisyClock extends Sprite {
  14.         private const STAGE_WIDTH:Number = stage.stageWidth;
  15.         private const STAGE_HEIGHT:Number = stage.stageHeight;
  16.         private const STAGE_CENTER_X:Number = stage.stageWidth / 2;
  17.         private const STAGE_CENTER_Y:Number = stage.stageHeight / 2;
  18.         private const RADIAN_TO_DEGREE:Number = 180 / Math.PI;
  19.         private const DEGREE_TO_RADIAN:Number = Math.PI / 180;
  20.         private var clockMC:MovieClip
  21.         private var second_hand:Sprite;
  22.         private var minute_hand:Sprite;
  23.         private var hour_hand:Sprite;
  24.         private var center_pin:Sprite;
  25.         private var frame:Sprite;
  26.         private var frame_shadow:Sprite;
  27.         private var base_color:uint = 0x000000;
  28.         private var second_hand_shadow:Sprite;
  29.         private var minute_hand_shadow:Sprite;
  30.         private var hour_hand_shadow:Sprite;
  31.         private var center_pin_shadow:Sprite;
  32.         private var rSeconds:Number;
  33.         private var rMinutes:Number;
  34.         private var rHours:Number;
  35.         private var onmArray:Array = [];

  36.         public function NoisyClock() {
  37.             init();
  38.         }
  39.         private function init():void {
  40.             clock();
  41.             var now_date:Date = new Date();
  42.             second_hand.rotation = now_date.seconds * 6;
  43.             second_hand_shadow.rotation = now_date.seconds * 6;
  44.             rSeconds = now_date.seconds;
  45.             minute_hand.rotation = now_date.minutes * 6;
  46.             minute_hand_shadow.rotation = now_date.minutes * 6;
  47.             rMinutes = now_date.minutes;
  48.             hour_hand.rotation = now_date.hours * 30 + now_date.minutes/2;
  49.             hour_hand_shadow.rotation = now_date.hours * 30 + now_date.minutes / 2;
  50.             rHours = now_date.hours;
  51.             addEventListener(Event.ENTER_FRAME, main)
  52.         }
  53.         private function main(eventObject:Event):void {
  54.             var now_date:Date = new Date();
  55.             if ( rSeconds != now_date.seconds ) {
  56.                 second_hand.rotation = now_date.seconds * 6;
  57.                 second_hand_shadow.rotation = now_date.seconds * 6;
  58.                 rSeconds = now_date.seconds;
  59.                
  60.             }
  61.             if ( rSeconds == 1 && rMinutes == 0 && rHours != now_date.hours ) {
  62.                 clockMC.x = Math.cos( ( hour_hand.rotation + 90 ) * DEGREE_TO_RADIAN ) * 480 + STAGE_CENTER_X;
  63.                 clockMC.y = Math.sin( ( hour_hand.rotation + 90 ) * DEGREE_TO_RADIAN ) * 480 + STAGE_CENTER_Y;
  64.                 clockMC.scaleX = clockMC.scaleY = 2.8;
  65.             } else if ( rSeconds == 2 && rMinutes == 0 && rHours != now_date.hours ) {
  66.                 rHours = now_date.hours;
  67.                
  68.             } else if ( rSeconds > 58 ) {
  69.                 clockMC.x = Math.cos( ( minute_hand.rotation + 90 ) * DEGREE_TO_RADIAN ) * 280 + STAGE_CENTER_X;
  70.                 clockMC.y = Math.sin( ( minute_hand.rotation + 90 ) * DEGREE_TO_RADIAN ) * 280 + STAGE_CENTER_Y;
  71.                 clockMC.scaleX = clockMC.scaleY = 2.0;
  72.             } else if( rSeconds == 0 && rMinutes != now_date.minutes ) {
  73.                 minute_hand.rotation = now_date.minutes * 6;
  74.                 minute_hand_shadow.rotation = now_date.minutes * 6;
  75.                 hour_hand.rotation = now_date.hours * 30 + now_date.minutes/2;
  76.                 hour_hand_shadow.rotation = now_date.hours * 30 + now_date.minutes / 2;
  77.                 rMinutes = now_date.minutes;
  78.                
  79.             } else if( rSeconds > 2) {
  80.                 clockMC.x = STAGE_CENTER_X;
  81.                 clockMC.y = STAGE_CENTER_Y;
  82.                 clockMC.scaleX = clockMC.scaleY = 1.0;
  83.             }

  84.             var i:int = onmArray.length
  85.             while ( i--) {
  86.                 var t = onmArray[ i ]
  87.                 t.vy += 0.10;
  88.                 t.x += t.vx
  89.                 t.y += t.vy;
  90.                 t.rotation += t.rot;
  91.                 if ( t.y > STAGE_HEIGHT + 0 ) {
  92.                     onmArray.splice(i, 1);
  93.                     clockMC.removeChild( t );
  94.                 }
  95.                 if ( Math.sqrt(t.x * t.x + t.y * t.y ) > 185 && t.reactFlag == false ) {
  96.                     t.scaleX = t.scaleY *= 1.4;
  97.                     t.reactFlag = true;
  98.                     t.rot *= -1;
  99.                     t.vy *= -0.4;
  100.                 }
  101.             }
  102.         }
  103.       
  104.         private function clock():void {
  105.             var st:ScreenTone = new ScreenTone()

  106.             clockMC = new MovieClip();
  107.             addChild( clockMC );
  108.             clockMC.x = STAGE_CENTER_X;
  109.             clockMC.y = STAGE_CENTER_Y;

  110.             frame_shadow = new Sprite();
  111.             frame_shadow.graphics.beginBitmapFill( st.st1 );
  112.             frame_shadow.graphics.lineStyle( 1, 0xffffff );
  113.             frame_shadow.graphics.drawCircle( 0, 0, 220);
  114.             frame_shadow.graphics.drawCircle( 0, 0, 190);
  115.             frame_shadow.graphics.endFill();
  116.             frame_shadow.x = 8;
  117.             frame_shadow.y = 8;
  118.             clockMC.addChild( frame_shadow );

  119.             frame = new Sprite();
  120.             frame.graphics.beginFill( 0xffffff );
  121.             frame.graphics.lineStyle( 1, base_color );
  122.             frame.graphics.drawCircle( 0, 0, 220);
  123.             frame.graphics.drawCircle( 0, 0, 190);
  124.             frame.graphics.endFill();
  125.             frame.x = 0;
  126.             frame.y = 0;
  127.             clockMC.addChild( frame );
  128.             //文本
  129.             var tf:TextFormat = new TextFormat();
  130.             tf.size = 38;
  131.             tf.align = TextFormatAlign.CENTER;
  132.             tf.bold = true

  133.             var txtArray:Array = []

  134.             for ( var i:uint = 1; i < 13; i++ ) {
  135.                 var txt = new TextField();
  136.                 txt.width = 42;
  137.                 txt.height = 42;

  138.                 var radius:int = 160;
  139.                 var txtPos:Number = ( i * 30 + 180 ) * DEGREE_TO_RADIAN;
  140.                 txt.x = Math.cos( txtPos ) * 0 - Math.sin( txtPos ) * radius - txt.width / 2;
  141.                 txt.y = Math.cos( txtPos ) * radius + Math.sin( txtPos ) * 0 - txt.height / 2;

  142.                 txt.type = TextFieldType.DYNAMIC;
  143.                 txt.border = false;
  144.                 txt.background = false;

  145.                 txt.textColor = 0x666666;
  146.                 txt.defaultTextFormat = tf;

  147.                 txt.text = i;
  148.                 clockMC.addChild( txt );
  149.                 txtArray.push( txt );
  150.             }
  151.             //时针
  152.             hour_hand_shadow = new Sprite();
  153.             hour_hand_shadow.graphics.beginBitmapFill( st.st1 );
  154.             hour_hand_shadow.graphics.lineStyle( 1, 0xffffff );
  155.             hour_hand_shadow.graphics.drawRect( -4, 0, 8, -100 );
  156.             hour_hand_shadow.graphics.endFill();
  157.             hour_hand_shadow.x = 4;
  158.             hour_hand_shadow.y = 4;
  159.             clockMC.addChild( hour_hand_shadow );
  160.             //分针
  161.             minute_hand_shadow = new Sprite();
  162.             minute_hand_shadow.graphics.beginBitmapFill( st.st1 );
  163.             minute_hand_shadow.graphics.lineStyle( 1, 0xffffff );
  164.             minute_hand_shadow.graphics.drawRect( -2.5, 0, 5, -150 );
  165.             minute_hand_shadow.graphics.endFill();
  166.             minute_hand_shadow.x = 4;
  167.             minute_hand_shadow.y = 4;
  168.             clockMC.addChild( minute_hand_shadow );

  169.             hour_hand = new Sprite();
  170.             hour_hand.graphics.beginFill( 0x000000 );
  171.             hour_hand.graphics.lineStyle( 1, base_color );
  172.             hour_hand.graphics.drawRect( -4, 0, 8, -100 );
  173.             hour_hand.graphics.endFill();
  174.             hour_hand.x = 0;
  175.             hour_hand.y = 0;
  176.             clockMC.addChild( hour_hand );

  177.             minute_hand = new Sprite();
  178.             minute_hand.graphics.beginFill( 0x000000 );
  179.             minute_hand.graphics.lineStyle( 1, base_color );
  180.             minute_hand.graphics.drawRect( -2.5, 0, 5, -150 );
  181.             minute_hand.graphics.endFill();
  182.             minute_hand.x = 0;
  183.             minute_hand.y = 0;
  184.             clockMC.addChild( minute_hand );

  185.             second_hand_shadow = new Sprite();
  186.             second_hand_shadow.graphics.lineStyle( 4, base_color, 0.3 );
  187.             second_hand_shadow.graphics.moveTo( 0, 30 );
  188.             second_hand_shadow.graphics.lineTo( 0, -156 );
  189.             second_hand_shadow.x = 4;
  190.             second_hand_shadow.y = 4;
  191.             clockMC.addChild( second_hand_shadow );

  192.             second_hand = new Sprite();
  193.             second_hand.graphics.lineStyle( 2, 0xff0000 );
  194.             second_hand.graphics.moveTo( 0, 30 );
  195.             second_hand.graphics.lineTo( 0, -156 );
  196.             second_hand.x = 0;
  197.             second_hand.y = 0;
  198.             clockMC.addChild( second_hand );

  199.             center_pin_shadow = new Sprite();
  200.             center_pin_shadow.graphics.beginFill( 0x000000 );
  201.             center_pin_shadow.graphics.lineStyle( 1, 0xffffff );
  202.             center_pin_shadow.graphics.drawCircle( 0, 0, 8 );
  203.             center_pin_shadow.graphics.endFill();
  204.             center_pin_shadow.x = 4;
  205.             center_pin_shadow.y = 4;
  206.             center_pin_shadow.alpha = 0.3;
  207.             clockMC.addChild( center_pin_shadow );

  208.             center_pin = new Sprite();
  209.             center_pin.graphics.beginFill( 0xff0000 );
  210.             center_pin.graphics.lineStyle( 1, 0xff0000 );
  211.             center_pin.graphics.drawCircle( 0, 0, 8 );
  212.             center_pin.graphics.endFill();
  213.             center_pin.x = 0;
  214.             center_pin.y = 0;
  215.             clockMC.addChild( center_pin );
  216.         }
  217.     }
  218. }

  219. import flash.display.Sprite;
  220. import flash.display.BitmapData;
  221. class ScreenTone extends Sprite
  222. {
  223.     public var st0:BitmapData;
  224.     public var st1:BitmapData;
  225.     public var st2:BitmapData;
  226.     public function ScreenTone():void {
  227.         var base_color:uint = 0x000000;
  228.         st0 = new BitmapData( 4, 4, false, 0x00ffffff);
  229.         var ptn =
  230.             [[1, 0, 0, 0],
  231.             [0, 0, 0, 0],
  232.             [0, 0, 1, 0],
  233.             [0, 0, 0, 0]]
  234.         var bitmapW:int = ptn[0].length;
  235.         var bitmapH:int = ptn.length;
  236.         for (var yy:int = 0; yy < bitmapH; yy++) {
  237.             for (var xx:int = 0; xx < bitmapW; xx++) {
  238.                 if ( ptn[yy][xx] == 1 ) {
  239.                     st0.setPixel32( xx, yy, base_color );
  240.                 }
  241.             }
  242.         }
  243.         st1 = new BitmapData( 2, 2, false, 0x00ffffff);
  244.         ptn =
  245.             [[1, 0],
  246.             [0, 1]]
  247.         bitmapW = ptn[0].length;
  248.         bitmapH = ptn.length;
  249.         for (yy = 0; yy < bitmapH; yy++) {
  250.             for (xx = 0; xx < bitmapW; xx++) {
  251.                 if ( ptn[yy][xx] == 1 ) {
  252.                     st1.setPixel32( xx, yy, base_color );
  253.                 }
  254.             }
  255.         }
  256.         st2 = new BitmapData( 6, 6, false, 0x00ffffff);
  257.         ptn =
  258.             [[1, 0, 1, 0, 0, 0],
  259.             [0, 1, 0, 0, 0, 0],
  260.             [1, 0, 1, 0, 0, 0],
  261.             [0, 0, 0, 1, 0, 1],
  262.             [0, 0, 0, 0, 1, 0],
  263.             [0, 0, 0, 1, 0, 1]]
  264.         bitmapW = ptn[0].length;
  265.         bitmapH = ptn.length;
  266.         for (yy = 0; yy < bitmapH; yy++) {
  267.             for (xx = 0; xx < bitmapW; xx++) {
  268.                 if ( ptn[yy][xx] == 1 ) {
  269.                     st2.setPixel32( xx, yy, base_color );
  270.                 }
  271.             }
  272.         }
  273.     }
  274. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x

评分

参与人数 2金币 +8 热心度 +2 收起 理由
374704301 + 1 谢谢您,对我有帮助.
清风掠影 + 7 + 2 精品文章

查看全部评分

发表于 2010-5-5 16:17:18 | 显示全部楼层
酷素材
高手前辈……学生先保存再研究……如果把制作过程再详细一些就好了
回复 支持 反对

使用道具 举报

发表于 2010-5-6 14:58:46 | 显示全部楼层
其实想想纯代码制作就失去了flash的优势了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-6 18:31:22 | 显示全部楼层
其实想想纯代码制作就失去了flash的优势了!
bennehong 发表于 2010-5-6 14:58

Flash的优势是什么?
回复 支持 反对

使用道具 举报

发表于 2010-6-4 16:16:41 | 显示全部楼层
酷素材
个人感觉鼠绘和AS是我这样菜鸟最花时间琢磨研究的
回复 支持 反对

使用道具 举报

发表于 2010-6-6 00:05:36 | 显示全部楼层
酷素材
1# cao4811


这个AS脚本好像有问题啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-6 06:23:46 | 显示全部楼层
6# hbwh风云岁月
什么问题?
回复 支持 反对

使用道具 举报

发表于 2010-12-7 09:33:32 | 显示全部楼层
楼主,下载出来出现意外格式
回复 支持 反对

使用道具 举报

发表于 2011-2-28 11:20:02 | 显示全部楼层
{:1_181:}
回复 支持 反对

使用道具 举报

发表于 2011-3-4 15:09:46 | 显示全部楼层
我复制这个代码,测试时提示:1037: 包不能嵌套。
回复 支持 反对

使用道具 举报

发表于 2012-3-6 11:12:08 | 显示全部楼层
能够给个倒计时的时钟么?
回复 支持 反对

使用道具 举报

发表于 2012-6-25 17:09:14 | 显示全部楼层
语句提示无问题,播放时有问题:包不能嵌套。
回复 支持 反对

使用道具 举报

发表于 2012-7-15 20:44:04 | 显示全部楼层
来学习的!!!!
回复 支持 反对

使用道具 举报

发表于 2012-7-24 15:06:08 | 显示全部楼层
如何用法!?
回复 支持 反对

使用道具 举报

发表于 2017-12-27 19:52:08 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则