【问题标题】:How to overlay TWO images and save them into AN image? (Flash CS5)如何叠加两个图像并将它们保存到一个图像中? (闪光 CS5)
【发布时间】:2013-03-18 09:55:43
【问题描述】:

我是 Flash 的菜鸟。而且我不是程序员。使用 Photoshop(图像设计)就好了。

这是我的问题。我找到了一个简单的绘图应用程序并对其进行了修改,只有界面,而不是编码。

它提供了一个“保存按钮”,可以将绘图(在 MovieClip 上绘制)保存到磁盘驱动器中。然后我对其进行了修改,在 MovieClip 上放置了另一层 Graphic。但是当我尝试保存它时,它只会将 MovieClip 保存为 .png 图像。我想要的是,它将 MovieClip 以及在其上分层的 Graphic 保存到一个 .png图片。我该怎么做?

如果我将代码提供给“保存按钮”可能会更有帮助?

** /* 保存 */

    private function export():void
    {
        var bmd:BitmapData = new BitmapData(600, 290);

        bmd.draw(board);

        var ba:ByteArray = PNGEncoder.encode(bmd);


    private function completeHandler(event:Event):void {
        var loader:URLLoader = URLLoader(event.target);
        trace("completeHandler: " + loader.data);
    }


    private function saveSuccessful(e:Event):void
    {
        saveDialog = new SaveDialog();

        addChild(saveDialog);

        saveDialog.closeBtn.addEventListener(MouseEvent.MOUSE_UP, closeSaveDialog);
    }

    private function closeSaveDialog(e:MouseEvent):void
    {
        removeChild(saveDialog);
    }

    private function save(e:MouseEvent):void
    {
        export();
    }**

编辑:我放了 'bmd.draw(topLayer);'在第一次 draw() 调用下,但是当我发布预览时,它显示“访问未定义的属性 topLayer”。我首先检查了它的属性,它提到了这个“实例:topLayer”,它是一个图形。

【问题讨论】:

    标签: image flash overlay flash-cs5


    【解决方案1】:

    检查代码。在某处应该有一个构造fileReference.save(someOtherName),可能与fileReference 有不同的名称,但它会在附近声明为FileReference=new FileReference()。然后,跟踪上面的someOtherName,它应该是另一个变量PNGEncoder.encode() 的输出,它的类型应该是BitmapData。找出在该位图数据上绘制的内容,会有一行bitmapData.draw(someMovieClip)。查明someMovieClip 是否只是在您的程序中绘制的层。您可以在该线之后添加一条类似的线来绘制您的形状(您应该有它的名称,以便您可以在代码中引用它),这将在您绘制的东西上绘制您的 Graphic。

    如果您绘制的整个图形可以放在一个屏幕上,只需截取您正在运行的应用程序的屏幕截图,将其加载到 Photoshop 中,然后将您的图形正确地放在它保存的任何内容之上。或者,使用现有保存的图像作为背景层,将屏幕截图作为前景,清除不是您的图形的区域并获得更多乐趣。

    编辑:好的,就是这样:你有export() 函数(在你的复制粘贴中是不完整的,顺便说一句),以及我提到的所有相关部分。有一个draw() 调用、一个PNGEncoder.encode() 调用和一个BitmapData 对象。您应该在第一次 draw() 调用之后添加另一行代码,如下所示:

    bmd.draw(yourGraphic);
    

    YourGraphic 是您在影片剪辑上方手动添加的图形的名称,您可以在舞台上的属性中对其进行编辑。应该这样做。

    回复:我已将 bmd.draw(topLayer); 放在第一个 draw() 调用下,但是当我发布预览时,它显示“访问未定义的属性 topLayer”。我首先检查了它的属性,它提到了这个“实例:topLayer”,它是一个图形。

    【讨论】:

    • 我完全不知道你在说什么。如果我将代码提供给“保存按钮”,也许会更有帮助?
    • 下次,您应该编辑您的问题并添加信息,而不是将其作为答案发布。我已经为你完成了编辑。好的,我会研究那个代码。
    • @Jimmy 嗯,这需要您确定您添加的topLayer 的完整继承。也许它是该 MC 的某个层的子对象,这可能会使 Flash 创建一个中间层 Sprite 或 MovieClip 对象,作为顶层的缓冲区,但需要在此 draw() 调用中加以考虑。还应该知道这段代码的上下文,topLayer 可能是兄弟,所以parent.topLayer 可能工作。不幸的是,我无法对此进行调查,因为我没有这样做的工具(试用版已过期)。也许将您的 FLA 发布在某个地方,让其他人修复它。
    • 另外,下次需要回复的时候,加个评论,不要编辑答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2018-10-13
    • 2023-02-25
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多