日期:2014-03-16  浏览次数:20621 次


我们可以使用 PUBLIC:METHOD 元素来定义 HTC 的方法集,如下例所示:

<PUBLIC:METHOD NAME="startFlying" />

当我们定义了一个方法后,我们就可以在 HTC 中直接来调用它。请看下面的例子:

<PUBLIC:METHOD NAME="tick" />
<PUBLIC:METHOD NAME="startFlying" />
:
<SCRIPT LANGUAGE="JScript">
var currCount;
var flyCount;
var flying;
var msecs;

var oTop, oLeft;
msecs = 50;
flyCount = 20;
flying = false;

runtimeStyle.position = "relative";
runtimeStyle.visibility = "hidden";

window.attachEvent("onload", onload);

function onload()
{
// delay commences from the window.onLoad event
if (delay != "none")
{
window.setTimeout(uniqueID+".tick()", delay);
}
}

function tick()
{
if (flying == false)
{
startFlying();
}
else
{
doFly();
}
}

function startFlying()
{
if (fromX==null && fromY==null)
{
if (from=="top")
{
runtimeStyle.posTop = -offsetTop-offsetHeight;
}
else if (from=="bottom")
{
runtimeStyle.posTop = element.document.body.clientHeight;
}
else if (from=="right" )
{
runtimeStyle.posLeft = element.document.body.clientWidth;
}
else
{
runtimeStyle.posLeft = -offsetLeft-offsetWidth;
}
}
else
{
runtimeStyle.posTop = fromY;
runtimeStyle.posLeft = fromX;
}

runtimeStyle.visibility = "visible";
flying = true;

oTop = runtimeStyle.posTop;
oLeft = runtimeStyle.posLeft;

currCount = 0;
doFly();
}

function doFly()
{
var dt, dl;

currCount++;
dt = oTop / flyCount;
dl = oLeft / flyCount;

runtimeStyle.posTop -= dt;
runtimeStyle.posLeft -= dl;

if (currCount < flyCount)
{
window.setTimeout(uniqueID+".tick();", msecs);
}
else
{
runtimeStyle.posTop = 0;
runtimeStyle.posLeft = 0;
flying = false;
evObj = createEventObject();
evObj.setAttribute("resulty", uniqueID);
finished.fire(evObj);
}
}
</SCRIPT>