所以我有一个功能:
public function handleOnSave(e:MouseEvent):void
{
var ml:MultipartURLLoader = new MultipartURLLoader();
var bmData:BitmapData = scrollView.getBitmapData();
ml.addEventListener(Event.COMPLETE, onSaveComplete);
// simple string data
ml.addVariable("ad_id", ParamsObject.lastInstance.param_id);
ml.addVariable("ad_type", ParamsObject.lastInstance.param_type);
ml.addVariable("image_width", bmData.width);
ml.addVariable("image_height", bmData.height);
ml.addVariable("save_data", scrollView.getSavedData());
trace(scrollView.getSavedData());
var jpgSource:Bitmap = null;
var jpgEncoder:JPGEncoder = new JPGEncoder(99);
var jpgStream:ByteArray = jpgEncoder.encode(scrollView.getBitmapData());
var pngStream:ByteArray = PNGEncoder.encode(bmData);
ml.addFile(jpgStream, 'test2.jpg', "pic" , 'image/jpeg');
trace(pngStream.length + ' ' + jpgStream.length );
ml.load("/flash/uploadFP.php");
}
我有按钮触发它:
save_btn.addEventListener(MouseEvent.CLICK, handleOnSave);
我想要做的是将此按钮放在flash之外,并使用ExternalInterfac中的Java脚本调用此函数,如:
ExternalInterface.addCallback("save",handleOnSave);
但浏览器返回
uncaught exception: Error in Actionscript. Use a try/catch block to find error.
我尝试调用仅返回成功警报的功能,并且工作正常。我搜索了这个,人们建议的唯一的事情是使用
Security.allowDomain("*");
我做到了,但问题仍然存在。
编辑:
确定try / catch返回错误#2176 !
答案 0 :(得分:0)
首先注意到的是
public function handleOnSave(e:MouseEvent):void ...
将事件e
作为参数,您将无法从Javascript传递。
由于e
未在handleOnSave
内使用,您可以定义类似
public function handleOnSave(e:MouseEvent = null):void ...
所以在Actiobscript中,它应该像
public function handleOnSave(e:MouseEvent = null):void{
.....
.....
}
ExternalInterface.addCallback("save",handleOnSave);
从Javascript你可以调用类似
的东西 document[*flash movie id*].save();
请分享您的Javascript代码,看看是否有其他错误。
编辑:
如图所示,找出错误
public function handleOnSave(e:MouseEvent = null):String{
try{
...existing code...
}catch(error:Error){
return error.message;
}
return "";
}
并在Javascript中收到错误。