0

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

我要避免的是,当有人向用户发送消息时,由于 facebook-chat 自动弹出,flash 在游戏中期消失(用户的朋友基本上可以远程暂停用户的游戏,只需向他们发送即时消息) .

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

我无法弄清楚他们是如何做到这一点的。对我来说,Facebook 似乎总是在收到消息后立即弹出消息。

游戏在 stage3d 中,因此必须有一个“直接”的 wmode。

任何帮助将不胜感激。

4

2 回答 2

0

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

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

成功了,但我不太确定这是完美的解决方案。似乎在某些浏览器/操作系统组合上,一些(Facebook 调用的)ui 内容现在至少部分显示在 flash 后面。非常感谢“官方正确答案(tm)”。

于 2013-11-01T15:46:04.307 回答
0

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

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

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

于 2018-03-08T16:25:36.100 回答