帮助检查嵌入代码AS3中的flashVars值

时间:2011-02-03 18:21:36

标签: flash actionscript-3 if-statement try-catch

希望有一点方向,并帮助解决令人沮丧的问题。

最初我认为这是我的Try / Catch语句的问题,但实际上我的问题实际上只是尝试检查If / Else语句以查看我的Flash播放器是否可以从flashVar获取任何数据。如果flashVar VID = great,则Else从XML文件中读取。

基本上这就是我需要发生的事情:

  • 检查是否有flashVar值
  • 如果是,则加载其他类文件,不要获取XML文件
  • 如果没有,则运行Catch语句中的代码并加载XML文件

更新后的代码我提出了很多意见来解释我正在尝试做的事情:(

public function playerLive():void
{
// Attempt to load from HTML EMBED
// Maybe the problem is here? 
// Tried different syntax / keywords no luck so far

//if (this.loaderInfo.parameters["VID"])
//if (stage.loaderInfo.parameters["file"])
//if (this.loaderInfo.parameters.hasOwnProperty("file"))
if(root.loaderInfo.parameters.hasOwnProperty("VID") && root.loaderInfo.parameters.VID != null)
{
    // Trying keyword root
    varVid   = root.loaderInfo.parameters.VID;
    varChid  = root.loaderInfo.parameters.CHID;
    vidURL   = root.loaderInfo.parameters.file;
    vidSplit = vidURL.split(".flv")[0].split("/");
    vidTitle = root.loaderInfo.parameters.title;
    vidKey   = root.loaderInfo.parameters.keyURL;

    // - Trying keyword stage
    /*varVid   = stage.loaderInfo.parameters.VID;
    varChid  = stage.loaderInfo.parameters.CHID;
    vidURL   = stage.loaderInfo.parameters.file;
    vidSplit = vidURL.split(".flv")[0].split("/");
    vidTitle = stage.loaderInfo.parameters.title;
    vidKey   = stage.loaderInfo.parameters.keyURL;*/

    // - Trying keyword this
    /*varVid   = this.loaderInfo.parameters.VID;
    varChid  = this.loaderInfo.parameters.CHID;
    vidURL   = this.loaderInfo.parameters.file;
    vidSplit = vidURL.split(".flv")[0].split("/");
    vidTitle = this.loaderInfo.parameters.title;
    vidKey   = this.loaderInfo.parameters.keyURL;*/

    setup();

} else {

    varVid  = urlVars.VID
    varChid = urlVars.CHID
    xmlURL = "http://www.howdini.com/H_player_xml.php?VID="+varVid+"&CHID="+varChid;
    readXML();
}

// The old code
/*try {
    varVid   = this.loaderInfo.parameters.VID;
    varChid  = this.loaderInfo.parameters.CHID;
    vidURL   = this.loaderInfo.parameters.file;
    vidSplit = vidURL.split(".flv")[0].split("/");
    vidTitle = this.loaderInfo.parameters.title;
    vidKey   = this.loaderInfo.parameters.keyURL;
    setup();

// Facebook Player
    } catch (e) {
    varVid  = urlVars.VID
    varChid = urlVars.CHID
    xmlURL  = "http://www.howdini.com/H_player_xml.php?VID="+varVid+"&CHID="+varChid;
    readXML();
    }
}*/
}

function readXML():void
{
    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, onXmlLoadSuccess);
    loader.addEventListener(IOErrorEvent.IO_ERROR, onXmlLoadFailed);
    loader.load(new URLRequest(xmlURL));
}

function onXmlLoadFailed(event:IOErrorEvent):void
{
    //xml failed to load;
}

function onXmlLoadSuccess(event:Event):void
{
    //parse your xml, then run setup;
    setup();
}

嵌入代码的含义(出于安全原因重命名了一些值):

<object width=450 height=292 border=0 >
<embed src="http://dev.mysite.com/flvplayer_lite.swf" width="450" height="292" 
flashvars="file=http://limelightserver.net/o18/VideoName.flv&VID=13&CHID=6&title=Video Title&keyURL=118258&autostart=false&showfsbutton=false&c1=1&c2=8430754&c3=8430754&c4=Category Namec5=02" type="application/x-shockwave-flash" border="0" wmode="transparent">
</embed>
</object>

2 个答案:

答案 0 :(得分:3)

尝试和捕获是捕获错误,而不是简单的条件。

您只需要:

if(stage.loaderInfo.parameters["VID"])
{
  ... load the embed version
}else{
   ... load the xml version
}

答案 1 :(得分:2)

你能不能尝试这样的事情......

    function init():void
    {
        // check to see if loaderInfo params are available
        // if they are initalise vars and run setup()
        // else load xml, parse it, and then call setup()

        if(root.loaderInfo.parameters.hasOwnProperty("VID") && root.loaderInfo.parameters.VID != null)
        {
            varVid = root.loaderInfo.parameters.VID;

            varChid = root.loaderInfo.parameters.CHID;
            vidURL = root.loaderInfo.parameters.file;
            vidSplit = vidURL.split(".flv")[0].split("/");
            vidTitle = root.loaderInfo.parameters.title;
            vidKey = root.loaderInfo.parameters.keyURL;

            // comScore
            c1 = root.loaderInfo.parameters.c1;
            c2 = root.loaderInfo.parameters.c2;
            c3 = root.loaderInfo.parameters.c3;
            c4 = root.loaderInfo.parameters.c4;
            c5 = root.loaderInfo.parameters.c5;

            setup();
        }
        else
        {
            // variables in URL not FlashVars: http://mysite.com/player.swf?VID=13&CHID=2
            varVid = urlVars.VID
            varChid = urlVars.CHID

            xmlURL = "http://www.mysite.com/player_xml.php?VID=" + varVid + "&CHID=" + varChid;
            readXML();
        }
    }

    function readXML():void
    {
        var loader:URLLoader = new URLLoader();
        loader.addEventListener(Event.COMPLETE, onXmlLoadSuccess);
        loader.addEventListener(IOErrorEvent.IO_ERROR, onXmlLoadFailed);
        loader.load(new URLRequest(xmlURL));
    }

    function onXmlLoadFailed(event:IOErrorEvent):void
    {
        //xml failed to load;
    }

    function onXmlLoadSuccess(event:Event):void
    {
        //parse your xml, then run setup;
        setup();
    }

    function setup():void
    {
        drawVideo();
        drawSplash();
        drawControls();
        drawBorder();
        vd.playerCntrls = pc;
        pc.videoDsply = vd;
        pc.scrnButton = sp;
    }