AS3 - 将精灵导出或保存为SVG或其他矢量格式

4

我正在AS3中开发一些生成艺术项目,但是我始终遇到位图的质量限制问题。它们不能像矢量图那样可缩放或可编辑。是否有一个类或库可以用来将Sprite对象的图形导出为SVG格式?其他常见的矢量图格式也可接受。

如果能提供使用示例会更好。

编辑:请注意,我正在使用FlashDevelop而不是Adobe Flash CS。我正在寻找一种编程解决方案。

7个回答

4
我正在尝试自己导出SVG,并发现很难找到一个SVG导出器,因为它基本上只是XML。不过我找到了xgraphics,这可能会有所帮助。实际上,你只需要SVG类。它试图模仿AS3中的Graphics类,但我发现我需要添加一个绘制多边形的类。
    /**
     * 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);
    }

这使我能够通过传递一个点的数组来制作三角形和其他形状。

2

如果您正在使用图形 API 进行生成艺术 (和/或使用预制的矢量艺术精灵) ,最简单的方法是将其打印为 PDF。这将保留矢量图形,您稍后可以导入到像 Illustrator 这样的软件中进行最终处理。我以这种方式对我的游戏进行了屏幕截图,效果非常好。可能会有一些裁剪问题,但如果调整事物的缩放比例,则应该可以避免这些问题。


这很有帮助,虽然我非常希望用编程的方式来实现它。如果没有人有一个可以做到这一点的库,也许我应该自己制作一个。 - Martin

1

正如grapefrukt所建议的那样,PDF也是我的第一个想法。

如果您不想使用打印为PDF(这是一种有点笨拙的导出方式),还可以尝试alivepdf

另一个选择是使用DEGRAFA库,但我认为您需要使用该库生成图形,但它将使您能够使用SVG格式进行导入和导出。


0

0

我已经知道如何在AS3中保存基于像素的图像。我需要一种保存精灵向量的方法,最好是以.svg格式保存。 - Martin

0

这将仅导出SWF中包含的符号,而不是在运行时生成的图形。尽管如此,它仍然非常棒! - grapefrukt

0

不幸的是,一旦以位图格式保存,就无法完美而轻松地将光栅图形逆向工程为矢量图。虽然有一些工具试图完成这个任务,但其效果参差不齐。Flash包含内置的“跟踪位图”功能,可执行此任务。选择图像后,转到“修改 > 位图 > 跟踪位图”。您需要尝试不同的选项以尝试获得最佳结果,但即使如此,可能仍需要手动调整来清理伪像和故障。

本教程对每个选项将要执行的操作有一个相当好的概述。


我不是在尝试将位图转换为矢量图,而是在尝试将包含矢量图的精灵保存为矢量图。由于大多数情况下使用位图可以更快地显示,因此位图用于显示。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接