actionscript-3 flex air flash-builder stagewebviewbridge

actionscript 3 - ¿Cómo agrego una instancia de stagewebviewbridge a la etapa con FB 4.6



actionscript-3 flex (1)

Resolvió esto después de una nueva noche de sueño y una taza de café:

Este código funciona bien para mí:

import es.xperiments.media.StageWebViewBridge; import es.xperiments.media.StageWebViewBridgeEvent; import es.xperiments.media.StageWebViewDisk; import es.xperiments.media.StageWebviewDiskEvent; import mx.core.UIComponent; import flash.media.StageWebView; import spark.events.ViewNavigatorEvent; protected var webView:StageWebViewBridge; protected function view1_addedToStageHandler(event:Event):void { // OPTIONAL BEFORE INIT OPTIONS SETTING StageWebViewDisk.setDebugMode( true ); // if we need debug mode assign it before initializaton // StageWebViewDisk Events. First time app launches it proceses the filesystem // As it can take some time, depending of the filesize of the included files // we provide 2 events to know when process start/finish StageWebViewDisk.addEventListener(StageWebviewDiskEvent.START_DISK_PARSING, onDiskCacheStart); StageWebViewDisk.addEventListener(StageWebviewDiskEvent.END_DISK_PARSING, onDiskCacheEnd); StageWebViewDisk.initialize( this.stage ); } protected function onDiskCacheStart(e:StageWebviewDiskEvent):void { trace("SWVD parsing started"); } protected function onDiskCacheEnd(e:StageWebviewDiskEvent):void { trace("SWVD parsing ended"); webView = new StageWebViewBridge(0, 50, 400, 450); webView.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); SWVB.addChild(webView); } protected function onAddedToStage(e:Event):void { webView.loadURL("http://www.google.com"); //webView.loadLocalURL("applink:/index.html"); }

También me recordó cómo lidiar con los errores de ''agregar hijo'' en los proyectos flash builder / as3 ... primero tengo que agregar un ''componente ui'' al escenario ...

// container ( IVisualElement ) for DisplayObjects var container:UIComponent = new UIComponent(); addElement( container );

entonces podemos agregar un niño a ese uicomponente:

container.addChild(webView);

Espero que esto ayude a alguien más.

Estoy usando el siguiente código en flash builder 4.6 (como una aplicación móvil de prueba para Android y iOS, tratando de reemplazar stagewebview con stagewebviewbridge para aprovechar los beneficios de comunicación de JavaScript) ...

El código proviene directamente de la documentación y parece sencillo, pero la instancia de la vista web no se muestra y parece que solo puedo llegar al límite donde se muestra "END_DISK_PARSING" en la consola ...

la función onDeviceReady nunca es llamada por el detector de eventos para DEVICE_READY por algún motivo ...

No produce ningún error y la consola solo muestra "End_Disk_Parsing". Estoy usando FB 4.6 premium, flex sdk ver 4.12 y estoy tratando de probar en un dispositivo Android (HTC One) y tengo permiso para internet especificado en el archivo -app.xml.

¿Alguien familiarizado con SWVBridge y sabe lo que debería hacer de manera diferente aquí?

He usado la vista de escenario predeterminada muchas veces y estoy muy familiarizado con la forma en que funciona, pero hasta ahora no puedo obtener resultados visibles en el escenario con stagewebviewbridge ...

el código Im que usa sigue:

import es.xperiments.media.StageWebViewDisk; import es.xperiments.media.StageWebviewDiskEvent; import es.xperiments.media.StageWebViewBridge; import es.xperiments.media.StageWebViewBridgeEvent; import flash.events.Event; import flash.events.MouseEvent; // this is our main view public var view:StageWebViewBridge; public function init1():void{ // init the disk filesystem StageWebViewDisk.addEventListener( StageWebviewDiskEvent.END_DISK_PARSING, onInit ); StageWebViewDisk.setDebugMode( true ); StageWebViewDisk.initialize( stage ); } // Fired when StageWebviewDiskEvent cache process finish public function onInit( e:StageWebviewDiskEvent ):void{ trace( ''END_DISK_PARSING''); // create the view view = new StageWebViewBridge( 0,0, 320,240 ); // listen StageWebViewBridgeEvent.DEVICE_READY event to be sure the communication is ok view.addEventListener(StageWebViewBridgeEvent.DEVICE_READY, onDeviceReady ); // load a test url... view.loadURL(''http://www.google.com''); } public function onDeviceReady( e:Event ):void{ trace(''onDeviceReady/n''); // all is loaded and ok, show the view addChild( view ); }