2012-11-14 16 views
3
我有上顯示的Flex移動4.6(Flash Builder中4.6)時,StageWebView問題,當我創建它動態

,該事件被正確調用,但沒有什麼是可見的,這裏是我的代碼:Flex移動的StageWebView不顯示

<components:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:components="spark.components.*" 
      actionBarVisible="false" 
      title="ActivityView" 
      creationComplete="init()" 
      > 
<components:layout> 
    <s:BasicLayout/> 
</components:layout> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 
<fx:Script> 
    <![CDATA[ 
     private var webView:StageWebView; 

     protected function init():void { 
      webView = new StageWebView(); 
      webView.stage = this.stage; 
      webView.viewPort = new Rectangle(5, 20, screen.width-10, screen.height-40); 
      webView.addEventListener(Event.COMPLETE, onURLLoadComplete); 
      webView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, onLocationChange); 
      webView.loadURL("http://google.com"); 
     } 

     protected function onURLLoadComplete(event:Event):void 
     { 
      trace("Load Complete"); 
     } 

     protected function onLocationChange(event:LocationChangeEvent):void 
     { 
      trace("Location change: " + event.location); 
     } 

    ]]> 
</fx:Script> 
</components:View> 
+1

我設法解決了這個最後,通過創建addedToStage後的StageWebView被調用。 stereo

回答

0

webView.stage = this.stage;

當它在creationComplete事件處理程序,this.stage仍然是空。

您應該將init()置於addedToStage事件處理程序的內部。

0

您可以使用FlexGlobals.topLevelApplication.stage代替,因此:

webView.stage = FlexGlobals.topLevelApplication.stage;

0

我認爲最安全的添加StageWebView的方法是在createdChildren()中添加StageWebView(您必須手動定義Web視圖的寬度和高度,因爲父視圖的寬度和高度將爲0)或viewActiveEvent狀態期間。

猶大寫了一個非常不錯的網頁視圖類,這是非常容易使用http://www.judahfrangipane.com/blog/2011/01/16/stagewebview-uicomponent/

希望這有助於

0

可以使用StageWebViewBridge顯示HTML和Javascript溝通。我希望這將幫助您在flex Web和AIR應用程序中顯示HTML。在你的代碼中,沒有爲StageWebView設置舞臺,你只需在addedToStage處理程序中指定webView.stage = this.stage或使用下面的方法加載html。

 private var webView:StageWebViewBridge; 

     protected function addedToStageHandler(event:Event):void 
     { 
      StageWebViewDisk.addEventListener(StageWebviewDiskEvent.END_DISK_PARSING, onInit); 
      StageWebViewDisk.setDebugMode(true); 
      StageWebViewDisk.initialize(stage); 
     } 

     private function onInit(e:StageWebviewDiskEvent):void 
     { 
      if(!webView) 
       webView = new StageWebViewBridge(0, 300, 900, 300); 
      webView.addEventListener(StageWebViewBridgeEvent.DEVICE_READY, onDeviceReady); 
      webView.addEventListener(Event.COMPLETE, onCompleteHandler); 
      webView.addEventListener(ErrorEvent.ERROR, onErrorHandler); 
      webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, onLocationChange); 
      var _view:SpriteVisualElement = new SpriteVisualElement(); 
      _view.addChild(webView); 
      addElement(_view); 
      webView.loadURL("http://www.google.com"); 
     } 
0

您可以添加階段是這樣的...

private var _stage : Stage; 

private function added_to_stage_handler():void 
{ 
    _stage = this.stage; 
    initStage(); 
} 
private function initStage() : void 
{ 
    webView.stage = _stage; 
} 
相關問題