Помогите с проверкой значения flashVars во встраиваемом коде AS3 - PullRequest
2 голосов
/ 03 февраля 2011

в надежде найти немного направления и помочь с неприятной проблемой прямо сейчас.

Изначально я думал, что это проблема с моим оператором Try / Catch, но на самом деле моя проблема на самом деле просто пытается сделатьотметьте оператор If / Else, чтобы узнать, может ли мой проигрыватель Flash получить какие-либо данные из flashVar.Если flashVar VID = отлично, иначе прочитайте из XML-файла.

В основном это то, что мне нужно, чтобы это произошло:

  • Проверьте, есть лизначения flashVar
  • Если это так, загрузите другие файлы Class и НЕ получите 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 ]

3 голосов
/ 03 февраля 2011

Попробуйте и поймайте, чтобы ловить ошибки, а не просто условные.

Все, что вам нужно:

if(stage.loaderInfo.parameters["VID"])
{
  ... load the embed version
}else{
   ... load the xml version
}
2 голосов
/ 03 февраля 2011

Разве вы не можете попробовать что-то подобное ...

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