做Web开发一般是flex与JS交互,UnityWebPlayer与JS交互。

它们之间相互调用比較常见。

/**
* Flex调用Javascript函数
* @params functionName:String Javascript函数名称
* @params ...params Javascript函数參数
* @return 返回Javascript函数的return内容
**/
ExternalInterface.call(functionName:String, ...params);
/**
* Javascript调用Flex函数
* @params functionName:String Javascript调用Flex函数名
* @params closure:Function Flex将要调用的函数
* @return void
**/
ExternalInterface.addCallback(functionName:String,closure:Function);

JS调用Unity web Content函数

<script type="text/javascript" language="javascript">
<!--
//initializing the WebPlayer
var u = new UnityObject2();
u.initPlugin(jQuery("#unityPlayer")[0], "Example.unity3d"); function SaySomethingToUnity()
{
u.getUnity().SendMessage("MyObject", "MyFunction", "Hello from a web page!");
}
-->
</script>

在Unity web player中须要有一个“MyObject”的GameObject对象,而且附加一个带有“MyFunction”函数的脚本:

function MyFunction(param : String)
{
Debug.Log(param);
}

unity web player调用网页中JS函数:

unity中增加该脚本调用
Application.ExternalCall( "SayHello", "The game says hello!" );
在web页面中须要定义一个叫 SayHello() 函数: 

<script type="text/javascript" language="javascript">
<!--
function SayHello( arg )
{
// show the message
alert( arg );
}
-->
</script>

以上两种交互方式是比較经常使用的,近期一个项目遇到了一个特殊的应用需求。须要把unity web player的页面签入到flex应用框架中。而且完毕flex与unity web player直接的交互。

为了完毕这项需求须要解决例如以下问题:

1、怎样把html页面签入到flex容器中;

2、怎样实现flex与unity web player直接的通讯问题;

问题1,通过收搜得出眼下flex中有一个iframe插件,能够解决。

步骤:

1、在此链接中下载现成的资料 https://github.com/flex-users/flex-iframe/downloads

我下的是最新的 flex-iframe-1.5.1.zip

解压后,在 flex-iframe-1.5.1\sources\library\flex-iframe\src\com\google\code\flexiframe  这个路径中能够找到两个AcriptScript 类文件

2、将IFrame.as、IFrameExternalCalls.as  存放在Flex项目中。我将它拷贝到Class文件中或者引用bin\flex-iframe-1.5.swc

3、新建立 MXML应用程序,加入红色部分代码就可以。 source里填充要显示的页面

<?

xml version="1.0" encoding="utf-8"?

>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:flexiframe="http://code.google.com/p/flex-iframe/"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
xmlns:iframe="Class.*">
<fx:Declarations>
<!-- 将非可视元素(比如服务、值对象)放在此处 -->
</fx:Declarations>
<iframe:IFrame id="iFrame" source="http://www.baidu.com/" width="100%" height="100%"/>
</s:Application>

问题2,解决flex与unity web player直接通讯。

unity web player调用flex函数,关键是通过图上红色标注,事实上非常好理解就是iframe签入到了Flex的HTML中,通过iframe中脚本发现SwfContent对象就能够实现调用flex中的函数,实现与flex通讯。

最新文章

  1. 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
  2. 长文丨papi、咪蒙、罗胖之后,内容创业的机会在哪儿
  3. 腾讯云Linux系统中启动自己安装的tomcat
  4. 详解NTFS文件系统
  5. Different Approaches for MVCC
  6. WPF 动画(形状、画刷)
  7. assert的用处
  8. Ubuntu14.10+cuda7.0+caffe配置
  9. 用C语言实现的扑克牌洗牌程序
  10. bzoj 3207 花神的嘲讽计划Ⅰ(哈希法+主席树)
  11. 多种的android进度条的特效源码
  12. C# aspnetpager分页
  13. PLSQL Developer如何设置自动打开上次编辑的文件
  14. 转:Linux 内核中的 cdev_alloc和cdev_add
  15. [C入门 - 游戏编程系列] 贪吃蛇篇(三) - 蛇定义
  16. ADO.NET(一)
  17. 定位--position属性
  18. System V IPC 之消息队列
  19. 记Ubuntu Mongodb 和 Mysql的安装与使用
  20. 在极算云安装pytorch0.4.1环境

热门文章

  1. java 自动拆箱 自动装箱
  2. CSS链接四种状态注意顺序、UI伪类选择器的顺序
  3. Python-接口自动化(十一)
  4. 生成优惠券,并将优惠券存入Mysql
  5. 2. TypeScript笔记
  6. waiting TTFB 时间优化
  7. POJ-2773 Happy 2006,暴力2700ms+水过!
  8. 生产环境下lnmp的权限说明
  9. [UOJ#274][清华集训2016]温暖会指引我们前行
  10. 关于datetime,date,timestamp,year,time时间类型小结