Flash 如何将多个bitmapData对象合并为一个对象,以便可以使用PNGEncoder对其进行编码?

Flash 如何将多个bitmapData对象合并为一个对象,以便可以使用PNGEncoder对其进行编码?,flash,actionscript-3,merge,bitmapdata,Flash,Actionscript 3,Merge,Bitmapdata,我正在创建一个程序,它实际上是一个精灵创造者。我对AS3非常陌生,但我知道JQuery、JS、PHP等。在经历了选择片段以自定义角色的多个步骤后,您应该能够使用fileReference()下载最终产品。一切正常,最终我可以下载图像,但问题是我不能在舞台上拍摄所有的几部电影,我只能拍摄一部。也许这有助于澄清: // add listener to the download button dl_b.addEventListener(MouseEvent.CLICK, save_emote);

我正在创建一个程序,它实际上是一个精灵创造者。我对AS3非常陌生,但我知道JQuery、JS、PHP等。在经历了选择片段以自定义角色的多个步骤后,您应该能够使用fileReference()下载最终产品。一切正常,最终我可以下载图像,但问题是我不能在舞台上拍摄所有的几部电影,我只能拍摄一部。也许这有助于澄清:

// add listener to the download button
dl_b.addEventListener(MouseEvent.CLICK, save_emote); 

function save_emote(e:MouseEvent):void{ 
    var bData:BitmapData = new BitmapData(50, 50); 
    var bData_eyes:BitmapData = new BitmapData(50, 50); 


    bData.draw(emptyMC_mc);
    bData_eyes.draw(emptyMC_eyes);

    // none of these worked, so they have been commented out
    //bData.draw(emptyMC_a); 
    //bData.draw(emptyMC_mouth); 
    //bData.draw(emptyMC_hand_l); 
    //bData.draw(emptyMC_hand_r); 


    // possible to use two bitmapDatas to merge into single?
    var byteArray:ByteArray = PNGEncoder.encode(bData);

    var fileReference:FileReference = new FileReference();
    fileReference.save(byteArray, 'myEmote.png');
    replay_b.visible = true; 
    upload_b.visible = true; 
    back_b.visible = false; 
    user_color.clear(); 
    user_eyes.clear(); 
    user_mouth.clear(); 
    user_a.clear(); 
    hand_l.clear(); 
    hand_r.clear(); 
    mouth_coords.clear(); 
    eye_coords.clear(); 
}
我真的不知道怎样才能让它工作。我尝试过使用.merge()方法,几天来我一直在用谷歌搜索,我试图通过创建两个单独的bitmapData对象,然后在另一个对象中绘制一个来合并它们。对我来说什么都不管用

如果您想查看该程序,并通过单击该程序到达保存图像的位置,可以在此处尝试:

如果在最后保存图像,您将看到手头的问题。我还没有找到一个好的答案,所以如果有人能帮忙,我将不胜感激

提前谢谢

编辑:下面是我如何使用精灵作为容器来设置它的,但现在它似乎正在保存一个空白画布

    var emote:Sprite = new Sprite(); 
    emote.addChild(emptyMC_mc); 
    emote.addChild(emptyMC_eyes); 
    emote.addChild(emptyMC_hand_l); 
    emote.addChild(emptyMC_hand_r); 
    emote.addChild(emptyMC_mouth); 
    if(user_a.data.accessory != "none"){
            emote.addChild(emptyMC_a); 
    } 

    var bData:BitmapData = new BitmapData(80, 80); 

    bData.draw(emote);

我给《精灵》添加的每一部电影都有自己的孩子吗

如果将位图放入某种显示对象容器(如精灵)中,以后可以使用“绘制”和/或“复制像素”方法获取容器的位图数据,这将使所有子对象保留在适当的位置。这应该可以满足您的需要。

嗨!谢谢你的回答。我在save_emote函数中添加了一个精灵,并尝试将舞台上的MCs作为孩子连接到它,但出于某种原因,它现在似乎正在保存一张空白画布。我用new Sprite()设置它,然后bitmapData对象使用.draw(Sprite)。你建议我怎么做?我用新的代码编辑了我的第一个问题。好的,把它擦掉。我是通过把movieclips的孩子和精灵联系在一起的。现在它将它们保存在一个PNG中,我只需要找出如何使它们的位置正确。谢谢你的帮助!