1

我需要将 ByteArray 从 Javascript 函数传递给 Flex Actionscript 函数。已尝试使用以下 JS:

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 传递给 AS 函数。

4

1 回答 1

1

多亏了 Sam DeHaan,

正如 Sam 评论所暗示的那样,终于设法让它与 Base64 一起工作。

这里的代码可能对其他人有帮助:

首先在我的 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;

}

我将它发送到 Flex AS 方法并像这样解码相同:

  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);

        }

谢谢

于 2012-05-30T09:21:36.663 回答