重力感应的自制时钟

  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title>智能社--http://www.zhinengshe.com</title>
  6     <style>
  7         *{
  8             margin: 0;
  9             padding: 0;
 10             list-style: none;
 11         }
 12         .clock{
 13             width:300px;
 14             height:300px;
 15             background: -webkit-radial-gradient(center center,circle, #eee,#666);
 16             /*background: url(tick.png) no-repeat;*/
 17             background-size: cover;
 18             border-radius: 50%;
 19             position: absolute;
 20             left: 100px;
 21             top: 100px;
 22             border: 1px solid #000;
 23             box-shadow: 0px 0px 4px #000;
 24         }
 25         .cap{
 26             width: 20px;
 27             height: 20px;
 28             background: -webkit-radial-gradient(center center,circle,#ccc,#000);
 29             position: absolute;
 30             left: 50%;
 31             top: 50%;
 32             margin-top: -10px;
 33             margin-left: -10px;
 34             border-radius: 50%;
 35         }
 36         .hour{
 37             width:14px;
 38             height:80px;
 39             background: #000;
 40             position: absolute;
 41             left: 50%;
 42             margin-left: -7px;
 43             top: 50%;
 44             margin-top: -80px;
 45             border-radius: 50% 50% 0 0;
 46
 47             transform-origin: center bottom;
 48
 49
 50         }
 51         .min{
 52             width:10px;
 53             height:100px;
 54             background: #000;
 55
 56             position: absolute;
 57             left: 50%;
 58             margin-left: -5px;
 59             top: 50%;
 60             margin-top: -100px;
 61             border-radius: 50% 50% 0 0;
 62
 63             transform-origin: center bottom;
 64
 65         }
 66         .sec{
 67             width:4px;
 68             height:120px;
 69             background: #f00;
 70
 71             position: absolute;
 72             left: 50%;
 73             margin-left: -2px;
 74             top: 50%;
 75             margin-top: -120px;
 76             border-radius: 50% 50% 0 0;
 77
 78             transform-origin: center bottom;
 79         }
 80         .scale{
 81             width:2px;
 82             height:10px;
 83             background: #000;
 84             position: absolute;
 85             left: 50%;
 86             margin-left: -1px;
 87             transform-origin: center 150px;
 88         }
 89         .bs{
 90             width:4px;
 91             height:14px;
 92             background: #000;
 93             position: absolute;
 94             left: 50%;
 95             margin-left: -2px;
 96             transform-origin: center 150px;
 97         }
 98         .bs strong{
 99             margin-top: 20px;
100             position: absolute;
101             font-size: 24px;
102             width:100px;
103             text-align: center;
104             left: 50%;
105             margin-left: -50px;
106             text-shadow: 1px 1px 3px #000;
107         }
108     </style>
109     <script>
110         window.onload=function(){
111             var oDiv=document.querySelector(‘.clock‘);
112
113             var oH=document.querySelector(‘.clock .hour‘);
114             var oM=document.querySelector(‘.clock .min‘);
115             var oS=document.querySelector(‘.clock .sec‘);
116
117             //画刻度
118             var N=60;
119             for(var i=0; i<N; i++){
120                 var oSpan=document.createElement(‘span‘);
121
122                 if(i%5==0){
123                     oSpan.className=‘bs‘;
124
125                     var n=i/5==0?12:i/5;
126
127                     oSpan.innerHTML=‘<strong>‘+n+‘</strong>‘;
128                     oSpan.children[0].style.transform=‘rotate(‘+-i*6+‘deg)‘;
129                 }else{
130                     oSpan.className=‘scale‘;
131                 }
132
133                 oSpan.style.transform=‘rotate(‘+6*i+‘deg)‘;
134                 oDiv.appendChild(oSpan);
135             }
136
137             function tick(){
138                 var oDate=new Date();
139                 var h=oDate.getHours();
140                 var m=oDate.getMinutes();
141                 var s=oDate.getSeconds();
142                 var ms=oDate.getMilliseconds();
143
144                 oH.style.transform=‘rotate(‘+(h*30+m/60*30)+‘deg)‘;
145                 oM.style.transform=‘rotate(‘+(m*6+s/60*6)+‘deg)‘;
146                 oS.style.transform=‘rotate(‘+(s*6+ms/1000*6)+‘deg)‘;
147             }
148             tick();
149             setInterval(tick,30);
150
151             //以下拖拽
152             var iSpeedX=0;
153             var iSpeedY=0;
154
155             var lastX=0;
156             var lastY=0;
157
158             var timer=null;
159
160             oDiv.onmousedown=function(ev){
161                 var oEvent=ev || event;
162                 var disX=oEvent.clientX-oDiv.offsetLeft;
163                 var disY=oEvent.clientY-oDiv.offsetTop;
164
165                 clearInterval(timer);
166
167                 document.onmousemove=function(ev){
168                     var oEvent=ev || event;
169                     oDiv.style.left=oEvent.clientX-disX+‘px‘;
170                     oDiv.style.top=oEvent.clientY-disY+‘px‘;
171
172                     //计算速度
173                     iSpeedX=oEvent.clientX-lastX;
174                     iSpeedY=oEvent.clientY-lastY;
175
176                     lastX=oEvent.clientX;
177                     lastY=oEvent.clientY;
178                 };
179
180                 document.onmouseup=function(){
181                     document.onmousemove=null;
182                     document.onmouseup=null;
183
184                     duangMove();
185                 };
186                 return false;
187             };
188
189             function duangMove(){
190                 timer=setInterval(function(){
191                     iSpeedY+=3;
192
193                     var l=oDiv.offsetLeft+iSpeedX;
194                     var t=oDiv.offsetTop+iSpeedY;
195
196                     if(t>=document.documentElement.clientHeight-oDiv.offsetHeight){
197                         t=document.documentElement.clientHeight-oDiv.offsetHeight;
198                         iSpeedY*=-0.8;
199                         iSpeedX*=0.8;
200                     }
201                     if(t<=0){
202                         t=0;
203                         iSpeedY*=-0.8;
204                         iSpeedX*=0.8;
205                     }
206                     if(l>=document.documentElement.clientWidth-oDiv.offsetWidth){
207                         l=document.documentElement.clientWidth-oDiv.offsetWidth;
208                         iSpeedX*=-0.8;
209                         iSpeedY*=0.8;
210                     }
211                     if(l<=0){
212                         l=0;
213                         iSpeedX*=-0.8;
214                         iSpeedY*=0.8;
215                     }
216
217                     oDiv.style.left=l+‘px‘;
218                     oDiv.style.top=t+‘px‘;
219
220                     if(Math.abs(iSpeedX)<1)iSpeedX=0;
221                     if(Math.abs(iSpeedY)<1)iSpeedY=0;
222
223                     if(iSpeedX==0 && iSpeedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight){
224                         clearInterval(timer);
225                     }
226                 },30);
227             }
228         };
229     </script>
230 </head>
231 <body>
232     <div class="clock">
233         <div class="hour"></div>
234         <div class="min"></div>
235         <div class="sec"></div>
236         <div class="cap"></div>
237     </div>
238 </body>
239 </html>
时间: 2024-09-27 23:40:47

重力感应的自制时钟的相关文章

重力感应游戏可行性办法研究_完结

重力感应游戏可行性办法研究 一.手机中的重力感应组件 很多人都知道手机有重力感应这个功能,但是重力感应具体是什么,却并不是很了解.重力感应组件不是摄像头,人们知道有多少万像素,不是触摸屏,人们了解是电容屏还是电阻屏,重力感应就像笼罩着迷雾的山谷,让人难以一探究竟.下文将对重力感应组件进行详细描述. 组件1:加速计 要了解加速计,首先得了解加速计是什么.实质上加速计就是用来检测手机受到的加速度的大小和方向的电子元件,而手机静置的时候是只受到重力加速度的 .所以很多人把加速计功能又叫做重力感应功能.

进阶一之Android重力感应(一)

书山有路勤为径,学海无涯苦作舟. 本讲内容:Android重力感应 下面是三轴方向 android重力感应系统的坐标系以屏幕的左下方为原点([注意]2d编程的时候,是以屏幕左上方为原点的),箭头指向的方向为正.从-10到10,以浮点数为等级单位,想象一下以下情形: 手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10); 手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10); 手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(1

进阶二之Android重力感应(二)

路途再远也要一步步的走不止为了生存而是对其的热爱 本讲内容:Android重力感应 一.SensorMannager传感器管理对象 1.取得SensorMannager 手机中的所有传感器都须要通过SensorMannager来访问,调用getSystemService(SENSOR_SERVICE)方法就可以拿到当前手机的传感器管理对象. sm = (SensorManager) getSystemService(SENSOR_SERVICE); 2.取得Sensor目标各类的值(getSen

coocs2d-html5在使用cocoseditor时调用设备的accelerometer来使用重力感应

在使用大牛touchsnow开发的插件cocoseditor开发游戏时遇到了一些问题,然后就试着解决,最近想试下coocs2d-html5能否使用重力感应,发现是可以的,不过这个只能在移动真机上测试,电脑上的模拟器是不行的, 首先需要在onDidloadFromCCB()方法内设置可以使用Accelerometer: this.rootNode.onAccelerometer = function (event) { this.controller.onAccelerometer(event);

cocos2d-x 重力感应

本文没你想象的那么,,复杂.事实上就是通过重力感应控制个小球移动而已. 先看头文件: [cpp] view plaincopy #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" USING_NS_CC; class HelloWorld : public cocos2d::CCLayer { public: HelloWorld(void); ~HelloWorld(vo

Cocos2D-X2.2.3学习笔记9(处理重力感应事件,移植到Android加入两次返回退出游戏效果)

这节我们来学习Cocos2d-x的最后一节,怎样处理重力感应事件,移植到Android后加入再按一次返回键退出游戏等.我这里用的Android,IOS不会也没设备呃 效果图不好弄,由于是要移植到真机上的. #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" using namespace cocos2d; class HelloWorld : public cocos2d:

Unity之手机重力感应

做重力感应的朋友兴许能用上,我这里写上来用于有时候自己忘了还能看一下,因为我不认为学东西就能一辈子都记得很牢,所以有时候还是为自己行一下方便,给自己写博客,哈哈. 做Unity的重力感应游戏的时候,我们需要用到这样一个参数:Input.acceleration,这是一个Vectors3类型的一个Input的属性,它里面有三个参数分别是x,y,z.接下来给我大家贴上我画的一张图,这样大家看起来就很明了喽: 哈哈,其它我就不多说了,看不懂的朋友,说明是基础还不够

【Android开发日记】初次探秘Android Service!Service开机启动+重力感应+弹窗+保持运行

前言: 最近在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Activity启动和销毁.满足了自己的需求.现记录学习心得.希望能给你带来一些帮助. 1.Service创建:重写4个方法 onBind():返回一个IBinder对象,这个对象可以使应用程序与Service通信.如果用startService.stopService启动和关闭Service的话,Service和访问者是无法通信交换数据的.onBind()返回值设

android小游戏模版—重力感应

好久没更新博客了,今天来谈谈android小游戏---重力感应,一般在游戏里运用的比较多,比如这类游戏有:神庙逃亡,极品飞车,平衡球,三围重力迷宫,重力赛车等. 首先什么是重力感应,重力感应是指现在手机中常用的一个器件,及加速度传感器.当手机静止时,加速度就是重力,所以一般也叫做重力传感器.这个硬件可以感应加速度的变化,转化为数据提供给系统.还有一种传感器是陀螺仪,检测围绕某轴的旋转动作,是利用有质量的刚体的在做旋转或震动时,如果发生垂直于旋转或震动轴的旋转,因为惯性会产生垂直于旋转或震动轴的柯