我有一个代码,它将显示对象本地保存为图像文件,但在某个时候它开始抛出错误2174。此代码是从上下文菜单单击事件或键盘事件中调用的。
var sourceBmd:BitmapData = new BitmapData(displayObject.width,displayObject.height);
sourceBmd.draw(displayObject,new Matrix(displayObject.width,0,0,displayObject.height));
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var byteArray:ByteArray = jpgEncoder.encode(sourceBmd);
try
{
filereference.save(byteArray,"posterImage.jpg");
}
catch (e:Error)
{
Debugging.alert("error: ",e.message);
}
正如您所看到的,filereference只有一个操作,因此没有理由抛出错误2174。如果你想知道的话-我发布的是flash播放器10.0
更新:我发现它与flash播放器版本有关:在10.3上它有效,而在11.1上如果失败。
有什么想法吗?干杯eRez
filereference.save需要从用户操作IE调用:鼠标点击
如果不是这样,你就会得到那个错误
同时发布版本10或更高版本。
同样根据文档
请注意,由于Flash Player中添加了新功能,在发布到Flash Player 10时,一次只能激活以下操作之一:FileReference.browse()、FileReference.upload()、FileReference.download()、ileReference.load()和FileReference.save()。否则,Flash Player将引发运行时错误(代码2174)。使用FileReference.cancel()可以停止正在进行的操作。此限制仅适用于Flash Player 10。先前版本的Flash Player不受此同时多个操作限制的影响。
这个链接能解决你的问题吗?
此外,您是否在错误发生后尝试重新启动flash IDE?
通过阅读文档,我可以假设:
- 你正在flash播放器10中运行
- 当用户在打开的对话框上单击"取消"或"关闭"时,您不会调用
filereference.cancel()
;试试看