| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-     <!-- 必须强制指定页面编码为 UTF-8 -->
 
-     <meta charset="utf-8">
 
-     <!-- Demo 的简要说明,必须要填写 -->
 
-     <meta name="description" content="使用 Kity 绘制的仿真时钟">
 
-     
 
-     <!-- Demo 的作者,建议填写 -->
 
-     <meta name="author" content="kity@baidu.com">
 
-     
 
-     <!-- Demo 的标题,必须填写 -->
 
-     <title>Kity Clock</title>
 
-     
 
-     <!-- Demo 开发过程中使用 CMD 引入 Kity 源码,方便调试 -->
 
-     <!-- dev start -->
 
-     <!-- 目录型的 Demo 注意修正源码引用路径 -->
 
-     <script src="../dev-lib/sea.js"></script>
 
-     <script>
 
-         // 设置好 kity 源代码目录
 
-         seajs.config( { base: '../src'} );
 
-         // 定义 Demo 模块
 
-         define('demo', function(require) { require('kity'); });
 
-     </script>
 
-     <script>
 
-         // 启动 Demo 模块
 
-         seajs.use('demo');
 
-     </script>
 
-     <!-- dev end -->
 
-     <!-- 生产使用中可以直接引用发布压缩的版本 -->
 
-     <!-- production start -->
 
-     <!-- 目录型的 Demo 注意修正源码引用路径 -->
 
-     <!-- <script src="../dist/kity.min.js"></script> -->
 
-     <!-- production end -->
 
-     <style>
 
-         body, div, html {
 
-             margin: 0;
 
-             padding: 0;
 
-             overflow: hidden;
 
-         }
 
-     </style>
 
- </head>
 
- <body>
 
-     <div id="clock" style="width: 100%; height: 100%; position: absolute;"></div>
 
- </body>
 
- <script>
 
-     // 绘图画布
 
-     var paper = new kity.Paper('clock').pipe(function() {
 
-         this.setWidth('100%').setHeight('100%');
 
-         this.setViewBox(-600, -600, 1200, 1200);
 
-     });
 
-     // 调色板
 
-     var palette = new kity.Palette().pipe(function() {
 
-         var gray = new kity.Color('gray');
 
-         this.add('outside', gray.dec('l', 20));
 
-         this.add('inside', gray.inc('l', 20));
 
-         this.add('big-ruler', gray.dec('l', 40));
 
-         this.add('small-ruler', gray.dec('l', 20));
 
-         this.add('h-pointer', gray.dec('l', 50));
 
-         this.add('m-pointer', gray.dec('l', 20));
 
-         this.add('s-pointer', new kity.Color('hsl(0, 75, 50)'));
 
-         this.add('frame-light', new kity.Color('white').dec('l', 5));
 
-         this.add('frame-dark', gray.dec('l', 10));
 
-     });
 
-     // 框架
 
-     paper.addShape(new kity.Circle(500).pipe(function(){
 
-         this.fill(new kity.LinearGradientBrush().pipe(function() {
 
-             this.addStop(0, palette.get('frame-dark'));
 
-             this.addStop(0.4, palette.get('frame-light'));
 
-             this.addStop(0.6, palette.get('frame-light'));
 
-             this.addStop(1, palette.get('frame-dark'));
 
-             paper.addResource(this);
 
-         }));
 
-         this.stroke( palette.get('outside') );
 
-         this.rotate(30);
 
-     }));
 
-     // 背景
 
-     paper.addShape(new kity.Circle(465).pipe(function(){
 
-         this.fill(new kity.LinearGradientBrush().pipe(function() {
 
-             this.addStop(0, palette.get('frame-light'));
 
-             this.addStop(0.4, palette.get('frame-dark'));
 
-             this.addStop(0.6, palette.get('frame-dark'));
 
-             this.addStop(1, palette.get('frame-light'));
 
-             paper.addResource(this);
 
-         }));
 
-         this.rotate(30);
 
-     }));
 
-     // 表盘
 
-     paper.addShape(new kity.Circle(450).pipe(function() {
 
-         this.stroke(palette.get('inside'), 8);
 
-         this.fill(new kity.RadialGradientBrush().pipe(function(brush){
 
-             paper.addResource(brush);
 
-             brush.setFocal(0.8, 0.2);
 
-             brush.setRadius(0.6);
 
-             brush.addStop(0, new kity.Color('white'));
 
-             brush.addStop(1, new kity.Color('hsl(0, 0, 80)'));
 
-         }));
 
-     }));
 
-     // 刻度
 
-     paper.addShape(new kity.Group().pipe(function() {
 
-         var minutes = 60, stepDeg = 360 / minutes;
 
-         var deg = 90, distance = 390, step = 0;
 
-         while(step < minutes) {
 
-             var rect;
 
-             if(!(step % 5)) {
 
-                 rect = new kity.Rect(50, 10, 390, -5).fill(palette.get('big-ruler'));
 
-             } else {
 
-                 rect = new kity.Rect(25, 6, 410, -3).fill(palette.get('small-ruler'));
 
-             }
 
-             this.addShape(rect.rotate(deg));
 
-             deg += stepDeg;
 
-             step ++;
 
-         }
 
-     }));
 
-     // hello kity
 
-     paper.addShape(new kity.Text().pipe(function() {
 
-         this.addSpan(new kity.TextSpan('Hello ').fill(new kity.Color('blue').set('s', 40)));
 
-         this.addSpan(new kity.TextSpan(' Kity').fill(new kity.Color('red').set('s', 40)));
 
-         this.setPath(new kity.Path().pipe(function() {
 
-             var radius = 280;
 
-             var start = kity.Point.fromPolar(radius, -120), end = kity.Point.fromPolar(radius, -60);
 
-             var d = this.getDrawer();
 
-             d.moveTo(start.x, start.y).carcTo(radius, 0, 1, end.x, end.y);
 
-             paper.addResource(this);
 
-         }));
 
-         this.setSize(50);
 
-         this.setStartOffset(50);
 
-     }));
 
-     // 指针类
 
-     var Pointer = kity.createClass('Pointer', {
 
-         base: kity.Path,
 
-         constructor: function( headWidth, tailWidth, length, offset, color ) {
 
-             this.callBase();
 
-             this.draw( headWidth, tailWidth, length, offset );
 
-             this.fill( color );
 
-         },
 
-         draw: function( headWidth, tailWidth, length, offset ) {                    
 
-             var d = this.getDrawer(),
 
-                 x1 = -offset,         y1 = -headWidth / 2, 
 
-                 x2 = length - offset, y2 = -tailWidth / 2;
 
-             d.moveTo( x1,  y1 );
 
-             d.lineTo( x2,  y2 );
 
-             d.lineTo( x2, -y2 );
 
-             d.lineTo( x1, -y1 );
 
-             d.close();
 
-         }
 
-     })
 
-     var hPointer, mPointer, sPointer, pointers;
 
-     hPointer = new Pointer( 30, 15, 300, 50, palette.get('h-pointer') );
 
-     mPointer = new Pointer( 20, 10, 400, 80, palette.get('m-pointer') );
 
-     sPointer = new Pointer( 10, 5, 450, 90, palette.get('s-pointer') );
 
-     pointers = new kity.Group().pipe(function(){
 
-         this.rotate(-90);
 
-         this.addShape(hPointer);
 
-         this.addShape(mPointer);
 
-         this.addShape(sPointer); 
 
-     });
 
-     var msPointer = new Pointer( 10, 2, 80, 0, new kity.Color('gray'));
 
-     var msMeter = new kity.Group().pipe(function() {
 
-         this.addShape(new kity.Circle(90).pipe(function() {
 
-             this.stroke(palette.get('inside'), 5);
 
-         }));
 
-         this.addShape(msPointer);
 
-         this.addShape(new kity.Circle(8).fill(new kity.Color('gray')));
 
-         this.rotate(-90);
 
-         this.translate(0, 250);
 
-     });
 
-     var mmPointer = new Pointer( 4, 1, 40, 0, new kity.Color('gray'));
 
-     var mmMeter = new kity.Group().pipe(function() {
 
-         this.addShape(new kity.Circle(50).pipe(function() {
 
-             this.stroke(palette.get('inside'), 3);
 
-         }));
 
-         this.addShape(mmPointer);
 
-         this.addShape(new kity.Circle(6).fill(new kity.Color('gray')));
 
-         this.rotate(90);
 
-         var pos = kity.Point.fromPolar(250, 50);
 
-         this.translate(pos.x, pos.y);
 
-     });
 
-     paper.addShape(msMeter);
 
-     paper.addShape(mmMeter);
 
-     paper.addShape(pointers);
 
-     function updatePointers(frame) {
 
-         var time = new Date(), 
 
-             h = time.getHours(), 
 
-             m = time.getMinutes(), 
 
-             s = time.getSeconds(),
 
-             ms = time % 1000,
 
-             mm = time % 500;
 
-         m += s / 60;
 
-         h += m / 60;
 
-         sPointer.setRotate(s * 6);
 
-         mPointer.setRotate(m * 6);
 
-         hPointer.setRotate(h * 30);
 
-         msPointer.setRotate(ms * 360 / 1000);
 
-         mmPointer.setRotate(mm * 360 / 500);
 
-         frame.next();
 
-     }
 
-     kity.requestFrame(updatePointers);
 
- </script>
 
- </html>
 
 
  |