ADC推荐:Flash快速入门:AS3编程-使用Flash Player 10的颜色修正功能

本文由ADC中文站推荐

计算机显示器、打印机和手机基于使用的不同技术对颜色的显示方式各不相同。 目前,大多数浏览器根据其主设备的本机颜色特性来确定如何显示颜色。 然而,许多用户使用大量设置来校正其显示器,然后基于这些设置生成一个配置文件(profile)。 建立配置文件的标准格式可以创建ICC(International Color Consortium,国际颜色联合会)颜色配置文件,它能够表示一个显示器的颜色特性。 应用程序可以使用这些ICC配置文件来调整颜色以便补偿显示器的颜色特性。 使用特殊设备颜色配置文件来调整颜色被称为Adobe Flash Player的颜色修正(color correction),而使用颜色配置文件的过程被称为颜色管理(color management)。


Adobe Flash Player 10 (及以后版本) 允许内容开发人员指定SWF文件是否使用本地设备的显示器颜色配置文件。 如果你利用 Adobe Flash Professional为Flash Player 10开发内容,则你可以为你的SWF文件提供颜色修正功能。 这样,当在一个设备上显示SWF 文件 (正如一个桌面计算机显示器使用该显示器的颜色配置文件一样) 以及使用设备的颜色配置文件打印SWF文件时,二者的颜色是相同的。

目录

要求

为了充分利用本文,您需要以下软件和文件: Flash Player

Flash Professional

范例文件:

预备知识
具有使用Flash 制作工具和 ActionScript 3.0的一般经验。 此外,了解颜色管理知识也很重要。
如需获得更多信息,请阅读下面白皮书:Color consistency and Adobe Creative Suite*(PDF, 2 MB)。

FLASH PLAYER如何使用颜色修正功能

在默认情形下,Flash Player 能够理解使用sRGB gamma(g) 2.2 颜色空间*(sRGB 是"standard red, green, and blue"的首字母缩写词)的RGB颜色。 然而,该颜色空间不能定义在显示器屏幕上绘制的颜色。 你需要打开Flash Player 10的颜色修正功能以便定义在显示器上绘制的颜色。 当图像不使用sRGB时,它通常具有嵌入配置文件,该文件可以告诉应用程序如何将图像转变为sRGB。

注:如果你将带有嵌入配置文件的图像导入至 Flash Professional中,该颜色配置文件将被删除,因此在Stage上不能使用嵌入颜色配置文件进行图形显示操作。


Flash Player 10 (及以后版本) 具有一个ActionScript API ,该API允许你设置SWF文件是否使用本地设备的颜色配置文件。 该新的API 已经包含于ActionScript 3.0 Reference for the Adobe Flash Platform的flash.display.Stage.colorCorrection*部分。 可以使用新的ActionScript API 来确定SWF 是否使用标准的 sRGB 颜色配置文件或 本地设备的颜色配置文件。
另外,该新的API还包含一个Stage.colorCorrectionSupport 属性,该属性能够真正现实下列两个目的:

  • 确定是否安装显示器颜色配置文件Stage.colorCorrectionSupport属性是只读属性,它可以表示SWF文件是否被设置为使用显示器的颜色配置文件。 如果当前系统没有安装或不支持显示器配置文件功能,则相应的Stage.colorCorrectionSupport属性应该是unsupported并且不能启动颜色修正功能。
  • 确定主机(host)(通常为浏览器) 当前是否被设置为使用颜色管理功能。该属性可以被设置为defaultOn或defaultOff(根据Stage.colorCorrection属性的设置)。 当主机正在使用颜色管理时,相应的值应该是defaultOn,并且设计人员能够使用这一信息并且基于浏览器中的开关状态来设置颜色管理功能的开关。 通过使用颜色管理功能可以设置浏览器和Flash Player显示相同颜色。 例如,如果背景HTML颜色必须与SWF中的颜色匹配,则颜色管理功能非常有用。

注:目前,Linux/Unix系统或颜色分辨率小于32-bit的系统不支持SWF文件颜色修正功能。 在这些系统中,相应的Stage.colorCorrectionSupport属性值总是unsupported。

当开启颜色管理功能时,相应的颜色将从sRGB转换为显示器的颜色配置文件,因此,用户看到的在显示器中定义为 sRGB的颜色与真正的sRGB颜色相同。 如果颜色管理转换功能没有开启,则颜色可以在显示器的颜色空间中显示,并且在不同显示器上显示的颜色效果不同。 此外,Flash Player总是对整个Stage的颜色进行更正,因此颜色配置文件适用于一个SFW文件中的所有图像。你不可以有选择地对SWF文件的部分内容,而不对其它内容,设置使用颜色修正功能。


例如,该范例文件包含一个具有嵌入颜色配置文件的图像文件(Peppers_withGBRprofile.jpg) 。 当你在一个支持GBR颜色配置文件的浏览器中打开它时,你将看到黄色、红色、绿色和橙色的4个胡椒。 否则,你将看到的胡椒为绿色和蓝色阴影。 此外,该范例文件还包含另一个具有内置RGB颜色配置文件的图像 (Peppers_RGB_8C.jpg) —这是在默认情形下Flash Professional支持的颜色管理。 比较下列相同胡椒的两副图像(参见图1)。


具有 GBR颜色配置文件的图像 (左) 和具有RGB 颜色配置文件的图像(右)。


1.具有 GBR颜色配置文件的图像 (左) 和具有RGB 颜色配置文件的图像(右)。 (由 Robert Stevenson拍摄。)


注:尽管Flash Player颜色更正功能可以用于多显示器配置,但只有主显示器的颜色配置文件能够应用于SWF文件。
Flash Player颜色修正功能的确存在一些不足之处。 你不能访问设备的颜色配置文件,并且不能改变颜色配置文件或在ActionScript中进行颜色转换。 使用当前配置文件可以自动进行所有颜色转换操作;当颜色修正属性被禁止或不可用时,颜色转换将被忽略。

  1. lblHasCM.addEventListener(Event.ADDED, addHandler);
  2. btnToggle.addEventListener(MouseEvent.CLICK, doToggle);
  3. function addHandler(add_event:Event) {
  4. if (stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON || stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) {
  5. lblHasCM.text = "stage.colorCorrectionSupport: " + stage.colorCorrectionSupport;
  6. }
  7. else {
  8. lblHasCM.text = "stage.colorCorrectionSupport: unsupported";
  9. }
  10. }
  11.  
  12. function doToggle(e:MouseEvent) {
  13. // don't try to toggle if color management is not supported
  14. if(stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON ||
  15. stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) {
  16. switch(stage.colorCorrection) {
  17. case ColorCorrection.ON:
  18. stage.colorCorrection = ColorCorrection.OFF;
  19. lblCMEnableState.text = "State: " + stage.colorCorrection;
  20. break;
  21. case ColorCorrection.OFF:
  22. stage.colorCorrection = ColorCorrection.DEFAULT;
  23. lblCMEnableState.text = "State: " + stage.colorCorrection;
  24. break;
  25.  
  26. case ColorCorrection.DEFAULT:
  27. stage.colorCorrection = ColorCorrection.ON;
  28. lblCMEnableState.text = "State: " + stage.colorCorrection;
  29. break;
  30.  
  31. default:
  32. lblCMEnableState.text = "Error.";
  33. break;
  34. }
  35. }
  36. else {
  37. lblCMEnableState.text = "Color Correction is not supported.";
  38. }
  39. }

ActionScript Albert Chang提供,他是Flash Player的软件质量保证工程师。

结果

点击拨动按钮可以通过colorCorrection的on/off/default状态看到 SWF 文件循环情况。 如果Stage.colorCorrectionSupport的属性为unsupported,则SWF 文件不能读取显示器正在使用的配置文件:

由于有些浏览器现在可以支持显示器颜色配置文件 (例如 Safari 3和 Firefox 3),因此,你将看到在支持颜色修正配置文件的浏览器和不支持颜色修正配置文件的浏览器之间运行范例SWF文件的不同之处。 当Stage.colorCorrection属性的值是default时,你可以看到这一差异。 此外,你可以在你的系统中加载不同颜色配置文件以便查看范例中每个配置文件的效果。
Stage.colorCorrection属性支持下列两个选项:

  • 发送不带调整量的颜色至显示器 (与Flash Player早期版本的方式相同)。 正如在SWF文件中编码的那样,不带调整量的颜色将被直接发送至显示器;RGB 值为127,127,127,它将以数值127,127,127的形式发送至显示器。 如果显示器具有红色特征,并且颜色相对较暗,则SWF文件看起来为暗红色。
  • 使用显示器的颜色配置文件发送颜色至显示器以便调整颜色值。 如果显示器具有红色特征,则通过将on值赋给Stage.colorCorrection属性,可以调整颜色以便对这一红色特征进行补偿;此时,RGB值 127,127,127 将以 125,127,127 的形式发送给显示器。 使用sRGB颜色空间的RGB的等同值是 "中性色调" ,并且颜色管理的目标是在显示器上看到中性色调,即使显示器具有红色特征。

注:某些支持显示器配置文件的浏览器在默认情形下关闭颜色管理功能。 请阅读你的浏览器帮助文档以便了解更多相关信息。

测试范例文件

该范例文件的zip文档包括下列文件:

  • colorcorrection.fla:范例的Flash Professional CS4文件。
  • colorcorrection_CS5.fla:范例文件的Flash Professional CS5 版本。
  • Peppers_withGBRprofile.jpg:具有嵌入GBR颜色配置文件的图像文件。
  • Peppers_RGB_8C.jpg:具有嵌入RGB颜色配置文件的图像文件。

按照下面步骤测试范例文件:

  • 下载链接至上面的范例文件。
  • 在Flash Professional中打开FLA文件。
  • 选中 Control > Test Movie菜单选项 (或按下 Ctrl+Enter键)。 或者,使用 File > Publish菜单选项发布文件并且在浏览器中查看它。

了解代码

范例的ActionScript代码包含于每个范例 FLA文件中:

  • 下载链接至上面的范例文件。
  • 选中 Window > Actions菜单选项 (或按下 F9键) 以便打开Actions面板和查阅 ActionScript。

本文没有为在应用程序中使用的所有ActionScript类提供描述。 如需了解更多信息,参见ActionScript 3.0 Reference for the Adobe Flash Platform*

相关的Flash 快速入门文章

关于作者

Dave Jacowitz公职于Adobe的平台文档团队,参与撰写 《Programming ActionScript 3.0 》和《 ActionScript Language Reference manuals 》等。在没有Flash、Flex或ActionScript的业余时间,Dave喜欢弹吉他、和家人旅游、滑雪和露营。他非常喜欢薄荷巧克力加冰淇淋。

ADC中文站原文地址: http://www.adobe.com/cn/devnet/flash/quickstart/color_correction_as3/index.html

riadevID: 
您给予的分值: None 平均分: 5.5 ( 177 票)

发表新评论

  • 网页地址和电子邮件地址将会被自动转换为链接。
  • 行和段被自动切分。
  • 您可以使用下面的标签来高亮显示您的评论内容: <code>, <blockcode>. 可以使用"[foo]".旁边显示标签样式 "<foo>" PHP代码可以用这样的区块来包含<?php ... ?> or <% ... %>

更多格式化选项信息

验证区域
系统验证:请回答下面的问题