我需要禁止flash嵌入的默认右键单击菜单。
我将菜单设置为false,并在右键单击事件中使用了停止默认功能,但它仍然显示菜单。
另外,我无法访问.fla,因为flash对象不是由我创建的。
提前致谢!
答案 0 :(得分:1)
没有fla(并且改变那些甚至不会给你你想要的东西),你需要做一些事情来掩盖HTML中的swf文件 - 例如,<div>
。
然而,这也会阻止任何左键点击,如果你不想这样,我知道的唯一方法(而且我很确定是唯一的方法,安全变体)是为了获得左键点击而添加代码。无论如何这都是一个黑客攻击 - 甚至超过了swf-cover <div>
。
为了覆盖swf,需要将其窗口模式(wmode
param)设置为“opaque”(如果swf内的区域需要透明,则为“透明”)。两者都改变了FlashPlayer的渲染模式,以便HTML可以显示在它上面(默认的wmode="window"
使它在其他任何东西上呈现)。两种替代wmode
params在某种程度上降低了性能(“透明”比“不透明”更多),并且两者都在FlashPlayer中引入了某些不可预测且看似无关的错误(同样,“透明”比“不透明”更多)。例如。 YouTube确实支持更改wmode参数,因此在他们的情况下,它应该没有bug - 但是其他人在使其工作时遇到了麻烦。参见例如How to make videos on Youtube not cover a lightbox?
将wmode
设置为“透明”后,您可以放置<div>
绝对覆盖swf,这意味着它会在到达swf之前捕获左键单击。请记住,IE6-8不会捕获透明元素的点击次数 - 所以你需要一个颜色+ alpha = 0 - 或透明的png / gif - 作为元素的背景。
作为旁注,只是为了涵盖让左键单击传递给swf的概念(需要在源代码/ fla中添加):你基本上让<div>
捕获mousedown事件,并通过ExternalInterface
将坐标传递给Flash。对于右键点击可以做同样的事情。这允许 - 并且是唯一的方式,即使它是非常非常hacky - 例如Flash的特殊右键单击功能,而不是显示其上下文菜单。
直到FlashPlayer 11.2,即。它增加了对右/中间点击的支持 - 以及锁定鼠标等等(但是如果没有访问源,你仍然不可能这样做。)
无论如何,除非真的需要这个(并且 这样的情况),否则最好找到替代方案 - 即使不是相当< / em>一般来说,禁用网页上的右键菜单一样糟糕。
答案 1 :(得分:0)
在Flash Builder中:
var myContextMenu:ContextMenu = new ContextMenu();
myContextMenu.hideBuiltInItems();