1

ByteArrayをJavascript関数からFlexActionscript関数に渡す必要があります。以下の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

SamDeHaanに感謝します。

サムのコメントが示唆するように、ついに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;

}

これをFLexASメソッドに送信し、次のように同じようにデコードします。

  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 に答える