HRESULT E_FAIL
尝试访问 AS3 .swf 文件中的方法时出现错误,该文件作为 Winform 内的 AxShockwaveFlashObject 组件运行。flash 组件可以通过 Externalinterface 与 C# 进行通信,但是从 C# 发送到 Flash 到目前为止是不可能的。
该错误似乎是通用且毫无意义的,因为我发现了许多未回答的问题。尽管如此,我仍会尝试针对这种特定情况:
C#
String method = "<invoke name=\"NewFilename\" returntype=\"xml\"></invoke><arguments></arguments>";
mainFlashControl.CallFunction(method);
AS3
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
if (ExternalInterface.available)
{
ExternalInterface.addCallback("NewFilename", NewFilename);
}
}
public function NewFilename():void
{
// Do Something...
}
更新:我所能找到的只是一种解决方法,它通过调用(从 AS3 到 C#)并读取响应来检查每个时间间隔是否有任何等待调用的函数。但是,我也无法得到返回任何东西的响应。我使用过flashComponent.setResponseValue("test");
,在闪存端,Externalinterface.Call() 总是返回 null。
更新:我现在也研究了 FSCommand,也可以从 AS3 到 C#,但我似乎也没有办法将返回值附加到它......