actionscript-3 - Flash AS3 stage.colorCorrectionSupport始终会解析为不支持-stage.colorCorrection发生了什么?

标签 actionscript-3 flash apache-flex colors

两年半前,Adobe宣布FlashPlayer 10将支持色彩校正。不可否认,该实现实际上是最基本的,因为它将始终假定所有内容均为sRGB编码,并将该内容转换为系统上正在使用的当前显示配置文件。 This was the introduction blog post by John Nack.

激活此功能所需的所有AS3是:

stage.colorCorrection = ColorCorrection.ON;


...是的,您确实需要阶段访问权限才能工作,不,这不是问题。

因此,当它是新的时,我写了一个包装器来在Internet Explorer和Chrome中显示图像,这样它们就可以为具有扩展色域显示的人们正确渲染,并且也将其用于基于Flash的视频播放器中,具有相同的目的。
今天再回头,我发现我所知道的已经行不通了。同时发生的变化是FlashPlayer的版本,也很可能是浏览器的版本。我在所有这些不同的浏览器版本,Flash Player版本上都尝试了OS X,Win 7,Win XP,icc v2和icc v4显示配置文件,但无济于事。
您会说我一定做错了,但 example page Adobe published a while later,我确定肯定已经做过,但现在也失败了。如果您查看Flash小程序,会发现它说:

stage.colorCorrectionSupport: unsupported


如果表示您的系统支持,请注释操作系统,浏览器和版本以及FlashPlayer版本。否则,我正在寻找有关此功能发生情况的任何线索。

At least the Adobe staff participating on their boards seems to be clueless. Quote:因为在大多数主流浏览器中默认都禁用了此功能,所以我认为这是一项试验性的Web标准提案,该提案已失效或其他原因。我们在这里并没有做很多事情,这主要取决于浏览器向我们传递正确的数据并进行正确的颜色转换数学。我们离事件链还很远。

我知道一个事实,这在FlashPlayer的演进过程中是可行的。因此,以下内容可能有助于解决问题:


Adobe示例仍然适合那些有兴趣看的人吗?
如果这是关于过时的浏览器功能的,为什么它不能再在旧的浏览器上工作?
它停止在任何特定的FlashPlayer上运行了吗? (我尝试了几次,但再也无法使用了)


笔记:


由于某些原因,颜色校正不适用于wmode透明(但不透明是可以的)
当使用alpha过渡过渡时,色彩校正最初有时也会失败


更新:当wmode设置为“ window”时,该功能似乎仍然可以使用。当然,这是非常有限的。如果页面上有灯箱等,则Flash内容将始终停留在其上方,等等-不好。
使用wmode =“ window”,该示例也适用于OSX 10.6(迄今为止我测试过的唯一版本)和Win XP 32位。它在我尝试过的所有Win 64位版本上仍然失败,但是那些系统具有多个屏幕,所以也许我不得不在单个屏幕上重试,因为下面的第一条评论表明它可以在Win 7 64上运行。
在有效的系统上,我尝试使用Firefox,Safari,Internet Explorer和Chrome。除使用Chrome浏览器时,内置Flash播放器始终给出stage.colorCorrectionSupport: unsupported而不显示内置FP,并且使用系统的Flash播放器的工作方式与其他浏览器相同,所有操作均相同。

因此,上面的问题可以缩小到为什么这对于其他任何wmode尤其是“ opaque”都不起作用的原因-以前确实起作用,这是Adobe在其示例文件的在线版本中使用的方式...

更新2:Flash Player较新的wmodes“ gpu”和“ direct”使该功能在上面命名为wmode“ window”的系统/浏览器上失败。

更新3:找到wmode =“ window”角度后,我决定在我最初引用的Adobe论坛上发布后续文章。导致整个问题被确认为Flash Player中的错误,网址为:https://bugbase.adobe.com/index.cfm?event=bug&id=3596843因此,我想对于stage.colorCorrection发生了什么问题没有答案,但希望它会解决自己的问题。

更新4:好的这是必不可少的愚蠢...当我说我想起wmode“ opaque”在出错之前已经起作用了。经过进一步的审查后,我发现很久以前我已将wmode="normal"放入我的一个JS文件中,并且由于normal不存在,较早版本的Flash Player使用了标准的wmode window,所以这才可以恢复然后。更现代的Flash Player具有其他默认设置,例如direct色彩管理失败,因此对我来说失败了。因此,我认为这除了“ window”之外,从未与其他任何wmode一起使用,但是我很好奇未来可能会带来什么...

最佳答案

(是的,这是一个老问题,但是我是Flash Player 10的产品经理,所以我想我会回答)

它适用于窗口模式,因为Flash Player在浏览器中获取了矩形并获得了对渲染堆栈的完全控制,并且不必处理其颜色状态未知的项目。

当您切换到透明的wmode之类的东西时,您将进入一个非常疯狂的来回过程,将其上方和下方的渲染元素进行合成。当您进入wmode GPU时,渲染堆栈将大部分移交给GPU(毫不奇怪)。在这两种情况下,Flash Player都会失去对渲染堆栈的控制,因此无法进行颜色校正。

Flash Player 10中使用此功能的主要原因是要在Flash Player中启用交互式电子发布(例如inDesign SWF导出),以及对可能有助于面向打印的工具链的应用程序的支持。

关于actionscript-3 - Flash AS3 stage.colorCorrectionSupport始终会解析为不支持-stage.colorCorrection发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644982/

相关文章:

图像作为 Actionscript 3 中的变量

javascript - Chrome 通知/权限栏 - 检测是否可见

javascript - 如何在 Flash 10 "without"用户交互中打开文件对话框

actionscript-3 - Flex 4.5,如何创建通用换肤库并动态更改 AIR 应用程序的主题?

apache-flex - Flex 截断按钮标签

actionscript-3 - TextField() - 如何防止鼠标选择

java - 如何通过依赖注入(inject)和垃圾收集来防止循环引用?

css - Safari 4 的 Flash 问题

c - 在 main 中定义和初始化 flask 变量

apache-flex - 弹性 : Updating a Tree control