检测用户何时在HTML5 / Javascript应用中拖动adcontrol?

时间:2012-12-19 22:41:08

标签: javascript windows html5 windows-8 ads

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

我尝试了一些像HTML片段这样的东西,并将div与画布分开,但它总是以相同的方式运行。我还尝试使用Windows运行时组件包含广告,但它看起来不像允许您传递AdControl等UI元素。有没有人有一些建议。感谢。

3 个答案:

答案 0 :(得分:3)

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

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

检查HammerJs是否有拖动,释放和其他触摸手势。您可以使用触摸事件,如正常的jquery事件,如

$('#canvasId').on('dragstart drag dragend release ....',callback);

答案 1 :(得分:2)

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

AdControl takes control over Focus - 两种可能的解决方案。

  1.   

    尝试将IsEnabled属性设置为false。

  2.   

    找到一种稍微有效的解决方法(让你离开   AdControl完全启用)。

         
        
    1. 创建一个名为“_advertRefreshed”的布尔字段。
    2.   
    3. ApplyTemplates挂钩AdControl.Refreshed事件期间,设置_advertRefreshed为真。
    4.   
    5. 添加OnLostFocus事件,该事件实现逻辑“如果当前焦点是WebView并且_advertRefreshed是真实设置焦点回到   原来,然后跟着这个测试总是set _advertRefreshed假   试”。
    6.   
  3. KeyPress swallowed by AdControl? - 关于上述解决方案#1的问题和确认的讨论。

    Microsoft AdControl stealing focus - Windows 8 MonoGame

答案 2 :(得分:2)

我需要看到你的代码给你最好的答案,但这个问题很常见。

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

var mDown = false;

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

如果您在div内部进行了moused,但是在它之外的mouseup,则该标志永远不会被清除,因为该div从未接收到mouseup事件。

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

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

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