我知道处理wmode问题的标准方法是注册一个回调,该回调会暂停flash应用程序,并在flash对象隐藏时用图像替换flash区域。
我想要避免的是游戏中的flash消失,因为当有人向用户发送消息时,facebook-chat会自动弹出(用户的朋友可以远程暂停用户的游戏,只需发送一条即时消息)。
似乎“愤怒的小鸟之友”和Zynga的Ruby Blast冒险以某种方式解决了这个问题。这些游戏在stage3d上运行,所以它们的wmode设置为“直接”,当收到即时消息时,facebook只会显示一个小的新消息指示器,而不是立即显示完整的消息对话框。
我不明白他们是怎么做到的。对我来说,facebook似乎总是在收到消息后立即弹出消息。
游戏是在stage3d中,所以有一个‘直接’的wmode是必须的。
任何帮助都将不胜感激。
发布于 2013-11-01 23:46:04
我正在与同样的问题作斗争,除了imo完美的解决方案是同时显示聊天(和其他facebook菜单)和stage3d闪存。似乎将包含flash的元素设置为:
display: block !important;
visibility: visible !important; 确实有效,但我真的不相信这是完美的解决方案..似乎在某些浏览器/OS组合中,一些(Facebook调用) ui内容现在显示在flash后面,至少部分是这样。非常感谢“一个官方的正确答案(Tm)”。
发布于 2018-03-09 00:25:36
您可以编写一个侦听器函数,以便在游戏失去或重新获得焦点时调用,并通过将其作为hideFlashCallback参数传递给FB.init(),将其注册到Facebook环境。监听器将被传递一个参数字典,其中将包含一个名为state的键,如果您应该隐藏游戏,该键将被设置为opened。
在这种情况下,侦听器应该调用Flash应用程序的exportScreenshot方法,使用base64编码的图像数据创建一个data URL,并使其成为img元素的src;它应该使用JS中的FB.hideFlashElement方法将应用程序的包含元素移出屏幕,并将其替换为该img。如果传递给监听器的参数字典没有状态:“已打开”,则使用FB.Canvas.showFlashElement将Flash应用程序带回屏幕。
你可以在这里找到更多信息:https://developers.facebook.com/docs/games/gamesonfacebook/optimizing#handlingpopups
https://stackoverflow.com/questions/19054248
复制相似问题