关于C++调用FLASH CallFunction接口的错误

demonking 2012-07-10 06:56:19
捣鼓了半天,发现调用CallFunction 接口时,只要那个目标SWF中使用了TLF动态文本就一定会报告异常,有没有人遇到过同样情况?如何解决的啊?
...全文
671 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingxin505 2013-07-12
  • 打赏
  • 举报
回复
非常感谢这个帖子.就这破事,我折腾了一下午.晚上才看到这个贴子,原来是Flash加载慢,我调用快了. 这TMD算什么Bug啊.Adoube混蛋.
Rain_mm521 2013-04-18
  • 打赏
  • 举报
回复
我的代码是这样的: vc: CString result; CString str1; str1 = _T("<invoke name=\"StartTask\" returntype=\"xml\"><arguments><string>hello</string></arguments></invoke>"); m_FlashPlayer.get_Playing(); result = m_FlashPlayer.CallFunction((LPCTSTR)str1); flash: package { import flash.display.Sprite; import flash.external.ExternalInterface; public class Box extends Sprite { public function Box() { if(flash.external.ExternalInterface.available){ ExternalInterface.addCallback("StartTask", this.StartTask); } private function StartTask(file_id:String):String { return "StartTask"; } } } 请您帮忙看看有什么问题,非常感谢。
Rain_mm521 2013-04-18
  • 打赏
  • 举报
回复
您好,请教个问题,我用CShockwaveFlash与flash通信,每次调用CallFunction后就会弹出一个错误框,而且没有任何信息,不知道是什么问题?vc中的这个空间与as的版本有关系吗?望指教,谢谢
cai_niao_e 2013-04-02
  • 打赏
  • 举报
回复
zhengjunlang 2012-07-27
  • 打赏
  • 举报
回复
我也碰到了这种情况,今天研究了一天,发现问题是因为flash端把ExternalInterface.addCallback写在外部类,后来直接搬到main类里就可以了
demonking 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

是不是flash自己加载TLF文本有BUG呀,然后导致加载不正常,让vc调用不了,我是看到这篇文章想的
http://bbs.9ria.com/thread-77066-1-1.html
[/Quote]

你这条线索太有用了,我再捣鼓一下看看结果
Ginie 2012-07-11
  • 打赏
  • 举报
回复
是不是flash自己加载TLF文本有BUG呀,然后导致加载不正常,让vc调用不了,我是看到这篇文章想的
http://bbs.9ria.com/thread-77066-1-1.html
demonking 2012-07-11
  • 打赏
  • 举报
回复
楼上的,我是说 CallFunction 普通状态下是可以成功的。但SWF中如果有个TLF动态文本,这个时候使用CallFunction就会异常了
Ginie 2012-07-11
  • 打赏
  • 举报
回复
我是这样和AS3通信的

CString Get_FramePen = "<invoke name=\"getFrame1\" returntype=\"xml\"><arguments><string>%</string></arguments></invoke>";
Get_FramePen.Replace("%", CSThumb);
m_AssessPlayer.CallFunction(Get_FramePen);
Ginie 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

新进展,原来LoadMovie后立即调用CallFunction就会失败,估计原因是SWF一开始播放内部有些东西还没创建好,CallFunction导致异常。。。。。。
[/Quote]
这个确实是VC调用FLASH的一个问题
hz张三 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

新进展,原来LoadMovie后立即调用CallFunction就会失败,估计原因是SWF一开始播放内部有些东西还没创建好,CallFunction导致异常。。。。。。
[/Quote]

应该就是这个原因,你需要等待OCX把flash装载完成后,再CallFunction。
demonking 2012-07-11
  • 打赏
  • 举报
回复
新进展,原来LoadMovie后立即调用CallFunction就会失败,估计原因是SWF一开始播放内部有些东西还没创建好,CallFunction导致异常。。。。。。
demonking 2012-07-10
  • 打赏
  • 举报
回复
做个最简单的随便测试一下就会发现问题
//c++ 部分
m_Flash.LoadMovie(0, _T("c:\\test.swf"));
CString strBuffer = _T("<invoke name=\"SetInputEdit\" returntype=\"xml\"><arguments><string>1234</string></arguments></invoke>");

try
{
m_Flash.CallFunction(strBuffer);
}
catch(COleDispatchException* ex)
{
TCHAR szCause[255];
CString strFormatted;

ex->GetErrorMessage(szCause, 255);
strFormatted = "The program exited because of this error: ";
strFormatted += szCause;
AfxMessageBox(strFormatted);
}

// swf 随便画点什么
// 在第一帧 写上 AS
import flash.external.ExternalInterface;

function SetInputEdit(_str:String=""):void
{
//为了看结果,啥都不做,空函数
}

ExternalInterface.addCallback ("SetInputEdit",SetInputEdit);

在画布中加一个文本工具,分别把属性设置为TLF动态文本或普通动态文本,马上就可以看见有TLF动态文本的时候调用CallFunction就会异常
demonking 2012-07-10
  • 打赏
  • 举报
回复
感觉非常困惑

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧