2012-05-29 29 views
1

我需要將ByteArray從Javascript函數傳遞給Flex Actionscript函數。從Javascript中讀取ByteArray在Flex中的AS功能

function deviceResp(s){ 
    var obj = document.getElementById('smera'); 
    obj.deviceRespFx(s);  
} 

我的AS功能:

public function imageRespFxs(value:String):void{ 
    Alert.show(value.length); 
} 

編輯: 回調函數的 「creationComplete

public function initDevice():void{     
           ExternalInterface.addCallback("deviceRespFx",imageRespFxs); 

     } 

裝載作爲上述方法 必須使用下面JS試圖是inturn轉換一個字節數組爲一個字符串,所以有數據丟失,請任何人請協助關於如何將JS的Byte數組傳遞給AS函數。

+0

你需要證明,你š等回調在AS3('ExternalInterface.addCallback(「deviceRespFX」,imageRespFxs);') –

+0

什麼是*錯*與你有什麼?警報沒有顯示?警報沒有顯示你期望的長度? –

+0

嗨,山姆,已經編輯和更新了回調的調用,能夠在我的AS函數中獲得響應,但這裏的問題是將字節數組從JS傳遞給AS.As ExternalInterface.call不允許輸入變量作爲ByteArray –

回答

1

一切都歸功於山姆DeHaan,

終於設法得到它使用Base64工作由Sam批示暗示。

這裏是代碼的peice的可能對他人有所幫助:

首先,在我的Java代碼我將圖像轉換爲Base64編碼字符串是這樣的:

private String convertBase64String(BufferedImage image){ 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    Base64OutputStream bi64 = new Base64OutputStream(baos); 
    try{ 
    ImageIO.write(imgRegistration1, "png",bi64); 
    baos.flush();    
    String data = baos.toString("UTF-8"); 
    return data; 
    }catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return null; 

} 

我送這個成彎曲方法和解碼同樣喜歡這樣的:

import mx.utils.Base64Decoder; 
    private var base64Dec:Base64Decoder; 
    public function imageRespFxs(value:String):void{     
    var byteArr:ByteArray; 
      base64Dec = new Base64Decoder(); 
      base64Dec.decode(value); 
      byteArr = base64Dec.toByteArray(); 
      imgId.load(byteArr); 

     } 

感謝