我正在创建一个实际上是精灵创建者的程序。我是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()方法,我已经尝试了几天Googling,并且我尝试通过创建两个单独的bitmapData对象然后在另一个中绘制一个来合并它们。没有什么对我有用。
如果您想查看该计划并点击该计划进入保存图片的位置,可以在此处试用:http://dl.dropbox.com/u/3666815/mote-machine-main.html
如果您在最后保存图片,则会看到手头的问题。我一直无法找到一个好的答案,所以如果有人能提供帮助,我们将非常感激!
提前致谢!
编辑:这是我如何使用Sprite作为容器进行设置,但现在它似乎正在保存一个空白画布。
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);
可能是我添加到精灵中的每个动画片段都有自己的孩子吗?
答案 0 :(得分:2)
如果将位图放入某种显示对象容器(如Sprite)中,稍后可以使用“draw”和/或“copyPixels”方法来获取容器的位图数据,这将保留所有孩子们在适当的地方。这应该做你需要的。