我正在做一些 AS3 中的生成艺术项目,并且一直遇到位图质量限制的问题。它们不像矢量那样可扩展或可编辑。是否有一个类或库可用于获取 Sprite 对象的图形并将它们导出为 SVG 格式?其他常见的矢量格式也是可以接受的。
使用示例也将不胜感激。
编辑:请注意,我使用的是 FlashDevelop 而不是 Adobe Flash CS。我正在寻找一个程序化的解决方案。
我正在做一些 AS3 中的生成艺术项目,并且一直遇到位图质量限制的问题。它们不像矢量那样可扩展或可编辑。是否有一个类或库可用于获取 Sprite 对象的图形并将它们导出为 SVG 格式?其他常见的矢量格式也是可以接受的。
使用示例也将不胜感激。
编辑:请注意,我使用的是 FlashDevelop 而不是 Adobe Flash CS。我正在寻找一个程序化的解决方案。
我正在尝试自己导出到 svg,发现很难找到 svg 导出器有点令人惊讶,因为它几乎只是 xml。
不过,我确实遇到了xgraphics,它可能会有所帮助。
实际上,您只需要 SVG 类。它试图模仿 as3 中的图形类,但我发现我需要添加一个绘制多边形类。
/**
* graphics
*/
public function drawPolygon($points:Array):void {
var $pointsString:String = "";
for each (var $pt:Point in $points) {
$pointsString += (" " + $pt.x +"," + $pt.y);
}
var xml:XML = new XML('<polygon points="' + $pointsString + '" fill="' + uintToCSS2Color(fillColor) + '" stroke="' + uintToCSS2Color(lineColor) + '" stroke-width="' + strokeWidth + '"/>');
this.xml.appendChild(xml);
}
这允许我通过传递点数组来制作三角形和其他形状
如果您正在使用图形 API(和/或使用带有矢量艺术的预制精灵)进行生成艺术,那么最简单的方法是将它们打印为 PDF。这将保留矢量,您可以稍后导入到 Illustrator 之类的东西中进行最后的润色。我以这种方式完成了我的游戏的屏幕截图,并且效果很好。裁剪可能存在一些问题,但如果您调整事物的缩放比例,这些问题应该是可以避免的。
正如grapefrukt 建议的那样,PDF 也是我的第一个。
如果您不想将 print 作为 pdf 使用(这是一种有点笨拙的导出方式),那么还可以使用 alivepdf。
另一种选择是使用DEGRAFA库,但我认为您首先需要使用该库生成图形,但它会让您能够使用 SVG 格式导入和导出。
看看AS3 SWF Shape Export -SVGhapeExporter
应该做得很好(示例代码在这里)。
不幸的是,一旦采用位图格式,您就不能完美而轻松地将光栅图形反向工程为矢量。有一些工具试图完成这项任务,但结果好坏参半。Flash 包含一个内置的“跟踪位图”功能,该功能将执行此任务,选择图像后,转到“修改 > 位图 > 跟踪位图”。您将需要使用不同的选项来尝试并获得最佳结果,但即便如此,它也可能需要手动调整以清理伪影和故障。
本教程对每个选项的作用进行了相当好的概述。
查看这篇关于在运行时将 Flash 图形保存为图像文件的文章。它还有一个现场演示。
我之前自己回答过这个问题,但是我自己尝试了这个工具并且没有太多运气,我去寻找不同的东西,并在 Wonderfl 上找到了这个名为SWF2SVG的项目。它采用上传的 SWF 并使用as3swf 库将其转换为 SVG 路径。
SWF2SVG 工具链接: http ://wonderfl.net/c/sPjI