5

嗨,我使用 Construct2 开发了一个游戏,并在导出项目附带的主 html 页面中包含了一个 AdControl。现在我注意到,当您从游戏画布拖动到广告上并释放时,它实际上并没有释放触摸。我的游戏依赖于特定的触摸,所以如果用户停止触摸屏幕,我实际上需要重置该触摸。我在这里遗漏了什么,或者是否有解决此问题的方法?我在 C# 中使用 WebBrowser 控件尝试了同样的事情,但没有遇到同样的问题。

我已经尝试了一些东西,比如 HTML 片段和用边距将 div 与画布分开,但它总是以相同的方式运行。我还尝试使用 Windows 运行时组件包含广告,但它看起来不允许您传递诸如 AdControl 之类的 UI 元素。有没有人有一些建议。谢谢。

4

3 回答 3

3

这是一个工作示例,当手移到广告上时释放触摸:http: //jsfiddle.net/ChaitanyaMunipalle/jn3kZ/

您可以在这个 jsfiddle 中看到画布下方的所有触摸事件。

检查 HammerJs 的拖动、释放和其他触摸手势。您可以使用像普通 jquery 事件一样的触摸事件,例如

$('#canvasId').on('dragstart drag dragend release ....',callback);
于 2012-12-27T19:47:00.630 回答
2

我需要查看您的代码才能为您提供最佳答案,但这个问题相当普遍。

如果您有这样的设置(使用 jQuery 进行概念演示):

var mDown = false;

$("#myDiv").mouseDown(function(){
    mDown = true;
}).mouseMove(function(e){
    if (mDown)
       // do stuff
}).mouseUp(function(){
    mDown = false;
});

发生的情况是,如果您在 div 内部 mousedown,但在其外部 mouseup,则该标志永远不会清除,因为该 div 从未收到 mouseup 事件。

您需要做的是将 mouseup 事件附加到窗口或文档:

$(window).mouseUp(function(){
    mDown = false;
});

然后,无论您在何处释放鼠标按钮,它都会清除其“状态”。

于 2012-12-27T18:39:54.827 回答
2

一些可能相关的问题和解决方案。

AdControl 控制 Focus - 两种可能的解决方案。

  1. 尝试将 IsEnabled 属性设置为 false。

  2. 找到了一个稍微更有效的解决方法(它可以让您完全启用 AdControl)。

    1. 创建一个名为“ _advertRefreshed”的布尔字段。
    2. ApplyTemplates钩子AdControl.Refreshed事件期间,设置为_advertRefreshedtrue。
    3. 添加一个OnLostFocus实现逻辑的事件“如果当前焦点是 WebView 并且_advertRefreshed为 true,则将焦点设置回原始,然后在此测试之后set _advertRefreshed再次始终为 false”。

KeyPress 被 AdControl 吞噬?- 讨论问题并确认上述解决方案#1。

Microsoft AdControl 窃取焦点 - Windows 8 MonoGame

于 2012-12-22T05:45:32.913 回答