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 );
}