22 November 2010
具有使用Flash 制作工具和 ActionScript 3.0的一般经验。 此外,了解颜色管理知识也很重要。
如需获得更多信息,请阅读下面白皮书:Color consistency and Adobe Creative Suite (PDF, 2 MB)。
中级
计算机显示器、打印机和手机基于使用的不同技术对颜色的显示方式各不相同。 目前,大多数浏览器根据其主设备的本机颜色特性来确定如何显示颜色。 然而,许多用户使用大量设置来校正其显示器,然后基于这些设置生成一个配置文件(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 能够理解使用 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并且不能启动颜色修正功能。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)。
注:尽管Flash Player颜色更正功能可以用于多显示器配置,但只有主显示器的颜色配置文件能够应用于SWF文件。
Flash Player颜色修正功能的确存在一些不足之处。 你不能访问设备的颜色配置文件,并且不能改变颜色配置文件或在ActionScript中进行颜色转换。 使用当前配置文件可以自动进行所有颜色转换操作;当颜色修正属性被禁止或不可用时,颜色转换将被忽略。
lblHasCM.addEventListener(Event.ADDED, addHandler);
btnToggle.addEventListener(MouseEvent.CLICK, doToggle);
function addHandler(add_event:Event) {
if (stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON || stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) {
lblHasCM.text = "stage.colorCorrectionSupport: " + stage.colorCorrectionSupport;
}
else {
lblHasCM.text = "stage.colorCorrectionSupport: unsupported";
}
}
function doToggle(e:MouseEvent) {
// don't try to toggle if color management is not supported
if(stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON ||
stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) {
switch(stage.colorCorrection) {
case ColorCorrection.ON:
stage.colorCorrection = ColorCorrection.OFF;
lblCMEnableState.text = "State: " + stage.colorCorrection;
break;
case ColorCorrection.OFF:
stage.colorCorrection = ColorCorrection.DEFAULT;
lblCMEnableState.text = "State: " + stage.colorCorrection;
break;
case ColorCorrection.DEFAULT:
stage.colorCorrection = ColorCorrection.ON;
lblCMEnableState.text = "State: " + stage.colorCorrection;
break;
default:
lblCMEnableState.text = "Error.";
break;
}
}
else {
lblCMEnableState.text = "Color Correction is not supported.";
}
}
ActionScript 由 Albert Chang提供,他是Flash Player的软件质量保证工程师。
结果
点击拨动按钮可以通过colorCorrection的on/off/default 状态看到 SWF 文件循环情况。 如果Stage.colorCorrectionSupport的属性为unsupported,则SWF 文件不能读取显示器正在使用的配置文件:
由于有些浏览器现在可以支持显示器颜色配置文件 (例如 Safari 3和 Firefox 3),因此,你将看到在支持颜色修正配置文件的浏览器和不支持颜色修正配置文件的浏览器之间运行范例SWF文件的不同之处。 当 Stage.colorCorrection属性的值是default时,你可以看到这一差异。 此外,你可以在你的系统中加载不同颜色配置文件以便查看范例中每个配置文件的效果。
Stage.colorCorrection属性支持下列两个选项:
on值赋给Stage.colorCorrection属性,可以调整颜色以便对这一红色特征进行补偿;此时,RGB值 127,127,127 将以 125,127,127 的形式发送给显示器。 使用sRGB颜色空间的RGB的等同值是 "中性色调" ,并且颜色管理的目标是在显示器上看到中性色调,即使显示器具有红色特征。注:某些支持显示器配置文件的浏览器在默认情形下关闭颜色管理功能。 请阅读你的浏览器帮助文档以便了解更多相关信息。
该范例文件的zip文档包括下列文件:
按照下面步骤测试范例文件:
范例的ActionScript代码包含于每个范例 FLA文件中:
本文没有为在应用程序中使用的所有ActionScript类提供描述。 如需了解更多信息,参见A ActionScript 3.0 Reference for the Adobe Flash Platform。
相关的Flash 快速入门文章