Actionscript 3 从Flex中的Javascript读取ByteArray作为函数
我需要将ByteArray从Javascript函数传递到Flex Actionscript函数。 已尝试使用以下JS:Actionscript 3 从Flex中的Javascript读取ByteArray作为函数,actionscript-3,apache-flex,flex3,externalinterface,Actionscript 3,Apache Flex,Flex3,Externalinterface,我需要将ByteArray从Javascript函数传递到Flex Actionscript函数。 已尝试使用以下JS: function deviceResp(s){ var obj = document.getElementById('smera'); obj.deviceRespFx(s); } 我的职能: public function imageRespFxs(value:String):void{ Alert.show(value.length);
function deviceResp(s){
var obj = document.getElementById('smera');
obj.deviceRespFx(s);
}
我的职能:
public function imageRespFxs(value:String):void{
Alert.show(value.length);
}
编辑:
回调函数加载到“creationComplete”上
由于上述方法是将字节数组转换为字符串,因此会丢失数据,请任何人协助将字节数组从JS传递到As函数。多亏了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,并按如下方式解码:
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);
}
谢谢谢谢萨姆·德安 正如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,并按如下方式解码:
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);
}
谢谢您需要显示在AS3中设置回调的位置(
ExternalInterface.addCallback(“deviceRespFX”,imageRespFxs);
)您的回调有什么问题?警报没有显示吗?警报未显示您期望的长度?你好,Sam,已编辑并更新回调调用,我可以在我的AS函数中得到响应,但这里的问题是将字节数组从JS传递到AS。由于ExternalInterface.call不允许输入变量AS ByteArrayys,JS函数中变量的长度为400,而AS函数中只有15。字节数组最初是字符串吗?中间是否有一个空/ 0字节,将翻译转换为字符串?您需要显示在AS3中设置回调的位置(<代码>外部接口.AddiCalbBead(“DeVICErESPFX”,IMAGEESPFXS);<代码> >)您有什么问题?警报没有显示吗?警报未显示您期望的长度?你好,Sam,已编辑并更新回调调用,我可以在我的AS函数中得到响应,但这里的问题是将字节数组从JS传递到AS。由于ExternalInterface.call不允许输入变量AS ByteArrayys,JS函数中变量的长度为400,而AS函数中只有15。字节数组最初是字符串吗?中间是否有一个空/ 0字节将翻译分解为字符串?