动态加载和更改图形

时间:2011-08-28 12:15:03

标签: flash actionscript graphics

我想做这样的事情:

flash项目从硬盘加载任何矢量图形对象(该图形只有两种颜色),将一种颜色(对于ex#ff0000)更改为另一种颜色(对于ex#00ff00)并显示。

有可能吗?

如果是,这个图形对象的文件格式是什么?

1 个答案:

答案 0 :(得分:0)

如果要加载矢量图形,Flash中最简单的本机支持方式是加载SWF文件。该SWF文件可以在根显示列表中具有图形(在这种情况下,您可以简单地将加载的SWF作为MovieClip添加到显示列表中),也可以定义链接到类名的符号。在后一种情况下,您可以使用getDefinitionByName()获取类定义,然后实例化该类。

// After having loaded a SWF with class definition "MySymbol"
var symbolClass : Class = getDefinitionByName("MySymbol") as Class;
var symbol : Sprite = new symbolClass();

对于颜色转换,您可以使用ColorTransformColorMatrixFilter类来执行此操作,具体取决于两种颜色的相似性。否则,如果您坚持使用SWF加载方法,最简单的方法是在生成SWF文件时(例如在Flash Professional中)将图形的两个部分简单地分成两个单独的图层/显示对象,然后访问它们并分别转换它们。

var symbol : MovieClip = new symbolClass;
symbol.part1.transform.colorTransform = 
                        new ColorTransform(0, 0, 0, 1, 255, 0, 0);

此代码将访问实例名称为MySymbol的{​​{1}} MovieClip的子代,并将其颜色更改为红色。有关ColorTransform的详细信息,请参阅the documentation