我想做这样的事情:
flash项目从硬盘加载任何矢量图形对象(该图形只有两种颜色),将一种颜色(对于ex#ff0000)更改为另一种颜色(对于ex#00ff00)并显示。
有可能吗?
如果是,这个图形对象的文件格式是什么?
答案 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();
对于颜色转换,您可以使用ColorTransform
或ColorMatrixFilter
类来执行此操作,具体取决于两种颜色的相似性。否则,如果您坚持使用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。