2011-08-20 31 views
2

我几乎看到所有相关的线程几乎整个互联网。而我会仍然感到困惑.. I M工作的一个绘图的应用程序(挠曲/空气)保存movieClip到磁盘作为瑞士法郎在空气中,然后再次阅读它

1- where user loads image file,(bitmapdata > bitmap > movieclip base layer) 
2- add layer (new sprite > movieclip "second object in display list") 
3- draw on this sprite (graphics.draw circle/etc, lot of other details etc) 
4- usr can add more layers etc, name layers etc ... all sprites are of same size as bitmap 

Q1。现在我想将这个主要的movieClip(UIComponent的一部分)保存为swf文件。所以用户可以再次阅读并继续工作。就像我用photoshop做的一样。

评论:我知道这听起来过于通用,要问这样详细的事情。所以请耐心...... 我一直在摆弄byteArray。和空气文件对象,flash.net.fileReference等... Q2。 (主要问题),我不想将绘制的精灵转换为bitmapdata,然后做bytearray。 (在我看来)它会将所有东西都转换成像素,而我并不想要。 Q3。是否有一些自动神奇的线,将做任何事情..(保存绘制的矢量/形状)的精灵是? (更少机会)。如果我可以将swf作为movieClip读取,我可以检查图层和其他一切的精灵...问题是将此作为swf文件写入磁盘。

请分享你的想法,并随时进行指导,在所有可能的方向.. 在此先感谢您的宝贵时间..

回答

0

我觉得这两个答案有用。随着时间的推移,我意识到在这两种情况下,这可能比我能处理的工作要多。与此同时,我也在测试其他像素基础方法。所以我最终做出了像素方式的决定。用户可以使用透明度将图层保存为png文件。

如果有人(其他读者)来到这篇文章,我想很快得出结论,我发现真正有价值的绘图库名为“涂鸦”as3。它几乎做了80%的事情,我希望这样做。所以我正在使用它并根据我的需要调整它。非常感谢和尊重所有伟大的人从他们的宝贵时间回复。

0

我在想最干净的解决这个问题是使用SVG(可能是EPS)。我不熟悉任何将绘制的矢量对象转换为SVG的库,但由于SVG只是一个XML文件,因此您可以研究SVG体系结构并创建自己的文件:W3C - Scalable Vector Graphics (SVG) 1.1 (Second Edition)。以下开源项目可能会帮助您编写一个,也可以用于将SVG读取到Flash中:New Flex and Flash SVGWeb Components

不太干净,也许更复杂的方法来解决这个问题可能是写你自己的SWF,就像你提到的那样。为了做到这一点,您必须在运行时生成.swf文件,您可以使用NativeProcess从Flex SDK向MXMLC传递参数(即包含图形信息的ActionScript文件,包含名称的子图层等) 。

1

在理想的世界中,您只需写出 YourByteArray.writeObject(YourCanvasSprite); 但是这并不起作用,因为serialize只能处理可读写的数据(和公共的)。所以你需要重新创建图形。您可以通过使用IGraphics()来简化这些操作,因为它们应该可以序列化。因此,如果您继承Sprite子类并存储“绘图命令”和参数,并让该对象具有恢复功能,则应该可以将其保存为byteArray。尽管如此,它还远不止一行,但可能比制作和阅读SVG容易一点。

+0

+1。你不需要复杂的外部格式。只需以任何合适的格式(二进制或xml,如果你喜欢)转储所需的信息,并设法将其读回。 – alxx

+0

这很酷。另一种方法可能是保存PDF并将其读回。 –

相关问题