2

私はフラッシュビルダー4.6で次のコードを使用しています(AndroidおよびiOSのテストモバイルアプリとして、stagewebviewをstagewebviewbridgeに置き換えて、javascript通信の利点を活用しようとしています)...

コードはドキュメントから直接取得され、簡単に見えますが、webview インスタンスは表示されず、コンソールに「END_DISK_PARSING」が表示されるトレースまでしか取得できないようです...

onDeviceReady 関数は、何らかの理由で DEVICE_READY のイベント リスナーによって呼び出されることはありません...

エラーは発生せず、コンソールには「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 );
            }
4

1 に答える 1

2

新鮮な夜の睡眠とコーヒーを飲んだ後、これを解決しました:

このコードは私にとってはうまくいきます:

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

また、フラッシュ ビルダー/as3 プロジェクトで「子の追加」エラーを処理する方法を思い出しました...最初に「UI コンポーネント」をステージに追加する必要があります...

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

次に、その uicomponent に子を追加できます。

container.addChild(webView);

これが他の誰かに役立つことを願っています。

于 2014-09-07T15:34:36.690 に答える