无法在iOS模拟器上运行简单的基于KineticJs的Cordova/PhoneGap应用程序
Cannot run simple KineticJs-based Cordova/PhoneGap app on iOS Simulator
我一直在玩KineticJs的JavaScript库,现在我正试图在iOS simualtor中模拟一些简单的基于PhoneGap的应用程序。
然而,即使是在iOS模拟器中运行一段简单的代码,我也遇到了问题。我的代码只是使用KineticJs库在HTML5画布上绘制一个矩形。我可以使用Ripple Emulator(emulate.phonegap.com)在桌面浏览器中运行它,它运行良好(尽管window.onload事件似乎被触发了两次,但不确定这是否相关)。
问题出现在iOS模拟器中。一旦遇到实例化新KineticJs"stage"的javaScript代码,Xcode控制台面板中就不会发生其他事情(不会显示console.log()消息),模拟器中也不会出现alert()弹出窗口。
我已经在kinetic-v4.0..js源代码中的每个构造函数、方法、原型等中添加了调试消息(使用console.log()和alert()语句),但在最初的启动消息之后,Xcode控制台面板中没有显示任何消息,所以很难弄清楚它在哪里丢失了。
我已经在下面粘贴了我的index.html文件。它只包含用于绘制矩形的KineticJs调用,还包括中的Cordova和KineticJs库。
我试过很多事情,比如重新定位KineticJS源代码的位置(绝望的东西),等待用户点击按钮创建KineticJSstage,而不是在"设备就绪"事件上进行(只是为了确保一切都准备好),但没有任何区别。
这是我在kinetic-v4.0..js中调试语句的一个例子(以防我做了一些愚蠢的事情):
Kinetic.Stage = Kinetic.Container.extend({
init: function(config) {
console.log("In Kinetic.Stage.init()."); //<<<<<< Debug
if (myDbg) alert("In Kinetic.Stage.init()."); //<<<<<< Debug
.
.
.
.
我的index.html代码:
<!DOCTYPE html>
<html>
<head>
<title>Basic Rect</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name = "format-detection" content = "telephone=no"/>
<meta name="viewport" content="user-scalable=no, initial-scale=0.75, maximum-scale=1, minimum-scale=1, width=device-width;" />
<script src="../../js/kinetic-v4.0.0.js"></script>
<script type="text/javascript" src="cordova-2.0.0.js"></script>
<link rel="stylesheet" type="text/css" href="css/index.css" />
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log("In onDeviceReady().");
//alert("In onDeviceReady().");
var stage = new Kinetic.Stage({
container: "container",
width: 578,
height: 200
});
console.log("onDeviceReady(): created stage.");
//alert("onDeviceReady(): created stage.");
var layer = new Kinetic.Layer();
var rect = new Kinetic.Rect({
x: 239,
y: 75,
width: 100,
height: 50,
fill: "#00D2FF",
stroke: "black",
strokeWidth: 4
});
layer.add(rect);
stage.add(layer);
console.log("Finishing onDeviceReady().");
//alert("Finishing onDeviceReady().");
}; // onDeviceReady() function handler
</script>
</head>
<body>
<div id="container">
</div>
</body>
</html>
从上面的代码中可以看到,在KineticJS阶段创建之前,"In-onDeviceReady()."应该打印到Xcode控制台面板上,然后在阶段创建之后打印"onDeviceReady):created stage."。但是,只打印"In onDeviceReady()."。
以下是Xcode控制台面板消息:
2012-08-28 16:58:05.384 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] Multi-tasking -> Device: YES, App: YES
2012-08-28 16:58:05.577 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] PluginResult:toJSONString - {"status":1,"message":"wifi","keepCallback":false}
2012-08-28 16:58:05.578 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] PluginResult toSuccessCallbackString: cordova.callbackSuccess('NetworkStatus0',{"status":1,"message":"wifi","keepCallback":false});
2012-08-28 16:58:05.579 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] PluginResult:toJSONString - {"status":1,"message":{"name":"iPhone Simulator","uuid":"0000-0000-0000-0000-0000","platform":"iPhone Simulator","version":"5.1","cordova":"2.0.0"},"keepCallback":false}
2012-08-28 16:58:05.580 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] PluginResult toSuccessCallbackString: cordova.callbackSuccess('Device1',{"status":1,"message":{"name":"iPhone Simulator","uuid":"5EFBB116-CF1E-4E47-9259-6092C5F7C4F6","platform":"iPhone Simulator","version":"5.1","cordova":"2.0.0"},"keepCallback":false});
2012-08-28 16:58:05.584 misc35_basic_kinetic_rect_phonegap_prj[92196:13403] [INFO] In onDeviceReady().
任何建议都将不胜感激。
我真的很愚蠢。
问题是,在index.html文件中,我从Xcode项目区域之外拉入了kinetic-v4.0..js文件,并将其放在www目录或子目录中。
当然,Xcode在电台对此事保持沉默也于事无补。
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- Node.js正在更改应用程序以使用集群模块
- 在openshift node js应用程序中获取请求
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 无法在iOS模拟器上运行简单的基于KineticJs的Cordova/PhoneGap应用程序