做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通讯。

flex集成IFrame,IFrame集成UnityWebPlayer直接通讯调用解决方式的更多相关文章

  1. iframe于iframe页面之间的函数相互调用

    因为iframe页面于包括父页面在内的其他页面通讯有跨域问题,所以只有在服务器环境下或者火狐浏览器下才能测试. 在iframe页面调用父页面的函数采用parent,例子:在父页面有一个say()函数, ...

  2. iframe 简单的一个用法 局部调用

    <iframe id="main_com" name="main_com" width="100%" height="750 ...

  3. extjs folder is lost解决方法 和 FineUI主题切换时 iframe内的内容主题不变的解决方法

    错误原因:extjs包和FineUI版本不一致 或者是 webconfig配置中 没有设置为任何人可访问  解放方法下载和FineUI版本相同的extjs包就ok了 解决方法:FineUI主题切换时 ...

  4. 拥有iframe页面的子父类窗口调用JS的方法,并且注意的事项

    一.前言 我页面用的是EasyUI的弹出窗口里面嵌入一个iframe.第一:父窗口打开子窗口是一个新增用户信息的iframe子页面,点击保存后,子窗口iframe则去调用父窗口的function cl ...

  5. 环信 之 iOS 客户端集成四:集成UI

    在Podfile文件里加入 pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-cocoapods.git' 然后在终端中的 ...

  6. V9发布内容时保留框架<iframe></iframe>

    有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容最近在发布内容时就遇到这个问题,<iframe></iframe>给转 ...

  7. [Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

    我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html: <div id="mailEditorDiv" style=" ...

  8. nginx和Tomcat集成后发生的重定向问题分析和解决

    nginx和Tomcat集成后发生的重定向问题分析和解决 Tomcat前端配置一个HTTP服务器应该是大部分应用的标配了,基本思路就是所有动态请求都反向代理给后端的Tomcat,HTTP服务器来处 理 ...

  9. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps Office新的App模型

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps  Office新的App模型         Office 2 ...

随机推荐

  1. find指令使用手册

    find 目录 条件 选项 find . –print find . –print0 .指明在当前目录中查找 -print 打印匹配文件的文件名,使用‘\n’作为分隔文件的定位符 -print0 打印 ...

  2. img元素srcset属性浅析

    img srcset 属性 img 元素的 srcset 属性用于浏览器根据宽.高和像素密度来加载相应的图片资源. 属性格式:图片地址 宽度描述w 像素密度描述x,多个资源之间用逗号分隔.例如: &l ...

  3. php 快速导出大量CSV文件

    原文链接 https://segmentfault.com/a/1190000005366832 /** * 导出excel(csv) * @data 导出数据 * @headlist 第一行,列名 ...

  4. 04 Beautiful Soup

    Beautiful Soup 简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: ''' Beautiful Soup提供一些简单的.py ...

  5. jquery添加属性的方法

    $("#id" ).prop('checked', true); $("#id" ).attr('checked', 'true');

  6. hdu 6201 transaction (最短路变形——带负权最长路)

    题意: 给定n个城市的货物买卖价格, 然后给定n-1条道路,每条路有不同的路费, 求出从某两个城市买卖一次的最大利润. 利润 = 卖价 - (买价 + 路费) 样例数据, 最近是从第一个点买入, 第4 ...

  7. vim 系列

    http://blog.csdn.net/laogaoav/article/details/17370269 非常不错

  8. STM32F407 外部中断 个人笔记

    IO口 STM32F4有上百个IO口中,每个都可以作为外部中断输入 中断线 STM32F4的中断控制器支持22个外部中断/事件请求(中断线) 对于每个中断线,我们可以设置相应的触发方式(上升沿触发,下 ...

  9. STM32F407 NVIC 中断优先级管理 个人笔记

    内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC) 设置中断向量的优先级并使能. 响应优先级& 抢占优先级 抢占优先级:一个中断A还在处 ...

  10. sql的case when用法

    select t.C_OPERATE_TIME MODIFY_TIME, t.c_code EMPLOYEE_CODE, t.c_name EMPLOYEE_NAME, CASE t.c_employ ...