actionscript 3 filereference'保存'抛出错误
我有一个代码在本地保存一个显示对象作为图像文件,但是在某个时候它开始抛出错误2174.这个代码是从上下文菜单点击事件或键盘事件。actionscript 3 filereference'保存'抛出错误
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如果失败。
有什么想法? 欢呼声, 埃雷兹
通过的docs读书,我可以假设:
- 你在Flash Player中运行10
- 你不叫
filereference.cancel()
的情况下,当用户点击“取消”或“关闭像“在打开的对话框中;试试吧
谢谢,但我也阅读该文档,我确实需要时调用'cancel()',但即使我不点击取消按钮 – eRez 2012-04-03 06:38:35
唯一的其他建议,我可以拿出:从**保存数据本地文件** [这里](http://help.adobe.com/en_US/as3/dev /WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html);在适当的情况下尝试使用和不使用'fileRef.cancel()'。检查他们是否抛出相同的错误。如果他们这样做,那么我会重新安装播放器,浏览器插件,IDE(voodoo舞蹈 - 如果它是Flash Builder)。如果他们不抛出错误,我会检查你的代码和Adobe之间的差异。这是你在项目中实际使用'FileReference'的唯一地方吗? – 2012-04-03 12:48:40
filereference.save需要从用户操作IE中调用IE:鼠标点击
如果不是,你会得到那个错误。
也发布版本10或更高版本。
同样根据文档。
Note that because of new functionality added to the Flash Player, when publishing to Flash Player 10, you can have only one of the following operations active at one time: FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load(), FileReference.save(). Otherwise, Flash Player throws a runtime error (code 2174). Use FileReference.cancel() to stop an operation in progress. This restriction applies only to Flash Player 10. Previous versions of Flash Player are unaffected by this restriction on simultaneous multiple operations.
感谢,但它是从用户交互调用 - 无论是上下文菜单单击事件或键盘事件 - 都产生相同的错误和是 - 我发布的版本10。是的,我也阅读该文档,所以不 - 我没有任何其他文件参考同时处于活动状态。 – eRez 2012-04-03 06:35:26
发布错误发生时的堆栈跟踪 – 2012-04-03 15:28:16
请确保您构建Flash Player版本10.0.0或更高 – 2012-04-02 13:44:46
我这样做 - 这并不很长一段改变而 – eRez 2012-04-03 06:17:56
检查从@The_asMan职。你不能以编程方式触发save()。它必须位于“用户操作处理函数”中。例如在按钮点击的处理函数中。 – 2012-04-03 06:55:40