0

我是 Flash 的菜鸟。而且我不是程序员。与Photoshop(图像设计)相得益彰。

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

它提供了一个“保存按钮”,可以将绘图(在MovieClip上绘制)保存到磁盘驱动器中。然后我对其进行了修改,将另一层放在MovieClip a 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”,它是一个图形。

4

1 回答 1

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是您在 MovieClip 上方手动添加的图形的名称,您可以在舞台上的属性中对其进行编辑。应该做。

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

于 2013-03-28T03:51:41.883 回答