我需要在AS3 / Air / Starling框架上使用CameraUI捕获图像。我得到了CameraUI,它打开了,图像被选中,我收到了一个MediaPromise对象。
文档中的示例提到了以下代码,用于从iOS上的异步媒体承诺中捕获图像,但我没有在onMediaLoaded函数和ioError函数中听到任何回调。
BTW日志行"异步模式媒体承诺。"我选择照片时会显示。
private function imageSelected(evt:MediaEvent):void
{
this.feedbackText.text = "Image Selected\n";
// Create a new imagePromise
var imagePromise:MediaPromise = evt.data;
// Open our data source
dataSource = imagePromise.open();
if(imagePromise.isAsync)
{
this.feedbackText.text += "Asynchronous Mode Media Promise.\n";
var eventSource:IEventDispatcher = dataSource as IEventDispatcher;
eventSource.addEventListener( Event.COMPLETE, onMediaLoaded );
eventSource.addEventListener( IOErrorEvent.IO_ERROR, ioError );
}
else
{
this.feedbackText.text += "Synchronous Mode Media Promise.\n";
readMediaData();
}
}
// =======================================================================
// onMediaLoaded
// =======================================================================
protected function onMediaLoaded( event:Event ):void
{
this.feedbackText.text += "Image Loaded.\n";
readMediaData();
}
// ========================================================================
// ioError()
// ========================================================================
protected function ioError(event:IOErrorEvent):void
{
this.feedbackText.text = "IOError - Unable to process photo - " + event.text;
}
测试设备:运行iOS 10的iPhone 6 Air SDK:v22
答案 0 :(得分:0)
刚刚发现我的代码问题,我导入了starling.events.Event(而不是flash.events.DataEvent),因此我的回调函数参数中的“Event”类型导致“Type Coercion failed”。