成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

技術前沿 如何在Flex中嵌入完整HTML頁面

開發 后端
本文向大家介紹一下在Flex中如何嵌入完整HTML頁面,有時候我們需要在Flex應用中嵌入HTML代碼,根據嵌入HTML要求的不同有不同的方法。

Flex有很多值得學習的地方,本文和大家重點討論一下如何在Flex中嵌入完整HTML頁面,有時候我們需要在Flex應用中嵌入HTML代碼,根據嵌入HTML要求的不同有兩種方法,請看下文詳細介紹。

在Flex中嵌入完整HTML頁面

有時候我們需要在Flex應用中嵌入HTML代碼,根據嵌入HTML要求的不同有以下兩種方法:

1、Flex文本組件(Label、Text、TextArea)的htmlText屬性支持一些基本的HTML代碼,例如:

  1. <mx:TextArea> 
  2. <mx:htmlText> 
  3. <![CDATA[  
  4. <palign="center"><fontsize="15"color="#3399ff">  
  5. thisisahtmlcode</font></p>  
  6. ]]> 
  7. </mx:htmlText> 
  8. </mx:TextArea> 
  9.  

 2、我們可以將Flex應用嵌入到HTML頁面中,然后通過Flex2中的ExternalInterface(Flex1.5使用getURL("javascript:javascriptMethod"))

來實現Flex與HTMLjavascript的相互交互,進一步的,如果要在Flex應用中嵌入完整的HTML呢?

其實實現的方法很簡單,只需要使用HTML的Iframe標簽來導入需嵌入的HTML頁面,然后使用ExternalInterface調用相應的javasript將該Iframe移動到我們Flex頁面需要嵌入HTML頁面的部分之上就可以了,示意圖如下:

 

也就是說,我們包含FlexSWF文件的HTML頁面主要有三個部分:

1、Flexswf插件容器,FlexBuilder自動生成部分

  1. <objectclassidobjectclassid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
  2. id="IFrameDemo"width="100%"height="100%" 
  3. codebase="http://download.macromedia.com/pub/shockwave/  
  4. cabs/flash/swflash.cab"> 
  5. <paramnameparamname="movie"value="IFrameDemo.swf"/> 
  6. <paramnameparamname="quality"value="high"/> 
  7. <paramnameparamname="bgcolor"value="#869ca7"/> 
  8. <embedsrcembedsrc="IFrameDemo.swf"quality="high"bgcolor="#869ca7" 
  9. width="100%"height="100%"name="detectiontest" 
  10. aligh="middle" 
  11. play="true"loop="false"quality="high" 
  12. allowScriptAccess="sameDomain" 
  13. type="application/x-shockwave-flash" 
  14. wmode="opaque" 
  15. swLiveConnect="true" 
  16. pluginspage="http://www.macromedia.com/go/getflashplayer"> 
  17. </embed> 
  18. </object> 
  19.  

 2、HTMLIframe標簽,絕對定位,用來導入HTML頁面

  1. <iframeidiframeid="myFrame"name="myFrame"frameborder="0" 
  2. style="position:absolute;background-color:transparent;border:0px;visibility:hidden;"/> 

3、移動Iframe和在Iframe中導入需嵌入FLEX中的HTML頁面的腳本

  1. <script> 
  2. functionmoveIFrame(x,y,w,h){  
  3. varframeRef=document.getElementById("myFrame");  
  4. frameRef.style.left=x;  
  5. frameRef.style.top=y;  
  6. frameRef.width=w;  
  7. frameRef.height=h;  
  8. }  
  9. functionloadIFrame(url){  
  10. top.frames["myFrame"].location.href=url;  
  11. }  
  12. </script> 
  13.  

 Flex中的導入Iframe頁面和移動Iframe的代碼如下:

  1. importflash.external.ExternalInterface;  
  2. importflash.geom.Point;  
  3. importflash.net.navigateToURL;  
  4. privatevar__source:String;  
  5. privatefunctionmoveIFrame():void{  
  6. varlocalPt:Point=newPoint(0,0);  
  7. varglobalPt:Point=this.localToGlobal(localPt);  
  8. ExternalInterface.call("moveIFrame",globalPt.x,globalPt.y,this.width,this.  
  9. height);  
  10. }  
  11. publicfunctionsetsource(source:String):void{  
  12. if(source){  
  13. if(!ExternalInterface.available)  
  14. {  
  15. //TODO:determineifthisErrorisactuallyneeded.Thedebugger  
  16. //buildgivestheerrorbelow.Assumingthatthiserrorwillnotshow  
  17. //upinthereleasebuildbuthaven’tchecked.  
  18. thrownewError("TheExternalInterfaceisnotavailableinthiscontainer.  
  19. InternetExplorerActiveX,  
  20. Firefox,Mozilla1.7.5andgreater,orotherbrowsersthatsupportNPRuntimearerequired.");  
  21. }  
  22. __source=source;  
  23. ExternalInterface.call("loadIFrame",source);  
  24. }  
  25. }  

#p#兩個方法分別直接調用使用ExternalInterface.call調用前面我們提到的HTML頁面上的兩個Javascript方法。另外一個要注意的是<Canvas/>
繼承自flash.display.DisplayObject類的localToGlobal方法的使用,該方法將基于Flash場景的坐標轉換為基于全局本地坐標,也就是瀏覽器頁面坐標:

//Flash場景0,0坐標varlocalPt:Point=newPoint(0,0);//轉換為瀏覽器頁面坐標varglobalPt:Point=this.localToGlobal(localPt);
這樣就可以在Flex頁面中嵌入任意的HTML頁面了,為了方便,Brian寫了個嵌入HTML頁面的代理IFrame組件,該組件封裝了所有需要的Flex端代碼:
 

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <mx:Canvasxmlns:mxmx:Canvasxmlns:mx="http://www.macromedia.com/2005/mxml" 
  3. resize="callLater(moveIFrame)" 
  4. move="callLater(moveIFrame)"> 
  5. <mx:Script> 
  6. <![CDATA[  
  7. importflash.external.ExternalInterface;  
  8. importflash.geom.Point;  
  9. importflash.net.navigateToURL;  
  10. privatevar__source:String;  
  11. privatefunctionmoveIFrame():void{  
  12. varlocalPt:Point=newPoint(0,0);  
  13. varglobalPt:Point=this.localToGlobal(localPt);  
  14. ExternalInterface.call("moveIFrame",globalPt.x,globalPt.y,this.width,this.height);  
  15. }  
  16. publicfunctionsetsource(source:String):void{  
  17. if(source){  
  18. if(!ExternalInterface.available)  
  19. {  
  20. //TODO:determineifthisErrorisactuallyneeded.Thedebugger  
  21. //buildgivestheerrorbelow.Assumingthatthiserrorwillnotshow  
  22. //upinthereleasebuildbuthaven’tchecked.  
  23. thrownewError("TheExternalInterfaceisnotavailableinthiscontainer.
  24. InternetExplorerActiveX,Firefox,  
  25. Mozilla1.7.5andgreater,orotherbrowsersthatsupportNPRuntimearerequired.");  
  26. }  
  27. __source=source;  
  28. ExternalInterface.call("loadIFrame",source);  
  29. }  
  30. }  
  31. publicfunctiongetsource():String{  
  32. return__source;  
  33. }  
  34. overridepublicfunctionsetvisible(visible:Boolean):void{  
  35. super.visible=visible;  
  36. if(visible)  
  37. {  
  38. ExternalInterface.call("showIFrame");  
  39. }  
  40. else  
  41. {  
  42. ExternalInterface.call("hideIFrame");  
  43. }  
  44. }  
  45.  
  46. ]]> 
  47. </mx:Script> 
  48. </mx:Canvas> 
  49.  

該IFrame組件有個source屬性用來記錄需要載入的嵌入HTML頁面的地址,每次source屬性更新時,調用ExternalInterface.call("loadIFrame",source)
調用javascript方法loadIFrame方法在HTML頁面中的IFrame中載入要嵌入的HTML頁面。
另外,重載了Canvas的visible屬性,以便在Canvas隱藏HTML頁面中的IFrame。
如下使用該組件在Flex應用中嵌入HTML頁面方法:

  1. <IFrameidIFrameid="iFrame"source="http://blog.eshangrao.com"width="300"height="400"/> 


 

【編輯推薦】

  1. 技術前沿 Flex2.0 從零開始實現文件上傳
  2. FlexBuilder4十大新特性閃亮登場
  3. 學習總結 在Flex中如何嵌入Flex字體
  4. 揭開Flex正則表達式的神秘面紗
  5. Flex自動化功能測試工具SilkTest用法指導 

 

 

責任編輯:佚名 來源: webjx.com
相關推薦

2010-08-09 09:09:43

Flex技術

2010-07-29 09:08:20

Flex客戶端緩存

2010-08-09 12:59:15

Flex4beta

2010-08-09 13:05:24

Flex4beta

2010-07-30 15:35:11

Flex結合

2010-08-10 15:38:32

Flex2.0

2010-08-10 14:08:09

Flex嵌入字體

2010-07-29 17:26:54

Flex富客戶端技術

2010-06-30 16:52:23

UML數據建模

2010-08-11 12:50:04

Flex4

2010-09-08 14:09:35

切換CSS

2010-09-27 15:26:17

JVM for Lin

2014-08-08 15:36:39

Apdex

2010-08-09 15:41:13

Flex字體

2010-08-09 15:30:00

Flex字體

2010-08-10 13:04:27

FlexBuilder

2010-08-05 13:07:11

FlexJson

2022-06-28 09:01:26

RSSFeedlyCommafeed

2010-08-04 16:24:08

FlexSDK4

2021-07-09 12:37:31

GoPython編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费视频久久 | 成人免费一区二区三区视频网站 | 亚洲精品一区二区三区 | 玖操| 日韩欧美一级精品久久 | 免费观看毛片 | 日本视频免费观看 | 国产一卡二卡三卡 | 91精产国品一二三区 | 成人性生交大免费 | 伊人手机在线视频 | 欧美一级片中文字幕 | 二区在线视频 | 久久中文字幕一区 | 国内精品久久久久久久影视简单 | 国产精品激情 | 国产99视频精品免费播放照片 | 亚洲精精品 | 精品无码久久久久国产 | 国内久久 | 久久久精选 | 韩日在线观看视频 | 日本特黄a级高清免费大片 国产精品久久性 | 亚州av| 中文字幕动漫成人 | 高清久久 | 国产高清免费 | 麻豆av一区二区三区久久 | 在线久草 | 超级黄色一级片 | 免费在线观看成年人视频 | 超碰97在线免费 | 国产综合久久久久久鬼色 | 成人午夜视频在线观看 | 日韩成人影院在线观看 | 亚洲人精品午夜 | 精品三级在线观看 | 亚洲美女一区 | 99成人在线视频 | 日本小视频网站 | 国产精品高清在线 |