谁能帮忙解释一下win7桌面小工具时钟的js代码,哪几行是控制时钟指针的?

max201008 max201008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在win7系统的C:\Program Files\Windows Sidebar\Gadgets目录下,能看到win7自带的各种桌面小工具的原始文件,看了之后知道原来桌面小工具就是xml+html+css+js的结合产物,于是开始看时钟的js文件,可是看来看去也没看出哪个函数是控制时钟指针走动的,求高人指点。另请高人指点如果要把时针该成倒着走,要怎么办呢?

附上微软win7自带的js原码:

////////////////////////////////////////////////////////////////////////////////
//
// THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT

COMPONENT.
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
var clockThemes = new Array("trad", "system", "cronometer", "diner", "flower",

"modern", "square", "novelty");
var newPositionMinutes = 0;
var currentPositionMinutes = 0;
var newPositionHours = 0;
var currentPositionHours = 0;
var midClockNameFontHeight = 8;
var maxClockNameWidth = 60;
var posClockNameTop = 75;
var clockPartsWidth;
var clockPartsHeight;
var clockPartsTop;
var clockPartsLeft;
var date;
var intervalTime;
var newTimeOut;
var clockFont;
var clockFontColor;
var clockFontSize;
////////////////////////////////////////////////////////////////////////////////
//
// load initial settings
//
////////////////////////////////////////////////////////////////////////////////
function loadMain()
{
settingsChanged();

System.Gadget.settingsUI = "settings.html";
System.Gadget.onSettingsClosed = settingsClosed;

System.Gadget.visibilityChanged = visibilityChanged;

h.addShadow("grey", 2, 40, 2, 2);
m.addShadow("grey", 2, 40, 2, 2);
s.addShadow("grey", 2, 40, 2, 2);
}
////////////////////////////////////////////////////////////////////////////////
//
// set theme images
//
////////////////////////////////////////////////////////////////////////////////
function setImages()
{
var curTheme = clockThemes[mySetting.themeID];

clockBg.src = "url(images/" + curTheme + ".png)";

h.src = "images/" + curTheme + "_h.png";
m.src = "images/" + curTheme + "_m.png";
s.src = "images/" + curTheme + "_s.png";
dot.src = "images/" + curTheme + "_dot.png";
}
////////////////////////////////////////////////////////////////////////////////
//
// calculate current time
//
////////////////////////////////////////////////////////////////////////////////
function timePerInterval()
{
refreshDate();
with (date)
{
hours = getHours();
minutes = getMinutes();
seconds = getSeconds();
}

var rotationHours = hours;

if (hours > 12)
{
rotationHours = hours - 12;
}

h.Rotation = (rotationHours * 30) + (minutes / 2);
m.Rotation = (minutes * 6) + (seconds / 10);

if (mySetting.secondsEnabled)
{
s.Rotation = (seconds * 6);

var secondOffset = secondTimeOffset();

if (secondOffset > 0)
{
newTimeOut = setTimeout("timePerInterval()", secondOffset);
}
else
{
timePerInterval();
}
}
else
{
var minuteOffset = minuteTimeOffset();

if (minuteOffset > 0)
{
newTimeOut = setTimeout("timePerInterval()", minuteOffset);
}
else
{
timePerInterval();
}
}
}
////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////
function visibilityChanged()
{
if (System.Gadget.visible)
{
if (!newTimeOut)
{
timePerInterval();
}
}
else
{
clearTimeout(newTimeOut);
newTimeOut = null;
}
}
////////////////////////////////////////////////////////////////////////////////
//
// updates the tooltip with the current time
//
////////////////////////////////////////////////////////////////////////////////
function updateTooltip()
{
refreshDate();
highlights.title = clockTime.alt = date.toLocaleTimeString();
}
////////////////////////////////////////////////////////////////////////////////
//
// updates the date object with the current system time
//
////////////////////////////////////////////////////////////////////////////////
function refreshDate()
{
if (mySetting.timeZoneIndex != -1 && getValidTimeZone

(mySetting.timeZoneIndex) != -1)
{
date = new Date(System.Time.getLocalTime(zones.item

(mySetting.timeZoneIndex)));
}
else
{
date = new Date(System.Time.getLocalTime

(System.Time.currentTimeZone));
}
}
////////////////////////////////////////////////////////////////////////////////
//
// settings event closed
//
////////////////////////////////////////////////////////////////////////////////
function settingsClosed(event)
{
if (event.closeAction == event.Action.commit)
{
settingsChanged();
}
}
////////////////////////////////////////////////////////////////////////////////
//
// set clock to the new settings
//
////////////////////////////////////////////////////////////////////////////////
function settingsChanged()
{
mySetting.load();

if (mySetting.timeZoneIndex != -1 && zonesCount == 0)
{
updateTimeZones();
}

var topPX = 0;
var leftPX = 0;

clockFont = "Segoe UI, Tahoma, Sans-Serif";
clockFontColor = "#000000";
clockFontSize = 10;

var curTheme = clockThemes[getValidThemeID(mySetting.themeID)];

switch (curTheme)
{
case "trad":
clockFont = "Constantia, " + clockFont;
clockFontColor = "#2F2E2E";
topPX += -3;
leftPX += -1;
maxClockNameWidth = 66;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = -1;
clockPartsLeft = 57;
break;
case "system":
clockFont = "Arial Narrow, " + clockFont;
clockFontColor = "#666666";
topPX += 3;
leftPX += 1;
maxClockNameWidth = 72;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = 0;
clockPartsLeft = 58;
break;
case "cronometer":
clockFont = "Arial Narrow, " + clockFont;
clockFontColor = "#FF0000";
topPX += 6;
maxClockNameWidth = 70;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = -1;
clockPartsLeft = 57;
break;
case "diner":
clockFont = "Segoe Script Bold, " + clockFont;
clockFontColor = "#D3D9E3";
clockFontSize = 9;
maxClockNameWidth = 56;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = -1;
clockPartsLeft = 58;
break;
case "flower":
clockFont = "Arial Rounded MT Bold, " + clockFont;
clockFontColor="#FE8E08";
clockFontSize = 9;
topPX += 2;
leftPX += 2;
maxClockNameWidth = 71;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = 0;
clockPartsLeft = 59;
break;
case "modern":
clockFont = "Arial Narrow, " + clockFont;
clockFontColor = "#FFFFFF";
topPX += 3;
maxClockNameWidth = 74;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = -1;
clockPartsLeft = 58;
break;
case "square":
clockFont = "Calibri, " + clockFont;
clockFontColor = "#000000";
clockFontSize = 9;
maxClockNameWidth = 70;
clockPartsWidth = 13;
clockPartsHeight = 129;
clockPartsTop = -1;
clockPartsLeft = 57;
break;
case "novelty":
clockFont = "Calibri Bold, " + clockFont;
clockFontColor = "#6dadff";
clockFontSize = 10;
topPX += 18;
maxClockNameWidth = 60;
clockPartsWidth = 7;
clockPartsHeight = 81;
clockPartsTop = 46;
clockPartsLeft = 59;
break;
}

dot.style.width = h.style.width = m.style.width = s.style.width =

clockPartsWidth;
dot.style.height = h.style.height = m.style.height = s.style.height =

clockPartsHeight;
dot.style.top = h.style.top = m.style.top = s.style.top = clockPartsTop;
dot.style.left = h.style.left = m.style.left = s.style.left =

clockPartsLeft;

setImages();

with (clockNamePosition.style)
{
top = posClockNameTop + topPX + "px";
left = leftPX + "px";
visibility = "hidden";
}

if (mySetting.clockName.length > 0)
{
with (clockName.style)
{
width = maxClockNameWidth + "px";
fontFamily = clockFont;
color = clockFontColor;
fontSize = clockFontSize + "pt";
}

clockName.innerText = mySetting.clockName;

with (clockNamePosition.style)
{
top = parseInt(top) + midClockNameFontHeight - Math.floor

(clockName.offsetHeight / 2) + "px";
visibility = "visible";
}
}

clearTimeout(newTimeOut);

if (mySetting.secondsEnabled)
{
s.style.visibility = "visible";
dot.style.visibility = "hidden";
}
else
{
s.style.visibility = "hidden";
dot.style.visibility = "visible";
}

timePerInterval();
}
////////////////////////////////////////////////////////////////////////////////
//
// calculates how many milliseconds remain until the start of the next second
//
////////////////////////////////////////////////////////////////////////////////
function secondTimeOffset()
{
return 1000 - 2;
}
////////////////////////////////////////////////////////////////////////////////
//
// calculates how many milliseconds remain until the start of the next minute
//
////////////////////////////////////////////////////////////////////////////////
function minuteTimeOffset()
{
var d = new Date();
return ((60 - d.getSeconds()) * 1000) - d.getMilliseconds();
}

...全文

相关推荐

win7桌面小工具 非常多

总的来说,"win7桌面小工具 非常多"是一个提供Windows 7用户丰富桌面功能的资源,包括但不限于天气预报、日历、时钟等各种实用工具。

fuxun2009

Winform SCADA系统实战:单exe部署S7-200CN喷漆产线监控

SCADA(数据采集与监控系统)是工业自动化核心基础架构,其本质在于可靠连接PLC、实时处理工艺数据并支撑闭环控制。Winform作为.NET原生GUI框架,凭借低资源占用、高确定性响应和强硬件兼容性,在老旧工控机(如Win7+Atom平台)上展现出不可替代的工程价值。相比Web或WPF方案,Winform能规避浏览器崩溃、GC卡顿、驱动不兼容等现场高频故障,尤其适配S7-200CN等经典PLC的PPI串口通讯。技术价值体现在稳定运行、免安装部署、断网续采与本地SQLite历史存储;典型应用场景覆盖喷涂、电

weixin_30673611

win7小工具_非常好用的便签

通常,Windows 7小工具以.gadget扩展名的文件形式存在,包含了小工具的所有资源,如HTML、CSS、JavaScript代码以及必要的图像和声音文件。

kof0123

win7桌面小工具不能正常显示解决命令

### Win7桌面小工具不能正常显示的解决方法在Windows 7系统中,桌面小工具是一种非常实用的功能,用户可以通过它来添加时钟、天气预报、日历等小工具到桌面上,方便日常查看和使用。

apig007

win7 侧边小工具

标题中的“win7 侧边小工具”指的是Windows 7操作系统中的一个特色功能,被称为“桌面小工具”或“侧边栏”。

bubuzhid
评论 1
收藏 已收藏
分享
返回顶部
max201008
JavaScript 87,984 成员 224,681 内容