自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

在Flex中嵌入完整HTML頁面

有時候我們需要在Flex應(yīng)用中嵌入HTML代碼,根據(jù)嵌入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應(yīng)用嵌入到HTML頁面中,然后通過Flex2中的ExternalInterface(Flex1.5使用getURL("javascript:javascriptMethod"))

來實現(xiàn)Flex與HTMLjavascript的相互交互,進一步的,如果要在Flex應(yīng)用中嵌入完整的HTML呢?

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

 

也就是說,我們包含F(xiàn)lexSWF文件的HTML頁面主要有三個部分:

1、Flexswf插件容器,F(xiàn)lexBuilder自動生成部分

  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標簽,絕對定位,用來導(dǎo)入HTML頁面

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

3、移動Iframe和在Iframe中導(dǎo)入需嵌入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中的導(dǎo)入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#兩個方法分別直接調(diào)用使用ExternalInterface.call調(diào)用前面我們提到的HTML頁面上的兩個Javascript方法。另外一個要注意的是<Canvas/>
繼承自flash.display.DisplayObject類的localToGlobal方法的使用,該方法將基于Flash場景的坐標轉(zhuǎn)換為基于全局本地坐標,也就是瀏覽器頁面坐標:

//Flash場景0,0坐標varlocalPt:Point=newPoint(0,0);//轉(zhuǎn)換為瀏覽器頁面坐標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屬性更新時,調(diào)用ExternalInterface.call("loadIFrame",source)
調(diào)用javascript方法loadIFrame方法在HTML頁面中的IFrame中載入要嵌入的HTML頁面。
另外,重載了Canvas的visible屬性,以便在Canvas隱藏HTML頁面中的IFrame。
如下使用該組件在Flex應(yīng)用中嵌入HTML頁面方法:

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


 

【編輯推薦】

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

 

 

責任編輯:佚名 來源: webjx.com
相關(guān)推薦

2010-08-09 09:09:43

Flex技術(shù)

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結(jié)合

2010-08-10 15:38:32

Flex2.0

2010-08-10 14:08:09

Flex嵌入字體

2010-07-29 17:26:54

Flex富客戶端技術(shù)

2010-08-11 12:50:04

Flex4

2010-06-30 16:52:23

UML數(shù)據(jù)建模

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

2021-07-09 12:37:31

GoPython編程語言

2010-08-04 16:24:08

FlexSDK4

2022-06-28 09:01:26

RSSFeedlyCommafeed
點贊
收藏

51CTO技術(shù)棧公眾號