我正在尝试为SDK 5.0b提供一个非常简单的HTML / JavaScript应用程序,其说明在这里...
http://samsungtvdev.blogspot.com/2013/04/smamsung-smart-tv-how-to-write-hello.html
我可以启动VirtualBox 4.2.16并在模拟器的菜单中查看我的应用程序。但是,当我启动它时,背景是黑色的,我看不到我的应用程序。我还在模拟器中看到一些关于'RegisterType()'和其他函数不可用的警告。
我试过在三星SDK论坛上发布这个,但它已经相当死了。我也尝试了建议here,但手动复制应用程序似乎也不起作用。任何人对如何使这个工作有任何想法?
编辑:这是HTML代码。这不过是一个“你好世界”的例子。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HelloWorld</title>
<!-- TODO : Common API -->
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Widget.js"> </script>
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/TVKeyValue.js"> </script>
<!-- TODO : Javascript code -->
<script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script>
<!-- TODO : Style sheets code -->
<link rel="stylesheet" href="app/stylesheets/Main.css" type="text/css">
<!-- TODO: Plugins -->
</head>
<body onload="Main.onLoad();" onunload="Main.onUnload();">
<!-- Dummy anchor as focus for key events -->
<a href="javascript:void(0);" id="anchor" onkeydown="Main.keyDown();"></a>
<!-- TODO: your code here -->
<div id="outputDiv"></div>
</body>
</html>
这是JavaScript代码。
var widgetAPI = new Common.API.Widget();
var tvKey = new Common.API.TVKeyValue();
var Main =
{
};
Main.onLoad = function()
{
// Enable key event processing
this.enableKeys();
widgetAPI.sendReadyEvent();
alert("App loaded!");
};
Main.onUnload = function()
{
};
Main.enableKeys = function()
{
document.getElementById("anchor").focus();
};
Main.keyDown = function()
{
var keyCode = event.keyCode;
alert("Key pressed: " + keyCode);
switch(keyCode)
{
case tvKey.KEY_RETURN:
case tvKey.KEY_PANEL_RETURN:
alert("RETURN");
widgetAPI.sendReturnEvent();
break;
case tvKey.KEY_LEFT:
alert("LEFT");
break;
case tvKey.KEY_RIGHT:
alert("RIGHT");
break;
case tvKey.KEY_UP:
alert("UP");
break;
case tvKey.KEY_DOWN:
alert("DOWN");
break;
case tvKey.KEY_ENTER:
case tvKey.KEY_PANEL_ENTER:
alert("ENTER");
document.getElementById("outputDiv").innerHTML += "<h1>Hello, World!</h1><br/>";
break;
default:
alert("Unhandled key");
break;
}
};
以下是日志: http://pastebin.com/mZULDGc6
答案 0 :(得分:0)
1。)查找拼写错误,拼写错误和缺少逗号。三星智能电视SDK似乎非常严格,因为你没有适当的控制台,如果你忘记逗号或其他什么,你不会有任何错误
2.)检查你的HTML / CSS
也许你应该发布你的代码,以便我仔细看看。
编辑:您忘记在HTML头中添加脚本了。您必须添加在项目中使用的每个脚本文件,例如Main.js.那将是<script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script>
以及所有必需的Samsung SmartTV API脚本文件。
答案 1 :(得分:0)
首先我看到的,你忘记了html中的“锚”标签。
<a href="javascript:void(0);" id="anchor" onkeydown="Main.keyDown();"></a>
不包含html页面中的外部JS文件和标准智能电视sdk文件:
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Widget.js"> </script>
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/TVKeyValue.js"> </script>
然后添加
<body onload="Main.onLoad();" onunload="Main.onUnload();">
你确定加载了图片吗?在控制台中打印。 为什么div阻挡画布内的位置,将其移到外面。我认为代码以js错误开头,所以你什么都看不到。要小心点。
答案 2 :(得分:0)
我有同样的问题并通过添加背景来修复它:红色;用于css中的body标签。