我知道处理wmode问题的标准方法是注册一个暂停flash应用程序的回调,并在隐藏flash对象时用闪存区域替换flash区域。
我想要避免的是闪光灯在游戏中期消失,因为当有人向用户发送消息时,Facebook聊天自动弹出消息(用户的朋友可以基本上暂停用户的游戏,只需发送给他们一个即时消息)。
似乎愤怒的小鸟朋友和Zynga的Ruby Blast Adventure以某种方式解决了这个问题。这些游戏在stage3d上运行,因此他们的wmode设置为“direct”,当收到即时消息时,facebook只显示一个小的新消息指示符,而不是立即显示完整的消息对话框。
我无法弄清楚他们是如何做到的。 对我来说,一旦收到消息,facebook似乎总是会弹出消息。
游戏处于stage3d,因此必须拥有“直接”的wmode。
非常感谢任何帮助。
答案 0 :(得分:0)
我正在与同样的问题作斗争,除了imo完美的解决方案是同时显示聊天(和其他facebook菜单)和stage3d flash。似乎设置包含闪光灯的元素,例如div为:
display: block !important;
visibility: visible !important;
诀窍,但我并不确信这是一个完美的解决方案..似乎在一些浏览器/操作系统组合中,一些(Facebook隐藏)ui的东西现在至少部分显示在闪存背后。非常感谢“官方正确答案(tm)”。
答案 1 :(得分:0)
您可以编写一个在游戏失去或重新获得焦点时调用的侦听器函数,并通过将其作为FB.init()
参数传递给hideFlashCallback
来将其注册到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