`
it_liuyong
  • 浏览: 100475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex嵌入完整html

    博客分类:
  • flex
 
阅读更多
有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTML要求的不同有以下两种方法:
1、Flex文本组件(Label、Text、TextArea)的htmlText属性支持一些基本的HTML代码,例如:

<mx:TextArea>
<mx:htmlText>
   <![CDATA[
     <p align="center"><font size="15" color="#3399ff">this is a html code</font></p>
   ]]>
</mx:htmlText>
</mx:TextArea>
2、我们可以将Flex应用嵌入到HTML页面中,然后通过Flex2中的ExternalInterface(Flex1.5使用getURL("javascript:javascriptMethod"))
来实现Flex与HTML javascript的相互交互,进一步的,如果要在Flex应用中嵌入完整的HTML呢?
其实实现的方法很简单,只需要使用HTML的Iframe标签来导入需嵌入的HTML页面,
然后使用ExternalInterface调用相应的javasript将该Iframe移动到我们Flex页面需要嵌入HTML页面的部分之上就可以了,示意图如下:

也就是说,我们包含Flex SWF文件的HTML页面主要有三个部分:
1、Flex swf 插件容器,FlexBuilder自动生成部分

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
   id="IFrameDemo" width="100%" height="100%" 
   codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"> 
     <param name="movie" value="IFrameDemo.swf" />
     <param name="quality" value="high" />
     <param name="bgcolor" value="#869ca7" />
     <embed src="IFrameDemo.swf" quality="high" bgcolor="#869ca7" 
       width="100%" height="100%" name="detectiontest" aligh="middle" 
       play="true" loop="false"  quality="high"  
       allowScriptAccess="sameDomain" 
       type="application/x-shockwave-flash" 
       wmode="opaque"
       swLiveConnect="true"
       pluginspage="http://www.macromedia.com/go/getflashplayer">
     </embed>
  </object>
2、HTML Iframe标签,绝对定位,用来导入HTML页面

<iframe id="myFrame" name="myFrame"  frameborder="0"
  style="position:absolute;background-color:transparent;border:0px;visibility:hidden;" />
3、移动Iframe和在Iframe中导入需嵌入FLEX中的HTML页面的脚本

<script>
function moveIFrame(x,y,w,h) {
   var frameRef=document.getElementById("myFrame");
   frameRef.style.left=x;
   frameRef.style.top=y;
   frameRef.width=w;
   frameRef.height=h;
}
function loadIFrame(url){
  top.frames["myFrame"].location.href=url;
}
</script>
Flex中的导入Iframe页面和移动Iframe的代码如下:

import flash.external.ExternalInterface;
import flash.geom.Point;
import flash.net.navigateToURL;
private var __source: String;
private function moveIFrame(): void {
   var localPt:Point = new Point(0, 0);
   var globalPt:Point = this.localToGlobal(localPt);
   ExternalInterface.call("moveIFrame", globalPt.x, globalPt.y, this.width, this.height);
}
public function set source(source: String): void {
   if (source) {
       if (! ExternalInterface.available)
       {
        // TODO: determine if this Error is actually needed.  The debugger 
        // build gives the error below.  Assuming that this error will not show
        // up in the release build but haven’t checked.
           throw new Error("The ExternalInterface is not available in this container. Internet Explorer ActiveX,
    Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.");
       }
       __source = source;
       ExternalInterface.call("loadIFrame", source);
   }
}
两个方法分别直接调用使用ExternalInterface.call调用前面我们提到的HTML页面上的两个Javascript方法。另外一个要注意的是<Canvas/>
继承自flash.display.DisplayObject类的localToGlobal方法的使用,该方法将基于Flash场景的坐标转换为基于全局本地坐标,也就是浏览器页面坐标:

//Flash场景0,0坐标 var localPt:Point = new Point(0, 0); //转换为浏览器页面坐标 var globalPt:Point = this.localToGlobal(localPt);
这样就可以在Flex页面中嵌入任意的HTML页面了,为了方便,Brian写了个嵌入HTML页面的代理IFrame组件,该组件封装了所有需要的Flex端代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.macromedia.com/2005/mxml"
   resize="callLater(moveIFrame)"
   move="callLater(moveIFrame)">
   <mx:Script>
   <![CDATA[
       import flash.external.ExternalInterface;
       import flash.geom.Point;
       import flash.net.navigateToURL;
       private var __source: String;
       private function moveIFrame(): void {
          var localPt:Point = new Point(0, 0);
           var globalPt:Point = this.localToGlobal(localPt);
           ExternalInterface.call("moveIFrame", globalPt.x, globalPt.y, this.width, this.height);
       }
       public function set source(source: String): void {
           if (source) {
              if (! ExternalInterface.available)
               {
                // TODO: determine if this Error is actually needed.  The debugger 
                // build gives the error below.  Assuming that this error will not show
                // up in the release build but haven’t checked.
                   throw new Error("The ExternalInterface is not available in this container. Internet Explorer ActiveX, Firefox,
     Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.");
               }
               __source = source;
               ExternalInterface.call("loadIFrame", source);
           }
       }
       public function get source(): String {
           return __source;
       }
       override public function set visible(visible: Boolean): void {
           super.visible=visible;
           if (visible)
           {
               ExternalInterface.call("showIFrame");
           }
           else
           {
               ExternalInterface.call("hideIFrame");
           }
       }

   ]]>
   </mx:Script>
</mx:Canvas>
该IFrame组件有个source属性用来记录需要载入的嵌入HTML页面的地址,每次source属性更新时,调用ExternalInterface.call("loadIFrame", source)
调用javascript方法loadIFrame方法在HTML 页面中的IFrame中载入要嵌入的HTML页面。
另外,重载了Canvas的visible属性,以便在Canvas隐藏HTML页面中的IFrame。
如下使用该组件在Flex应用中嵌入HTML页面方法:

<IFrame id="iFrame" source="http://blog.eshangrao.com" width="300" height="400"  />
以上代码将在我们的Flex应用中嵌入本站首页。

IFrameDemo.zip
分享到:
评论

相关推荐

    flex嵌入html的容器

    在HTML页面中嵌入Flex组件,可以利用Flex的强大功能来丰富网页的用户体验。本文将详细介绍如何在HTML中嵌入Flex容器,并以IFrameDemo为例进行说明。 首先,我们需要理解Flex和HTML的集成方式。通常,我们可以使用`...

    FLEX嵌入HTML(精简版)

    在“FLEX嵌入HTML(精简版)”的例子中,我们将学习如何利用FLEX的强大功能与HTML的灵活性相结合,以提升用户体验。HTML由于其易读性和丰富的标记能力,常用于构建网页结构和内容,而FLEX则擅长提供动态交互和视觉效果...

    Iframe(Flex嵌入完整网页的类)

    在Flex中嵌入完整的网页所用到的类, xmlns:flexiframe="com.google.code.flexiframe.*" &lt;flexiframe:IFrame id="helpFrame" source="assets/dreamweaver/help/helpHome....

    flex嵌入html(升级版)

    总结来说,"flex嵌入html(升级版)"的实践示例IFrameDemo展示了如何利用Flex的IFrame组件将HTML内容整合到Flex应用中,实现富媒体和交互性的结合。这种技术在需要混合展现静态内容和动态数据,或是利用现有HTML资源时...

    flex 嵌入完美Iframe

    标题中的“flex 嵌入完美Iframe”指的是在Adobe Flex应用程序中嵌入HTML的Iframe元素,并实现良好的交互和兼容性。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建...

    flex中嵌入html

    描述中的"flex中嵌入html,完整代码,下来即可使用"提示我们,可能有一个示例项目或代码片段,可以下载并直接应用于自己的Flex项目中。这个名为"IFrameDemo"的压缩包文件很可能包含了一个演示如何在Flex中使用IFrame...

    Flex中利用IFrame解决嵌入HTML时Flex组件被遮挡和IFrame被隐藏的问题

    而IFrame(Inline Frame)是HTML的一个元素,允许在页面内嵌入另一个完整的网页。在Flex中使用IFrame,可以将HTML内容与Flex组件结合,实现混合式应用。 遇到的典型问题主要有两个: 1. **Flex组件被遮挡**:由于...

    flex加载html页面

    标题“flex加载html页面”指的是在Flex项目中嵌入并显示HTML内容的技术。这通常通过使用Flex中的`mx.controls.WebBrowser`组件或`flash.display.Loader`类来实现。以下是对这两个方法的详细说明: 1. **`mx....

    flex嵌入JSP

    将Flex嵌入到JSP页面中,可以结合两者的优点,提供丰富的图形用户界面和强大的后端数据处理能力。 在将Flex嵌入到JSP页面时,可能会遇到一个常见的问题:Flex组件被其他元素遮挡。这通常是由于CSS样式冲突或者布局...

    flex嵌入安装说明

    ### Flex嵌入安装说明 #### 一、简介 在本文档中,我们将详细介绍如何将Flex Builder 3.0插件安装并集成到Eclipse集成开发环境(IDE)中。通过这种方式,开发者可以在一个熟悉的环境中进行Flex应用的开发,极大地...

    html嵌入flex swf

    HTML 嵌入 Flex SWF 是一种在网页中集成 Adobe Flex 生成的 Flash 动态内容的技术。Flex 是一个用于构建富互联网应用程序(RIA)的框架,它基于 ActionScript 和 MXML,允许开发者创建交互性强、用户体验良好的动态...

    FLEX嵌入到JSP,实现的 jar 包

    将FLEX嵌入到JSP,其实是通过JSP的TAGLIB实现的. 步骤还是蛮简单的 1:去ADOBE下载FLEX的TAGLIB for JSP. 2:将flex-webtier-jsp.jar 拷贝到WEB-INF/flex/jars 文件夹. 3:在WEB.XML中添加 &lt;taglib-uri&gt;FlexTagLib ...

    flex视频,可以嵌入到html

    fb开发的视频,可以嵌入到html视频监控WEB观看端,用flash播放监控的视频的小例子 实现主要功能如下 1. 多屏切换,这里主要是tileLayout布局的使用 2. 单个视频双击全屏,整屏全屏 3. 右键菜单和屏蔽系统的右键...

    Flex 与 html 交互 调用本地html

    1. **创建HTML容器**:在Flex中,你可以使用`HTML`组件来嵌入一个HTML页面。这个组件允许你加载本地或远程的HTML文件,并通过Flex与HTML之间的API进行交互。 2. **配置安全策略**:由于跨域和安全限制,你需要确保...

    FLEX3嵌入到JSP,实现的 jar 包

    JSP是一种用于创建动态网页的Java技术,它允许在HTML中嵌入Java代码或标签库(Tag Libraries)。而Flex是基于ActionScript和MXML的前端开发工具,主要用于创建富客户端应用,它通过Flash Player或Adobe AIR运行在...

    Jsp嵌入Flex 、Jsp Flash报表实现源码

    1. **JSP**:JSP是基于Java平台的服务器端脚本语言,允许开发者在HTML页面中嵌入Java代码,以动态生成内容。JSP的优势在于它能够利用Java的强大功能,如面向对象编程,同时提供了模板语法来分离业务逻辑和视图层,...

    flex把html页面作为类似iframe的样子的组件完全的嵌入到mxml中去。

    Flex中的IFrame组件允许我们像HTML中的iframe元素一样,在MXML应用中嵌入一个完整的网页。IFrame组件位于mx.controls包下,通过它,我们可以加载任何有效的URL,包括本地或远程的HTML页面。 2. 使用IFrame组件的...

    amcharts嵌入到flex中

    在Flex中,可以使用`mx:HTML`组件来嵌入HTML内容。在HTML中,我们可以编写JavaScript代码来初始化AmCharts实例,并指定图表的数据源。这个数据源可以来自Flex应用本身,通过`ExternalInterface.call`方法传递给...

    JSP嵌入一个或多个Flex

    JSP(JavaServer Pages)是一种动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态处理。而Flex是Adobe公司推出的一种用于构建富互联网应用程序(RIA)的框架,它基于ActionScript编程...

Global site tag (gtag.js) - Google Analytics