2012-01-30 40 views
2

我正在創建一個實際上是精靈創建者的程序。我對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); 

難道我添加到精靈的每個影片剪輯都有自己的孩子嗎?

回答

2

如果將位圖放入某種顯示對象容器(如Sprite)中,稍後可以使用「draw」和/或「copyPixels」方法來獲取容器的位圖數據,該數據將保留所有容器的孩子在適當的地方。這應該做你需要的。

+0

嗨!感謝你的回答。我向save_emote函數中添加了一個精靈,並試圖將舞臺上的MC作爲子節點附加到它上面,但由於某種原因,它現在似乎正在節省空白畫布。我已經建立了新的Sprite(),然後一個bitmapData對象使用.draw(sprite)。你會如何推薦我這麼做?我用新代碼編輯了我最初的問題。 – SanguineEpitaph 2012-01-30 13:38:21

+0

好的,從頭開始。我通過將影片剪輯的孩子附加到精靈上來實現這一目標。現在將它們全部保存在PNG中,我只需要弄清楚如何使它們的定位正確。感謝您的幫助! – SanguineEpitaph 2012-01-30 13:59:06

相關問題