- 浏览: 1454483 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
关键字: flex win32 vc++ vc externalinterface
项目中要实现Flex打开文件夹选择框(Flex做为桌面程序的UI),没办法,如果不用AIR只能在下面加一层Container了。网上搜来搜去差不多都是讲FSCommand怎样与VC++交互,可是FSCommand不能及时返回值呀。经过一番摸索,终于调通了ExternalInterface在VC++中的处理流程,看代码。
Cpp代码
void CMyBicapDlg::OnFlashCallShockwaveflash1(LPCTSTR request)
{
// TODO: Add your control notification handler code here
// "<invoke name='%s' returntype='xml'><arguments><string>%s</string></arguments></invoke>"
// parse request
TiXmlDocument request_xml;
request_xml.Parse(request);
const char* request_name = request_xml.RootElement()->Attribute("name");
if (strcmp(request_name,"savedVideosDirectory") == 0 || strcmp(request_name,"bufferDirectory") == 0 || strcmp(request_name,"preferredExportDirectory") == 0)
{
// choose path
CoInitialize(NULL);
BROWSEINFO bi;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = NULL;
bi.ulFlags = BIF_BROWSEFORCOMPUTER|BIF_RETURNONLYFSDIRS|BIF_STATUSTEXT;
bi.lpfn = NULL;
LPCITEMIDLIST pidl = SHBrowseForFolder(&bi);
if(pidl != NULL)
{
TCHAR tpath[MAX_PATH] = _T("");
BOOL bresult = SHGetPathFromIDList(pidl, tpath);
if (bresult)
{
std::string re_value = "<string>";
re_value = re_value+tpath+"</string>";
m_FlashPlayer.SetReturnValue(re_value.c_str());
}
}
CoUninitialize();
}
}
首先,需要在项目中嵌入Flash player插件,网上有很多例子。另外Flex也要写好代码,这里略掉。
添加一个ExternalInterface的事件处理函数,对于Flash player来讲就是FlashCall事件(跟FSCommand不同的),这里的事件处理函数是void CMyBicapDlg::OnFlashCallShockwaveflash1(LPCTSTR request)。没有返回值(下面会讲到),参数是一个XML格式的字符串。格式是"<invoke name='%s' returntype='xml'><arguments><string>%s</string></arguments></invoke>",去查查帮助就知道了。
处理request:标准C++没有处理XML的库,我去下载了tinyxml,小巧好用。下面就是按照个人需要处理request了,我这里是,打开一个文件夹选择对话框然后选择一个路径。
返回值。事件处理函数是没有返回值的,但是flash player提供了一个方法:m_FlashPlayer.SetReturnValue(re_value.c_str());,专门传递返回值,格式是<string>%s</string>(也可以是别的AS结构,具体看帮助)。
需要提醒的是,在处理期间要block掉Flex,ExternalInterface.call是有返回值的,如果不阻塞Flex,可能返回就是NULL,呵呵,不知道深层原因。另外,反过来调用格式也是一样的。
调试环境:win xp, VC++6.0, Flex builder 2.0
发表评论
-
Apache FlexJS 0.0.1 和 Apache Flex FalconJX 0.0.1发布
2015-11-01 19:44 558原文地址:http://note.sdo.com/u/634 ... -
Flash Catalyst 常用键盘快捷键
2011-03-28 15:38 1069转自:http://www.riameeting.com/ ... -
8款很实用的Actionscript写的位图(BitMap)操作类
2011-03-24 12:09 1948AS3 Scale9 Bitmap ... -
VC++ 项目中使用 FLEX
2011-03-24 09:13 19521, http://hi.baidu.com/qinpc/ ... -
flex应用开发/flash应用开发 代做flash作业/flex作业
2011-01-09 20:37 347专业承接flex应用开发/flash应用开发 ... -
脑袋里的秘密,输入姓名就可以知道你在想什么! flex版
2010-12-29 11:34 2551输入名字就可以知道她/他在想什么的工具~~ -
一个flex聊天机器人
2010-12-18 10:42 1660无聊之下所作,供大伙娱乐,随边聊聊。。。 -
Flex:基于Flex-config.xml的命令行编译
2009-07-01 09:33 1899关键字: Flex Flex2 编译 mxmlc ... -
抽出flash与java 用AMF交互代码
2009-06-30 15:09 3666最近做的一个java 与flash通讯的项目,由于项目框 ... -
BulkLoader类和PV3D
2009-06-26 17:02 1973AS3取消了movieclip的loader类,所以加 ... -
使用 Flex Builder 3.x 分析工具 Profile
2009-06-25 11:26 3422前言 关于分析工具 (原文见Flex Builder ... -
AMF3+JAVA的调用范例
2009-06-24 17:44 2567[AS3]AMF3+JAVA的调用范例 amf是Ad ... -
Flex 程序性能测试
2009-06-24 16:02 1956Flex 程序性能测试 作者:叶晖俊 yehui ... -
Flex RemoteObject类参考
2009-06-19 11:39 1246<mx:RemoteObject>标记 ... -
flex画的菱形
2009-05-11 16:19 3462package com { impo ... -
理解 Flex itemRenderer - 第 4 部分: 状态和过渡
2009-05-08 09:23 1719itemRenderer 最擅长与应用 ... -
理解 Flex itemRenderer - 第 5 部分: 效率
2009-05-08 09:21 1773如果您要显示大量 itemRenderer-无论在 Dat ... -
VO to XML converter
2009-05-04 09:00 1157private function convertToXM ... -
Flex全屏
2008-09-26 11:11 1799private function goFullScreen( ... -
ExternalInterface在Firefox下出错的bug
2008-09-16 09:28 3188使用Document Class为避免命名空间冲突,通常会取消 ...
相关推荐
标题“flex与js交互 关于ExternalInterface使用的小例子”指出了本文将探讨如何使用Flex的ExternalInterface类与JavaScript进行通信。ExternalInterface是Flex提供的一个API,允许ActionScript(Flex的主要编程语言...
本篇文章将探讨一个关于“flex与js通信”的小例子,它主要涉及到Adobe Flex和JavaScript之间的交互,这对于创建富互联网应用程序(RIA)是非常重要的。Flex是一种用于构建富客户端应用的开源框架,基于ActionScript...
本教程通过一个实际的调用实例,展示了Flex与Flash如何相互通信。 Flex是基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。它提供了MXML和ActionScript语言来创建用户界面,具有强大的组件库...
### SWF之间通信、Flex与SWF之间通信 在探讨SWF之间以及Flex与SWF之间的通信时,我们首先需要了解SWF文件的基本概念及其在Adobe Flash平台中的作用。SWF(Shockwave Flash)是一种被广泛应用于网页动画、游戏和其他...
- **ExternalInterface API**: Flex SDK提供了`ExternalInterface`类,允许ActionScript(Flex的编程语言)代码与JavaScript进行双向通信。通过`addCallback`方法注册回调函数,使JavaScript可以调用Flex中的方法,...
标题中的"Flash Flex与JS通信"指的是如何让运行在Adobe Flash Player中的Flex应用与浏览器中的JavaScript代码进行数据交换和功能调用。这种通信机制通常被称为External Interface或Bridge技术,它允许Flex应用与网页...
本篇文章将详细讲解JS与Flex之间的通信方式以及互转实例。 首先,我们探讨JS与Flex之间的通信机制。这种通信通常通过两种方式实现:Flash Player的LocalConnection API和使用SWFObject加载的Flex组件。 1. **...
Flex与JavaScript交互是一种常见的技术,它允许在Adobe Flex(基于ActionScript 3的富互联网应用程序框架)和网页中的JavaScript之间进行通信。这种交互性对于构建混合型应用,特别是在需要利用浏览器内核特性的Web...
总结来说,Flex与JavaScript之间的通信依赖于`ExternalInterface`,它提供了调用JavaScript函数和注册可被JavaScript调用的Flex方法的能力。这种通信方式使得两种技术能够协同工作,为开发者提供更丰富的用户交互...
Flex与JavaScript的相互通信是Web开发中的一个重要技术,它允许富互联网应用程序(RIA)如Flex应用与网页中的JavaScript代码进行交互,实现更丰富的用户体验。本文将深入探讨这一主题,结合给定的压缩包文件...
在Flex项目中,你需要引入`flash.external.ExternalInterface`库,这样Flex应用才能与JavaScript环境通信。在Flex组件或ActionScript类中,你可以使用`ExternalInterface.addCallback()`方法来注册一个函数,使其可...
在Flex应用中,可以通过ActionScript 3.0 (AS3)与Flash CS中的AS3代码进行通信。首先,你需要在Flash CS中编写好需要调用的方法,并确保这些方法是公开的。然后,在发布SWF文件时,确保ActionScript版本设置为3.0。...
Flex调用Flash函数的机制与Flash调用Flex类似,也是通过`ExternalInterface`。在Flash中,我们需要定义一个可被外部调用的函数: ```as3 public function flashFunction(message:String):void { trace("Flash收到...
5. **通信机制**:为了实现MFC与Flex之间的通信,可以利用Flash Player的ExternalInterface接口。在Flex端,我们可以注册ActionScript函数,使其能在JavaScript中调用,然后通过MFC调用JavaScript函数来实现通信。在...
1. **ExternalInterface**: 这是Flex提供的一种API,允许ActionScript代码调用JavaScript函数,同时也允许JavaScript调用Flex组件的方法。在使用ExternalInterface之前,需要确保在Flex应用中启用它,这可以通过在...
- Adobe提供了一个叫做`Flash Player External Interface`(简称ExternalInterface)的API,它允许Flex应用与JavaScript进行通信。Flex端通过调用这个接口,可以暴露方法给JavaScript,反之亦然。 2. **在Flex中...
在Flex中,我们可以使用`ExternalInterface`类来与JavaScript进行交互。`ExternalInterface.addCallback`方法允许我们在JavaScript中调用Flex组件的方法,而`ExternalInterface.call`方法则用于在Flex中调用...
除了上述核心功能外,`ExternalInterface`还提供了一系列标准的`Object`原型方法,如`hasOwnProperty`、`isPrototypeOf`、`...提供了对`ExternalInterface`实例的进一步控制和操作能力...
本文将详细介绍如何使用ExternalInterface接口实现Flex与JavaScript之间的相互调用,并给出具体的示例代码。 #### 二、Flex调用JavaScript方法 在Flex中调用JavaScript是一种常见的需求,这使得Flex能够利用网页中...
在 Flex 应用程序中,通过 ExternalInterface API 可以与 JavaScript 进行通信。ExternalInterface 提供了一种方法,使得 Flex 中的 ActionScript 代码能够调用网页中的 JavaScript 函数,反之亦然。这种交互允许 ...