我正在創建一個實際上是精靈創建者的程序。我對AS3非常陌生,但我知道JQuery,JS,PHP等。經過多個步驟來選擇一個字符來定製一個字符,你應該能夠使用fileReference()下載最終產品。一切正常,我最終可以下載圖像,但問題是我無法捕捉舞臺上的所有影片剪輯,我只能捕捉到它。也許這將有助於澄清:如何將多個bitmapData對象合併爲一個,以便使用PNGEncoder進行編碼?
// 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()方法,我試過Google搜索幾天了,而且我試圖通過創建兩個單獨的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);
難道我添加到精靈的每個影片剪輯都有自己的孩子嗎?
嗨!感謝你的回答。我向save_emote函數中添加了一個精靈,並試圖將舞臺上的MC作爲子節點附加到它上面,但由於某種原因,它現在似乎正在節省空白畫布。我已經建立了新的Sprite(),然後一個bitmapData對象使用.draw(sprite)。你會如何推薦我這麼做?我用新代碼編輯了我最初的問題。 – SanguineEpitaph 2012-01-30 13:38:21
好的,從頭開始。我通過將影片剪輯的孩子附加到精靈上來實現這一目標。現在將它們全部保存在PNG中,我只需要弄清楚如何使它們的定位正確。感謝您的幫助! – SanguineEpitaph 2012-01-30 13:59:06