热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flex中嵌入网页(IFrame)

转自:http:alvinqq.javaeye.comblog539618这段时间一直在苦心研究Flex,今天突然想,我们平时都是把swf放到网页中,怎么才能把网页嵌入到Flex中呢?我查了

转自:http://alvinqq.javaeye.com/blog/539618

 

这段时间一直在苦心研究Flex,今天突然想,我们平时都是把swf放到网页中,怎么才能把网页嵌入到Flex中呢?我查了一些资料,然后经过自己的不懈努力,终于搞定。
为了方便,写了个嵌入HTML页面的代理IFrame组件,该组件封装了所有需要的Flex端代码,后面只要通过标签调用就OK了。
IFrame.mxml文件如下:

Java代码
  1. "1.0" encoding="utf-8"?>   
  2. "http://www.adobe.com/2006/mxml" resize="callLater(moveIFrame)" move="callLater(moveIFrame)" initialize="init();">   
  3.            
  4.         
  5.             import mx.controls.Alert;   
  6.             import flash.external.ExternalInterface;     
  7.             import flash.geom.Point;     
  8.             import flash.net.navigateToURL;     
  9.             private var __source: String;   
  10.                
  11.             //Flash场景0,0坐标 var localPt:Point = new Point(0, 0);    
  12.             //转换为浏览器页面坐标 var globalPt:Point = this.localToGlobal(localPt);     
  13.             //这样就可以在Flex页面中嵌入任意的HTML页面了,为了方便,   
  14.                         public function moveIFrame():void  
  15.             {   
  16.                 var localPoint:Point = new Point(00);     
  17.                 var globalPoint:Point = this.localToGlobal(localPoint);     
  18.                 ExternalInterface.call("moveIFrame", globalPoint.x, globalPoint.y, this.width, this.height);     
  19.             }   
  20.                
  21.             //调用Javascript的loadIFrame方法,设置IFrame的src(URL)   
  22.             public function set source(source: String): void {     
  23.                 if (source)    
  24.                 {     
  25.                     if (!ExternalInterface.available)     
  26.                     {     
  27.                        Alert.show("The ExternalInterface is not available in this container. Internet Explorer ActiveX, " +    
  28.                             "Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.");     
  29.                     }     
  30.                     __source = source;    
  31.                     //Alert.show(source);    
  32.                     ExternalInterface.call("loadIFrame",source);     
  33.                 }     
  34.             }    
  35.                
  36.             //初始化时注册供Javascript调用的方法   
  37.             public function init():void  
  38.             {   
  39.                 ExternalInterface.addCallback("IFrameOnBulr",showIFrameAgain);   
  40.             }   
  41.                
  42.             //Javascript调用IFrameOnBlur方法时的处理方法   
  43.             public function showIFrameAgain():void  
  44.             {   
  45.                 this.source=this.__source;   
  46.                 this.showIFrame=true;   
  47.                 this.moveIFrame();   
  48.             }   
  49.                
  50.             //调用Javascript的IFrameShow方法,设置IFrame的可见状态   
  51.             public function set showIFrame(display:Boolean):void  
  52.             {   
  53.                 ExternalInterface.call("IFrameShow",display);   
  54.             }   
  55.                
  56.             public function get source(): String {     
  57.                 return __source;     
  58.             }     
  59.             //重载了Canvas的visible属性,以便在Canvas隐藏HTML页面中的IFrame   
  60.             override public function set visible(visible: Boolean): void    
  61.             {   
  62.                 super.visible=visible;   
  63.                 if (visible)     
  64.                 {     
  65.                     ExternalInterface.call("showIFrame");     
  66.                 }     
  67.                 else     
  68.                 {     
  69.                     ExternalInterface.call("hideIFrame");     
  70.                 }     
  71.             }    
  72.         ]]>   
  73.        
  74.   



import mx.controls.Alert;
import flash.external.ExternalInterface;
import flash.geom.Point;
import flash.net.navigateToURL;
private var __source: String;

//Flash场景0,0坐标 var localPt:Point = new Point(0, 0);
//转换为浏览器页面坐标 var globalPt:Point = this.localToGlobal(localPt);
//这样就可以在Flex页面中嵌入任意的HTML页面了,为了方便,
public function moveIFrame():void
{
var localPoint:Point = new Point(0, 0);
var globalPoint:Point = this.localToGlobal(localPoint);
ExternalInterface.call("moveIFrame", globalPoint.x, globalPoint.y, this.width, this.height);
}

//调用Javascript的loadIFrame方法,设置IFrame的src(URL)
public function set source(source: String): void {
if (source)
{
if (!ExternalInterface.available)
{
Alert.show("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;
//Alert.show(source);
ExternalInterface.call("loadIFrame",source);
}
}

//初始化时注册供Javascript调用的方法
public function init():void
{
ExternalInterface.addCallback("IFrameOnBulr",showIFrameAgain);
}

//Javascript调用IFrameOnBlur方法时的处理方法
public function showIFrameAgain():void
{
this.source=this.__source;
this.showIFrame=true;
this.moveIFrame();
}

//调用Javascript的IFrameShow方法,设置IFrame的可见状态
public function set showIFrame(display:Boolean):void
{
ExternalInterface.call("IFrameShow",display);
}

public function get source(): String {
return __source;
}
//重载了Canvas的visible属性,以便在Canvas隐藏HTML页面中的IFrame
override public function set visible(visible: Boolean): void
{
super.visible=visible;
if (visible)
{
ExternalInterface.call("showIFrame");
}
else
{
ExternalInterface.call("hideIFrame");
}
}
]]>





IFremaDemo.mxml文件如下

Java代码
  1. "1.0" encoding="utf-8"?>   
  2. "http://www.adobe.com/2006/mxml" layout="absolute" xmlns:zq="*">   
  3. "Iframe.showIFrame=true;Iframe.moveIFrame();Iframe.source=Iframe.source" id="Iframe" source="http://weather.news.qq.com/inc/ss258.htm" x="240" y="23"  string">"190" string">"190"/>   
  4.   





当然少不了js代码,IFremaDemo.html网页是Flex Builder3自动生成的,然后需要加上以下代码:

Java代码
  1.   
  2.   

推荐阅读
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • 本文实例讲述了Android编程实现读取工程中的txt文件功能。分享给大家供大家参考,具体如下:1.众所周知,Android的res文件夹 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
汽车一族coolboy_518
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有