2012-12-07 56 views
8

我遇到了一个奇怪的问题,很难在Flash视频播放器中重现图形故障!至今只在Chrome中出现。Chrome Flash播放器在Flash窗口中创建透明矩形

screenshot

下的灰色矩形“进入大楼”被显示在Flash播放器是坐在HTML DIV的背景颜色。有在“我们在哪里”链接一个较小的一个。这些是精灵(含有其他几个精灵和显示对象),它们有一个脚本化的悬停动画(它们慢慢地移向一个随机点,并且具有一定范围的起源)。小故障与他们一起重新调整,有时会消失。

它让整个闪存组件看透的最奇怪的东西是什么。我有当录像机创建此代码 运行:

 graphics.clear(); 
     graphics.beginFill(0xff00ff, 1); 
     graphics.drawRect(0, 0, _stage.stageWidth, _stage.stageHeight); 
     graphics.endFill(); 

所以应该有一个颜色鲜艳的视频播放器的背面,我们已经确认,这是如果我不加载有视频播放器。然而,这个鲜艳的颜色不会显示,而是包含播放器的背景div闪耀。

这对我来说绝对没有意义...我不知道如何调试。我所知道的是,毛刺的出现取决于文本链接在屏幕上的位置。

Flash以透明的WMODE加载,我们需要它,因为它在半透明的一侧具有可扩展的“翼”。

编辑:

它是住在www.48hourgames.com。一旦你创建了一个帐户,你将会看到以上面截图结尾的视频播放器。

+0

确保您的浏览器是最新版本。从**主菜单**中选择**'关于Google Chrome' **,如果需要,它会自动查找并安装最新版本。 – arttronics

+1

这并没有解决问题。它发生在所有使用最新版本Chrome的机器上。 – joon

+0

我注意到你有'_'这个看起来很奇怪的舞台。也许它应该是'stage.stageWidth'和'stage.stageHeight'来代替?通常,*下划线*用于指定一个变量。如果需要,可能语法应该是'this._stage.stageWidth'和'this._stage.stageWidth'。 – arttronics

回答

5

这是辣椒Flash播放器的问题。 Adobe和谷歌一直在研究这个问题一段时间,这是他们打算如何保持Flash存活并在Linux平台上工作的方式。

不幸的是,Pepper Flash非常麻烦。在今年夏天的某个时候,Pepper Flash成为了Chrome在所有操作系统中的默认Flash插件。它有许多问题没有真正的解决方案,除了禁用它(并希望Adobe /谷歌将解决它们)。

要禁用辣椒闪光灯:

  • 去:铬://插件
  • 点击右上角
  • 找到的Flash Player插件部分的详细信息图标,你将可能有几个版本的Flash安装在这里。我刚刚安装了Chrome来验证问题所在,并且使用了Pepper Flash和2个“正常”版本的Flash。
  • 禁用路径中具有“PepperFlash”的Flash插件。
+1

这非常有帮助。是否有任何官方信息或错误报告可以引用我,所以我可以跟踪它们? – joon

+0

对不起,我从来没有找过一个错误报告,但互联网充斥着只发生在Pepper Flash/Chrome中的问题报告。有些问题无法解决(尤其是那些关于网络摄像机的问题)。但是,Tiffon在他的回答中提出了一些很好的想法,可能有所帮助。特别是如果你使用的是非标准的wmode值,这会带来他们自己的问题。 –

+0

启发性答案。谢谢。 –

4

我能够非常可靠地重现问题。一些想法:

  • 听起来像wmode transparent可能会在循环的基础上出现问题。也许你可以让Flash元素的宽度为100%,并在左/右边缘做一个无缝背景。在Flash中,您可以防止它通过stage.scaleMode = StageScaleMode.NO_SCALE;扩展您的内容。如果闪光灯整个宽度,你可以摆脱wmode transparent,可能是很好的去。
  • 您是否尝试过设置cacheAsBitmaptrue以覆盖电影的两个按钮?
  • 由于工件只出现在电影的末尾,当它是静止画面时,可能会在电影到达最终状态时设置cacheAsBitmaptrue这个工作状态?
  • 也许换出电影,当它达到最终状态与PNG图像看起来一样?
  • 也许用PNG图像替换两个按钮,如果它们不是PNG图像?

如果这些不起作用......变得更加绝望。

  • 也许将SWF中的侧边菜单(扩展Flash元素)从SWF中移除到它自己的SWF中,然后置于SWF电影的顶部。这样,电影SWF可能会丢失wmode transparent,并且侧边菜单上可能不会出现毛刺。
  • 侧面菜单可能是HTML。
    • 翻转状态可能是HTML元素。
    • 或者,侧边菜单可以调用Flash元素来切换翻转文本。进入Flash的电话将需要通过ExternalInterface类(details)进行注册。

由于我没有代码来测试什么,这些都是在黑暗中所有还挺镜头。

我会从cacheAsBitmap相关的想法开始。然后转到PNG想法(按钮,最后一帧)。从那里,尝试Flash元素的全角版本。如果这些不起作用,您可能需要考虑采用新设计。如果这不是一个选项,我将按照上面的描述转移到侧边菜单上,并进行变化。

+0

可能的替代设计是将菜单定位在视频上:http://imgur.com/fjh3b – tiffon

2

我今天用最新的Flash Player版本11.6 + Chrome 27得到了这个问题。在某些计算机上,它正在工作,而其他几个则不是这样,这使得追踪问题非常困难,因为它不会发生在我身边。

我认为,这是一个Flash的bug,不镀铬,因为当我点击右键 - >放大,右击 - >缩小脏补丁消失

所以我环顾四周,一个肮脏的快速修复。

尝试cacheAsBitmap方法:不起作用(此修复方法适用于“黑色透明”的问题,但不适用于此问题)。

试过两帧图像方法:不工作没有(不知道为什么)

我终于找到一个办法来解决(多次测试):

由于脏白色斑块只显示当动画结束时我在舞台上放了一个透明的形状tween剪辑,让它永远运行。它的工作原理。

p/s:其实我试图添加这个作为评论而不是答案,但无法找到一种方法,这很奇怪。

+0

我的SWF中的chrome设置为wmode = transprent,并且我在透明PNG背后获得了黑色。这对我来说就是在一个特定的项目中发生的。我将PNG制作成影片剪辑,并将'cacheAsBitmap'设置为true,并为我修复了黑色背景 – Ronnie

0

我今天在我的Google Chrome 31.0.1650.63上玩过我的拼图游戏时遇到过这个问题。我通常不使用这个浏览器,因此闪光灯应该在每个浏览器中都完全一样,所以当我听到有关遍布游戏的白色矩形时感到有些惊讶。将wmode设置为不透明而不是透明可解决此问题。

0

在这里也一样,在我的录像机里。

只在镀铬胡椒闪光灯,并且只有当swf嵌入透明wmode。

今天,我已经找到了解决/解决办法/破解这一个我可以忍受的网站:

“如果你想绕过这个问题,一个简单的黑客,你可以得出一个影片剪辑是因为它的填充是透明的,所以它的'alpha'属性不会做任何事情,除非强制全屏重画来更新MovieClip的alpha属性,这是一个透明的填充。修复由于wmode透明导致的任何故障渲染问题

通过添加moueEnabled = false,确保hack不会干扰任何现有的鼠标事件“

import flash.display.MovieClip; 
import flash.events.Event; 

var redrawAll = new MovieClip(); 
redrawAll.mouseEnabled = false; 
redrawAll.graphics.beginFill(0x000000, 0); 
redrawAll.graphics.moveTo(0,0); 
redrawAll.graphics.lineTo(stage.stageWidth, 0); 
redrawAll.graphics.lineTo(stage.stageWidth, stage.stageHeight); 
redrawAll.graphics.lineTo(0, stage.stageHeight); 
redrawAll.graphics.endFill(); 
addChild(redrawAll); 

addEventListener(Event.ENTER_FRAME, function(e:Event){ 
    redrawAll.alpha = (redrawAll.alpha == 0)? 1 : 0;     
}); 

来源:https://code.google.com/p/chromium/issues/detail?id=173089#c12