as3 StageWebView在一个类中不显示

时间:2014-06-14 02:30:06

标签: actionscript-3 stagewebview

我确信这很简单。我有一个Main.as类调用另一个正在加载StageWebView的类。如果自己调用StageWebView工作正常,但是当我从另一个类调用它时它将无法显示。我忘记了什么简单的事情?

也许它与加载的类中的“舞台”有关?

Main.as

public function addPopeNews()
    {
    thePopeNews = new popeNews();
    addChild(thePopeNews);      
    }

PopeNews.as

package com
{

    import flash.display.MovieClip;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.net.URLRequest;
    import flash.media.StageWebView;
    import flash.geom.Rectangle;

    public class popeNews extends MovieClip
    {


        public var backBar:popeNewsBar;
        public var webView:StageWebView;

        public function popeNews()
        {

        webView=new StageWebView();
        webView.stage = this.stage;



        webView.loadURL("www.myUrl.com");
        trace("POPE NEWS!!!"); /// trace works! 


        backBar = new popeNewsBar();
        backBar.width = Main._screenX;
        backBar.scaleY = backBar.scaleX;

        webView.addEventListener(Event.COMPLETE, webLoaded);
            webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING,onChanging);


        }

        public function webLoaded(e:Event)
        {
            trace("web loaded"); // trace works!!

            if (webView.isHistoryBackEnabled)
            {
            addChild(backBar);
            backBar.bb.addEventListener(MouseEvent.CLICK, goBack);
            webView.viewPort = new Rectangle(0,backBar.height,Main._screenX,Main._screenY - backBar.height);
            }
            else
            {
                webView.viewPort = new Rectangle(0,0,Main._screenX,Main._screenY);
            }
        }

        public function goBack(e:Event)
        {
            if (webView.isHistoryBackEnabled)
            {
                trace("Called GO BACK");
                webView.historyBack();
                removeChild(backBar);
                backBar.bb.removeEventListener(MouseEvent.CLICK, goBack);
                return;
            }

            if (webView.isHistoryForwardEnabled)
            {
                webView.historyForward();
                return;
            }
        }

        public function onError(e:ErrorEvent):void
        {
            //infoBox.text="Page is not available. Try reloading.";
        }

        public function onChanging(e:LocationChangeEvent):void
        {

            //webView.viewPort = null;
            trace("Called CHANGING!!!");

        }

        /// 
    }
}

1 个答案:

答案 0 :(得分:1)

您是对的,null构造函数中的舞台为PopeNews。您应该将初始化代码放入新方法中,并监听ADDED_TO_STAGE事件。

public function popeNews()
{
    addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}

private function addedToStageHandler(ev:Event):void
{

    webView=new StageWebView();
    webView.stage = this.stage;

    webView.loadURL("www.myUrl.com");
    trace("POPE NEWS!!!"); /// trace works! 

    backBar = new popeNewsBar();
    backBar.width = Main._screenX;
    backBar.scaleY = backBar.scaleX;

    webView.addEventListener(Event.COMPLETE, webLoaded);
    webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING,onChanging);
}

此外,按照惯例,类名称是大写的。