【问题标题】:Sketch.js pageX undefined errorSketch.js pageX未定义错误
【发布时间】:2014-02-14 04:08:00
【问题描述】:

我在我的phonegap应用程序中使用intridea的sketch.js。修改后可以正常工作

 case 'touchstart':
            if (this.painting) {//add
                this.stopPainting();
                //add
            }//add
            this.startPainting();
            break;

通过将以上行添加到代码中。但是我收到一个 pageX 未定义的错误,这导致我的应用程序崩溃。

01-23 19:53:59.342: E/Web Console(31932): Uncaught TypeError: Cannot read property 'pageX' of undefined at file:///android_asset/www/js/external_libs/sketch.js:107

如何克服这个问题,任何帮助将不胜感激。谢谢

【问题讨论】:

  • 你在Phonegap中使用sketch.js有什么成功吗?我正在尝试自己使用它并且它可以工作,但是当你绘制它时,它每次都会清除以前绘制的线,但我不知道为什么。
  • @RickCurran :不幸的是没有。我最终使用了 jqscribble.js,它成功了。
  • 谢谢,我也切换到另一个库,但使用 Fabric.js 代替 @Sumodh Nair
  • @RickCurran : 太棒了:)

标签: javascript jquery cordova html5-canvas


【解决方案1】:

似乎每个人都切换到了 jqscribbel.js,但是要直接用 sketch.js 回答这个问题,您需要检查是否定义了 e.originalEvent.targetTouches[0]。我还没有深入研究sketch.js,但是似乎触发了touchup事件时,e.originalEvent.targetTouches[0]不再定义,因此尝试查找未定义的.pageX会出错。此错误会导致重新绘制整个画布,因此您不能在画布上绘制超过 1 个草图。要修复此错误,只需添加以下两行代码(大约第 100/101 行):

e.pageX = e.originalEvent.targetTouches[0].pageX;
e.pageY = e.originalEvent.targetTouches[0].pageY;

并替换为

if (e.originalEvent.targetTouches[0] !== undefined && e.originalEvent.targetTouches[0].pageX !== undefined){
    e.pageX = e.originalEvent.targetTouches[0].pageX;
}
if (e.originalEvent.targetTouches[0] !== undefined && e.originalEvent.targetTouches[0].pageY !==undefined){
    e.pageY = e.originalEvent.targetTouches[0].pageY;
}

【讨论】:

  • 谢谢,targetTouches[0] 是我在 iOS 上的解决方案,也适用于 clientX
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多