`
kaidi0314
  • 浏览: 86125 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Flex中实现文字链接(转)

    博客分类:
  • flex
 
阅读更多
http://godfei.blog.163.com/blog/static/214256102007102510411407/

FLEX的TextArea实现部分HTML的,你可以直接写HTML中的链接来实现

比如

<mx:TextArea>
        <mx:htmlText>
            <![CDATA[
                <a href="http://www.riachina.com" target="_blank"><u>链接1</u></a>
                <a href="http://www.riachina.com" target="_blank"><u>链接2</u></a>
                <a href="http://www.riachina.com" target="_blank"><u>链接3</u></a>
            ]]>
        </mx:htmlText>
    </mx:TextArea>
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应用中嵌入本站首页。
分享到:
评论

相关推荐

    Flex 选项卡的实现

    这可以通过CSS样式来实现,可以在MXML文件中定义,也可以在外部CSS文件中定义并链接。例如,我们可以设置选项卡的文字颜色和背景色: ```xml Tab { color: #FFFFFF; background-color: #336699; } ``` 4....

    应用flex布局,模拟实现静态知乎首页

    在本文中,我们将深入探讨如何使用Flex布局技术来模拟实现静态知乎首页。Flex布局,全称为Flexible Box布局,是CSS3中的一个模块,用于解决传统布局模式在处理复杂多变的网页元素排列时的局限性。它使得容器可以更...

    flex 多个聊天实例

    虽然没有具体的文章内容,但通过以上分析,我们可以大致了解一个关于Flex实现多聊天实例的项目可能涵盖的技术点。实际学习时,你可能会从创建基本的Flex项目开始,然后逐步添加聊天功能,实现用户注册、登录,创建和...

    ArcGIS Flex 专题地图制作的代码与说明

    本主题将深入探讨如何使用ArcGIS Flex来创建具有特色的专题地图,包括等级地图、柱状图和文字标注的实现。 一、等级地图 等级地图是通过不同颜色或图案来表示地理区域的分类或等级,常用于显示数据的分布和差异。在...

    Flex样式生成工具

    3. **字体和文本样式**:可以设置字体家族、大小、颜色、对齐方式、行高以及文字阴影等属性,以实现丰富的文本样式。 4. **边框和填充**:允许用户定义组件的边框样式,包括宽度、颜色、样式(实线、虚线等)以及...

    flex2

    1. MXML:MXML作为Flex 2的界面描述语言,让开发者能用XML来定义UI组件,实现声明式编程,提高开发效率。 2. ActionScript 3.0:Flex 2采用了ActionScript 3.0,提供了更强大的类型系统、错误处理机制和事件模型,...

    Flex3中应用CSS完全详解

    这些样式定义与本地样式定义相似,但是它们被保存在一个独立的文件中,并通过`source`属性链接到MXML文件。 #### 三、使用内联样式 除了本地样式和外部样式表之外,Flex还允许直接在MXML标签中设置样式属性,即...

    Flex云状3D导航组件

    在Flex中,这种组件通常通过ActionScript 3.0编程实现,利用Flex SDK中的图形和动画库来创建视觉效果。开发者可以自定义云状布局的样式,包括文字大小、颜色、旋转角度、深度以及整体的3D空间布局。此外,组件还可以...

    Flex Css完全手册

    Flex CSS完全手册旨在深入解析如何在Flex环境中应用CSS来实现丰富的用户界面设计。Flex是一种用于构建富互联网应用程序(RIA)的框架,它允许开发者通过使用MXML和ActionScript创建交互式、响应式的Web应用程序。CSS...

    Flex和java socket聊天源码

    在Flex中,可以使用TextFlow组件来实现图文混排,它可以嵌入图片、链接等元素,并进行复杂的布局控制。同时,需要后端Java处理图片的上传、存储和传输,确保图片能够正确地显示在聊天界面上。 4. 聊天表情支持:...

    自定义Flex右键菜单

    在这里,我们主要探讨如何在Flex项目中实现自定义的右键菜单。 首先,我们需要了解Flex中的上下文菜单(ContextMenu)组件。这是Flex提供的一种内置机制,允许开发者为用户界面添加右键点击事件响应。默认情况下,...

    flex4之语法入门

    - 单击 “Flash Builder 4” 图标或文字链接,进入下载页面。 - 下载前需注册 Adobe ID 并登录。 - 选择合适的安装包进行下载。 3. **安装 Flash Builder 4 Beta**: - 运行下载好的安装程序,选择安装语言。 -...

    CSS3实现的下划线跟随文字导航特效源码.zip

    在这个特效中,可能用到了伪元素来创建下划线,并通过控制其位置来实现跟随文字的效果。 6. **定位(Positioning)**:可能使用`position`属性(如`relative`、`absolute`或`fixed`)来精确控制下划线元素的位置,...

    Flex常规控件和组件

    在 Flex 中,控件和组件是构建用户界面的基本元素,它们提供了多种功能和样式,以满足不同需求。下面将详细介绍这些常规的 Flex 控件和组件: 1. Button:Button 是最基本的动作触发器,用于响应用户的单击事件。它...

    HTML5实现图标会旋转的竖向导航菜单.rar

    在这个竖向导航菜单中,可以使用`display: flex`将父容器设置为flex容器,并通过`flex-direction: column`让子元素垂直排列。 5. 响应式设计: 考虑到不同设备的屏幕尺寸,可以使用媒体查询(`media queries`)来...

    CSS将文字显示在水平线中间测试文件

    标题中的“CSS将文字显示在水平线中间”指的是在网页设计中如何利用CSS(层叠样式表)技术来实现文本内容在容器内的水平居中对齐。这涉及到CSS的布局和定位知识,尤其是关于文本对齐和盒模型的属性。 在CSS中,有...

    Flex+spring+hibernate整合视频学习交流part_2

    【描述】中虽然没有具体的文字描述,但我们可以推测这部分内容可能是通过一个实际项目或教程的形式,讲解如何在Flex前端与Spring和Hibernate后端之间建立数据交互。博客链接指向了ITEYE的一个博客,可能包含了更详细...

    flex3的cookbook书籍完整版dpf(包含目录)

    在FlexBuilder中设置MXML编译器选项 1.5节.在FlexBuilder外部编译Flex项目 1.6节.在MXML中添加事件监听器 1.7节.设置子节点属性 1.8节.定义数组和对象 1.9节.在ActionScript中设置变量的作用域 1.10节.在...

    css实现的文字模糊效果菜单栏代码,鼠标悬停之前文字是模糊的,鼠标悬停之后变清晰。兼容主流浏览器

    本文将详细介绍如何使用CSS实现一种独特的文字模糊效果,即在鼠标悬停之前文字呈现模糊状态,当鼠标悬停时文字变得清晰。这种效果可以应用于菜单栏,增加用户交互体验,同时兼容主流浏览器。 首先,我们需要理解CSS...

    Flex 有用的几行代码

    - **知识点说明**:在 Flex 中,`System.setClipboard()` 方法可以用来将指定字符串复制到剪贴板上。这对于需要用户复制某些信息到其他地方的应用场景非常有用。 - **应用场景**:例如,在一个表单填写完成后,用户...

Global site tag (gtag.js) - Google Analytics