在Flash CS4中,是否可以将带有ActionScript动画的电影导出为PNG序列?

3
我想知道是否有办法将“导出电影”作为“PNG序列”用于使用actionscript动画的电影。像这样导出对于普通动画非常有效,但对于我的当前项目不起作用。基本上,我正在使用数学创建图像,并希望能够将结果导出为png以在其他程序中使用,例如photoshop; 但由于图像是使用actionscript创建的,因此导出只显示空白图像。我只能拍摄结果的屏幕截图并费力地使用魔棒工具删除所有应该透明的区域吗?请告诉我还有更好的方法;谢谢!
5个回答

4
自从Flash CS3以来,您可以将您的ActionScript动画/形状导出为Quicktime格式。
1. 转到“文件 > 导出电影 > Quicktime” 2. 在Quicktime导出设置中选择“经过时间”而不是“当达到最后一帧”。 3. 选中“忽略舞台颜色(生成Alpha通道)”。
您应该能够在Photoshop Extended中导入Quicktime电影,自CS3版本以来拥有时间轴(“窗口 > 动画”)。在CS4中有一个“视频”工作区,应该有所帮助。
对我来说,这似乎是最简单的方法。
如果您想坚持使用更多的代码,可以尝试使用Lee Felarca's SimpleFLVWriter(它有点旧,因此请先测试),或者使您的SWF成为AIR应用程序,并使用Adobe AS3CoreLib中的PNGEcoder。

你可以将你的视频发布到 Vimeo 并分享链接吗?我想看看 ^_^

祝好, George


谢谢George;我正在尝试快速时间方法,它导出得非常完美;问题是透明区域现在不再透明了;它将其记录为swf的背景颜色。这意味着我必须像刚刚截屏一样手动使用魔棒工具去除它。有没有一种方法可以在保留透明度的同时做类似的事情? - KeithComito
哎呀,忘记了第三步,勾选“忽略阶段颜色(生成 alpha 通道)” :) - George Profenza
哦,哇,我真是个白痴;我一直在寻找这样的东西,但不知怎么就漏看了。无论如何,谢谢,这正是我需要的。顺便说一下,这实际上是为我正在开发的iPhone应用程序而做的,如果你感兴趣,请在iTunes商店上搜索Omegasoft公司,并寻找几周后出现的新应用程序;) 再次感谢!P.S. 我会给你点赞的,但我还没有足够的声望。 - KeithComito
谢谢这个方法。唯一的问题是我的精灵出现了一些奇怪的边缘效果。我错过了什么吗? - Rich
请点击此处查看图片:https://s3-ap-southeast-1.amazonaws.com/uploads-ap.hipchat.com/16506/136855/75ajucix01kqnms/astronaut-blackhole.png - Rich
@RichardTan 大纲看起来很奇怪。你有一个简单的.fla文件可以看到原始的样子吗?你也可以尝试使用文件 > 导出 > 导出电影,选择PNG序列作为格式?这将保留alpha通道,并且不应该显示压缩伪像(基于QuickTime压缩设置可能会出现)。 - George Profenza

2

1
使用ActionScript的Socket类。使用BitmapData类对舞台进行快照,并通过套接字将其发送到在计算机上运行的另一个脚本,其中图片被保存。我曾经使用Python做过类似的事情,效果非常好。对于动画,您可能无法获得最佳帧速率。但只要动画不是时间相关的,就应该没问题。
以下是如何执行此操作的示例(未经测试):
var sock:Socket = new Socket(yourIP, somePort);
var drawRect:Rectangle = new Rectangle(0, 0, 550, 400);
var bmp:BitmapData = new BitmapData(drawRect.width, drawRect.height, true, 0x00000000);
bmp.draw(stage, null, null, null, drawRect);
var pixels:ByteArray = bmp.getPixels(drawRect);
for each (var pixel in pixels) {
    sock.writeUnsignedInt(pixel);
}

请注意,您可能需要将最后一块放在“connect”事件中。还要注意,我仍在迁移到AS3,因此其中一些可能已过时。

嗯,这也很有趣...它必须是AS3吗?还是可以在AS2中完成(目前在AS2中,但如果需要的话可以切换)。 - KeithComito
是的,我最初是用AS2编写的(但我认为Socket将被替换为XMLSocket)。 - Ponkadoodle
我选择了上面的解决方案,但这个也看起来不错;感谢提供信息。我会点赞这个答案,但我还没有足够的声望。再次感谢。 - KeithComito

1
据我所知,导出影片剪辑不会运行任何ActionScript,它只会输出所有帧及其(静态)内容。
我真的不知道是否可以完成,您的截图解决方案似乎是唯一的选择..

0

这里有一个免费的工具可以使用,非常好用。 http://swfrenderer.kurst.co.uk/

它可以将任何swf文件转换为png序列。 优点:

  1. “Quicktime方法”存在一个问题,即默认应用“Multiple”和黑色背景。
  2. 您不必处理任何内部文件,如.mov。

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