我是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”。我首先检查了它的属性,它提到了这个'topance:topLayer'并且它是一个Graphic。
答案 0 :(得分:1)
检查代码。某个地方应该有fileReference.save(someOtherName)
,fileReference
可能有不同的名称,但会在FileReference=new FileReference()
附近声明。然后,跟踪上面的someOtherName
,它应该是另一个变量的PNGEncoder.encode()
的输出,该变量应该是BitmapData
类型。找出在该位图数据上绘制的内容,将会有一行bitmapData.draw(someMovieClip)
。找出someMovieClip
是否只是程序中使用的图层。你可以在那个之后添加一个类似的线来绘制你的形状(你应该有它的名字,以便你可以在代码中引用它),这将在你绘制的东西上绘制你的Graphic。
如果您绘制的整个图形可以放在一个屏幕中,只需截取正在进行的应用程序的屏幕截图,将其加载到Photoshop中,并在您保存的任何内容之前正确地使用图形。或者,使用现有的已保存图像作为背景图层,将屏幕截图设置为前景,清除不是图形的区域,并获得更多乐趣。
编辑:好的,它是:你有export()
功能(在你的copypasting中不完整,BTW),以及我提到的所有相关部分。有一个draw()
电话,一个PNGEncoder.encode()
电话和一个BitmapData
对象。您应该在第一次draw()
调用后添加另一行代码,如下所示:
bmd.draw(yourGraphic);
YourGraphic
是您在MovieClip上方手动添加的图形的名称,您可以在舞台上的属性中编辑该图形。应该这样做。
回复:我已将bmd.draw(topLayer);
置于第一个draw()调用之下,但当我发布预览时,它会显示“访问未定义属性topLayer”。我首先检查了它的属性,它提到了这个'topance:topLayer'并且它是一个Graphic。