如何屏蔽SkylineGlobe提供的三维地图控件上的快捷键

时间:2022-03-30 22:12:14

SkyllineGlobe提供的

<OBJECT ID=" TerraExplorer3DWindow" CLASSID="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" width=500 height=400></OBJECT>
可以用来加载显示FLY格式的三维地图工程,可以嵌入到HTML页面中。

这个三维地图控件里,封装了在TerraExplorer中的一些快捷键,比如控制方向的"Q/W/A/S/Z/X/Home/Pgup/PgDn/End"等等,

但如果我们想重新定义一些快捷键,那么,首先该如何屏蔽原来的这些快捷键或者如何捕获到键盘触发的事件函数呢?

请看下面的示例代码:

<!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">
<head>
<title></title>
<script type="text/javascript" language="javascript">
function Test() {
var TE3DWindow = window.document.getElementById("TE3DWindow");
//TE3DWindow.attachEvent("OnKeyboardMessage", OnKeyboardMessage);
} function OnKeyboardMessage(Message, KeyCode, KeyData, bHandled) {
bHandled = true;
//return true;
}
</script>
<script language="VBSCRIPT"> Sub TE3DWindow_OnKeyboardMessage(Message, KeyCode, KeyData,bHandled)
msgbox KeyData
bHandled = true 'Indicate that the client handled the event. end sub </script>
</head>
<body style="margin: 0px; border: 0px;">
<div>
<table cellpadding="0" cellspacing="0" style="width: 100%; height: 100%; margin: 0px;
border: 0px;">
<tr>
<td>
<input id="Button1" type="button" value="button" onclick="Test()" />
</td>
</tr>
<tr>
<td>
<object id="TE3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" width="400"
height="400">
</object>
</td>
</tr>
</table>
</div>
</body>
</html>

  

上面的代码中,主要用到了 OnKeyboardMessage 这个事件函数,大家需要注意的是:

这个事件函数是定义到 TE3DWindow 对象的,而不是常用的SGWorld对象;

这个方法需要通过VBS来定义,JS定义的无效。