超级可爱纯js网页时钟

//oObj input requires that a matrix filter be applied.
//deg input defines the requested angle of rotation.
var deg2radians = Math.PI * 2 / 360;
function MatrixFilter(obj)
{
if(!obj.filters)return;
//alert(obj.filters.item(0));
var Matrix;
for(p in obj.filters)
{
if(p=="DXImageTransform.Microsoft.Matrix")Matrix=obj.filters["DXImageTransform.Microsoft.Matrix"];
}
if(!Matrix)
{
obj.style.filter+="progid:DXImageTransform.Microsoft.Matrix()";
}
Matrix=obj.filters["DXImageTransform.Microsoft.Matrix"];
this.equal=function(Matrix2D_x)
{
if(Matrix2D_x.M11)Matrix.M11 = Matrix2D_x.M11;
if(Matrix2D_x.M12)Matrix.M12 = Matrix2D_x.M12;
if(Matrix2D_x.M21)Matrix.M21 = Matrix2D_x.M21;
if(Matrix2D_x.M22)Matrix.M22 = Matrix2D_x.M22;
}

if(arguments[1])this.equal(arguments[1]);

this.Rotate=function(deg)
{
rad = deg * deg2radians;
costheta = Math.cos(rad);
sintheta = Math.sin(rad);
var d=new Matrix2D(costheta,-sintheta,sintheta,costheta);
this.equal(Matrix2D.Mul(Matrix,d));
}
this.RotateTo=function(deg)
{
rad = deg * deg2radians;
costheta = Math.cos(rad);
sintheta = Math.sin(rad);
var d=new Matrix2D(costheta,-sintheta,sintheta,costheta);
this.equal(d);
}
this.RotateAt=function(deg,sx,sy)
{
rad = deg * deg2radians;
costheta = Math.cos(rad);
sintheta = Math.sin(rad);
var d=new Matrix2D(costheta,-sintheta,sintheta,costheta);
var x=sx-Matrix.Dx;
var y=sy-Matrix.Dy;
this.MoveTo(x*costheta+y*sintheta-x,-x*sintheta+y*costheta-y);
this.equal(Matrix2D.Mul(Matrix,d));
}
this.RotateToAt=function(deg,sx,sy)
{
rad = deg * deg2radians;
costheta = Math.cos(rad);
sintheta = Math.sin(rad);
var d=new Matrix2D(costheta,-sintheta,sintheta,costheta);
var x=sx;
var y=sy;
this.MoveTo(x-(x*costheta-y*sintheta),-(x*sintheta+y*costheta-x));
this.equal(d);
}

this.MoveTo=function(sx,sy)
{
Matrix.Dx=sx;
Matrix.Dy=sy;
}
this.toMatrix2D=function()
{
return new Matrix2D(Matrix.M11,Matrix.M12,Matrix.M21,Matrix.M22);
}
this.ZoomBy=function(sx,sy)
{
var d=new Matrix2D(sx,0,0,sy);
this.equal(Matrix2D.Mul(Matrix,d));
}
this.toString=function()
{
return ""+Matrix.M11+" "+Matrix.M12+"\n"+Matrix.M21+" "+Matrix.M22+"\n"
}
//Matrix.SizingMethod='clip to original';
//this.fnSetRotation(30);
//alert(Matrix.M11);
//alert(obj.filters["DXImageTransform.Microsoft.Matrix"]);
}
function Matrix2D()
{
this.M11 = arguments[0]||1;
this.M12 = arguments[1]||0;
this.M21 = arguments[2]||0;
this.M22 = arguments[3]||1;
this.Mul_Matrix2D=function(Matrix2D_b)
{
var r=new Matrix2D();
r=Matrix2D.Mul(this,Matrix2D_b);
return r;
}
this.toString=function()
{
return ""+this.M11+" "+this.M12+"\n"+this.M21+" "+this.M22+"\n"
}
}
Matrix2D.Mul=function(Matrix2D_a,Matrix2D_b)
{
var r=new Matrix2D();
r.M11=Matrix2D_a.M11*Matrix2D_b.M11+Matrix2D_a.M12*Matrix2D_b.M21;
r.M12=Matrix2D_a.M11*Matrix2D_b.M12+Matrix2D_a.M12*Matrix2D_b.M22;
r.M21=Matrix2D_a.M21*Matrix2D_b.M11+Matrix2D_a.M22*Matrix2D_b.M21;
r.M22=Matrix2D_a.M21*Matrix2D_b.M12+Matrix2D_a.M22*Matrix2D_b.M22;
return r;
}

var ms=new MatrixFilter(s);
var mm=new MatrixFilter(m);
var mh=new MatrixFilter(h);
var i=1;
setInterval("ms.RotateToAt((new Date()).getSeconds()*6+6,69,69)",500);
setInterval("mm.RotateToAt((new Date()).getMinutes()*6+6,69,69)",500);
setInterval("mh.RotateToAt(((new Date()).getHours()+(new Date()).getMinutes()/60)*30,69,69)",500);
//mf.MoveTo(30,70);
//mf.ZoomBy(1.5,1.5);
//mf.ZoomBy(1.5,1.5);
//alert(mf.toMatrix2D());

//alert(Matrix2D.Mul(m2d1,m2d2));
//fnSetRotation(oDiv.filters.item(0),30);

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 基于javascript实现动态时钟效果

    本文实例讲解了javascript动态时钟效果的实现方法,分享给大家供大家参考,具体内容如下 实现代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <

  • js实现一个简单的数字时钟效果

    效果图: 代码如下: <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>一个简单的数字时钟</title> <script type="text/javascript" charset="utf-8

  • JS实现的网页倒计时数字时钟效果

    本文实例讲述了JS实现的网页倒计时数字时钟效果.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&q

  • js实现倒计时时钟的示例代码

    如下所示: 复制代码 代码如下: <!--将以下代码加入HTML的<Body></Body>之间--> <SCRIPT language=JavaScript1.2>function setcountdown(theyear,themonth,theday){yr=theyear;mo=themonth;da=theday}setcountdown(2008,7,12)var occasion="2008北京奥运会"var message

  • js实现简单的秒表走动的时钟特效

    本文实例介绍了javascript实现简单的秒表走动的时钟特效.分享给大家供大家参考.具体如下:   运行效果图如下: 实现代码: <html> <head> <script type="text/javascript"> function startTime() { var today=new Date() var h=today.getHours() var m=today.getMinutes() var s=today.getSeconds(

  • 一个简易时钟效果js实现代码

    本文实例为大家分享了js时钟特效 的具体代码,供大家参考,具体内容如下 js代码 var canvas = document.getElementById("clock"); var clock = canvas.getContext("2d"); function zhong() { clock.save(); //开始画外层圆 clock.translate(200, 200); clock.strokeStyle = 'black'; clock.lineWi

  • html5 canvas js(数字时钟)实例代码

    复制代码 代码如下: <!doctype html><html>    <head>        <title>canvas dClock</title>    </head>    <body>        <canvas id = "clock" width = "500px" height = "200px">            您的浏览

  • js实现的跟随鼠标移动的时钟效果(中英文日期显示)

    中文日期限制 "; props2=""; Split=360/n; Dsplit=360/D.length; HandHeight=ClockHeight/4.5 HandWidth=ClockWidth/4.5 HandY=-7; HandX=-2.5; scrll=0; step=0.06; currStep=0; y=new Array();x=new Array();Y=new Array();X=new Array(); for (i=0; i '+props2+D

  • javascript入门·动态的时钟,显示完整的一些方法,新年倒计时

    时间对象作为非常重要的一个对象,对我们学.net的人来说,并不是很重要,但这并不意味着我们可以忽略,事实上,用得着的时候还是很多的,如果完全依赖JS处理时间,那是会出问题的,因为JS总是假设本地机器上的时间是正确的.还有个原因,他总按照GTM市区来计量.我们只是返回当前date对象的副本,我们即便是修改,那也不会对对象本身有任何影响. 演示一:动态的时钟(来个复杂的) 11:55:13 演示二:显示完整的一些方法(事实上我很讨厌有些格式了) Mon Oct 1 22:35:25 UTC+0800

  • JavaScript实现简单的时钟实例代码

    复制代码 代码如下: <html> <head> <title>JS实现简单的时钟</title><script> function displayTime() {        document.getElementById("time").innerHTML = new Date().toTimeString();    } setInterval(displayTime,1000);      // 每隔1秒钟调用dis

随机推荐