【问题标题】:Is "Export Movie" as PNG Sequence for movies with actionscript animation possible in Flash CS4?在 Flash CS4 中是否可以将带有动作脚本动画的电影“导出电影”为 PNG 序列?
【发布时间】:2010-02-02 18:34:48
【问题描述】:

我想知道是否有任何方法可以使用“导出电影”作为“PNG 序列”来处理使用 actionscript 为对象设置动画的电影。像这样导出对于普通动画来说只是花花公子,但它不适用于我当前的项目。基本上我正在使用数学创建图像,我希望能够将结果导出为 png 以用于其他程序,如 photoshop;但由于图像是使用 actionscript 创建的,因此导出仅显示空白图像。我是否只需要对结果进行截图并使用魔杖工具繁琐地删除所有应该透明的区域?有人请告诉我有更好的方法;谢谢!

【问题讨论】:

    标签: flash actionscript png export sequence


    【解决方案1】:

    从 Flash CS3 开始,您可以将动作脚本动画/形状导出为 quicktime。

    1. 转到 文件 > 导出影片 > Quicktime
    2. 在 Quicktime 导出设置中选择 After time elapsed 而不是 When last frame
    3. 勾选忽略舞台颜色(生成 Alpha 通道)

    您应该能够在 Photoshop Extended 中导入 Quicktime 影片,因为 CS3 版本具有时间轴(Window > Animation)。在 CS4 中,有一个 视频 工作区应该会有所帮助。

    这对我来说似乎是最简单的方法。

    如果你想坚持更多的代码,你可以试试Lee Felarca's SimpleFLVWriter(虽然它有点旧,所以先测试一下)或者把你的swf变成一个AIR应用程序,然后使用Adobe AS3CoreLib的PNGEcoder。

    你能把你的视频发布到 vimeo 上并分享链接吗(我想看 ^_^)?

    祝你好运, 乔治

    【讨论】:

    • 谢谢乔治;我正在尝试 quicktime 方法,它完美地导出了;问题是透明区域现在不透明;它将它记录为 swf 的背景颜色。所以这意味着我必须像截屏一样做同样的事情;手动棒工具出来。有没有办法在保持透明度的同时做类似的事情?
    • 哎呀,忘了第 3 步勾选忽略舞台颜色(生成 Alpha 通道):)
    • 哦,哇,我是个白痴;我正在寻找类似的东西,不知何故我只是略过它。反正;谢谢,这正是我需要的。顺便说一句,这实际上是针对我正在开发的 iPhone 应用程序,所以如果您有兴趣在 iTunes 商店搜索 Omegasoft 公司并寻找几周后出现的新应用程序;)再次感谢!附:我会赞成你的回答,但我还没有足够的代表。
    • 感谢这个方法。唯一的事情是我的精灵上出现了一些奇怪的边缘。我错过了什么吗?
    【解决方案2】:

    刚刚发布了一个将 SWF 导出为 PNG 序列的 AIR 应用程序:http://swfrenderer.kurst.co.uk/ - 希望对您有所帮助...

    【讨论】:

      【解决方案3】:

      据我所知,导出影片剪辑不会运行任何动作脚本,它只会输出所有帧及其(静态)内容。

      我真的不知道它是否可以做到,你的截图解决方案似乎是唯一的..

      【讨论】:

        【解决方案4】:

        使用 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);
        }
        

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

        【讨论】:

        • 嗯;这也很有趣.. 它必须是 AS3 还是你也可以在 AS2 中执行此操作(目前在 AS2 中,但我想可以根据需要切换。
        • 是的,我最初是在 AS2 中这样做的(但我认为 Socket 会被 XMLSocket 取代)。
        • 我采用了上面的解决方案,但这个似乎不错;谢谢(你的)信息。我会赞成这个答案,但我还没有足够的代表。再次感谢。
        【解决方案5】:

        这是一个免费的工具,非常好用。 http://swfrenderer.kurst.co.uk/

        它可以将任何 swf 转换为 png 序列。 好处:

        1. “quicktime 方法”存在默认应用深色背景的“Multiple”的问题。
        2. 您不必处理任何内部文件,例如 .mov。

        【讨论】:

          猜你喜欢
          • 2011-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-18
          • 1970-01-01
          相关资源
          最近更新 更多