如何禁用脸书的新消息弹出窗口?



我知道处理wmode问题的标准方法是注册一个回调,该回调暂停Flash应用程序并在隐藏flash对象时用图像替换flash区域。

我试图避免的是闪光灯在游戏中期消失,因为当有人向用户发送消息时,Facebook聊天自动飞出(用户的朋友基本上可以远程暂停用户的游戏,只需向他们发送即时消息(。

似乎愤怒的小鸟朋友和Zynga的Ruby Blast Adventure以某种方式解决了这个问题。这些游戏在stage3d上运行,因此它们的wmode设置为"直接",当收到即时消息时,Facebook只显示一个小的新消息指示器,而不是立即显示完整的消息对话框。

我不知道他们是怎么做到的。对我来说,Facebook似乎总是在收到消息后立即弹出消息。

游戏是 stage3d 的,所以有一个"直接"的模式是必须的。

任何帮助将不胜感激。

我正在与同样的问题作斗争,除了 imo 完美的解决方案是同时显示聊天(和其他 Facebook 菜单(和 stage3d 闪存。似乎将包含闪光灯的元素(例如div(设置为:

display: block !important; 
visibility: visible !important; 

可以解决问题,但我并不真正相信这是完美的解决方案。似乎在某些浏览器/操作系统组合上,一些(Facebook调用的(UI内容现在至少部分显示在闪存后面。非常感谢"官方正确答案(tm("。

您可以编写一个侦听器函数,以便在游戏失去或重新获得焦点时调用,并通过将其作为 hideFlashCallback 参数传递给 FB.init() 来将其注册到 Facebook 环境。侦听器将收到一个参数字典,其中包含一个名为 state 的键,如果您应该隐藏游戏,该键将设置为打开。

在这种情况下,侦听器应调用 Flash 应用的 exportScreenshot 方法,使用 Base64 编码的图像数据创建数据 URL,并将其作为 img 元素的 src;它应使用 JS SDK 中的 FB.hideFlashElement 方法将应用的包含元素移出屏幕,并将其替换为该img。如果传递给侦听器的参数字典没有状态:"已打开",则使用 FB.Canvas.showFlashElement 将 Flash 应用程序带回屏幕上。

您可以在此处找到更多信息:https://developers.facebook.com/docs/games/gamesonfacebook/optimizing#handlingpopups

最新更新