【问题标题】:how do I add a stagewebviewbridge instance to stage with FB 4.6如何使用 FB 4.6 将 stagewebviewbridge 实例添加到舞台
【发布时间】:2014-09-07 05:02:41
【问题描述】:

我在 flash builder 4.6 中使用以下代码(作为 android 和 ios 的测试移动应用程序,尝试用 stagewebviewbridge 替换 stagewebview 以利用 javascript 通信优势)...

代码直接来自文档,看起来很简单,但是 webview 实例没有显示,而且我似乎只能在控制台中显示“END_DISK_PARSING”的跟踪...

由于某种原因,DEVICE_READY 的事件侦听器永远不会调用 onDeviceReady 函数...

它不会产生任何错误,控制台只显示“End_Disk_Parsing”。我使用 FB 4.6 高级版、flex sdk 版本 4.12 并尝试在 android 设备 (HTC One) 上进行测试,并获得 -app.xml 文件中指定的互联网权限。

任何熟悉 SWVBridge 并知道我应该在这里做些什么不同的人吗?

我已经多次使用默认的 stagewebview,并且非常熟悉它的工作原理,但到目前为止,我无法使用 stagewebviewbridge 在舞台上获得任何可见的结果......

我使用的代码如下:

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

【问题讨论】:

    标签: actionscript-3 apache-flex air flash-builder stagewebviewbridge


    【解决方案1】:

    经过一夜的睡眠和一杯咖啡后解决了这个问题:

    这段代码对我来说很好用:

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

    它还提醒我如何处理 flash builder / as3 项目中的“添加子”错误...首先我必须在舞台上添加一个“ui 组件”...

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

    然后我们可以将子组件添加到该 uicomponent:

    container.addChild(webView);
    

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2013-03-21
      • 1970-01-01
      • 2012-11-22
      • 2010-12-26
      • 1970-01-01
      • 2013-03-10
      相关资源
      最近更新 更多