0

私は AS3 の初心者からかなり初心者で、fla を拡張する必要があることに気付きました。それは第三者によって書かれました。目標はflashvarsにアクセスすることですが、私の人生ではそれを機能させることはできません...何日もかけて学習しました..

私が取り組んでいる fla は、2 つのフレームを持つタイムライン上のコードです。ムービークリップはフレーム 2 まで実行され、停止します。

フレーム 2 では、flashvar を使用する必要があります。

フレーム 2 にテキスト ボックスを表示する簡単な例を作成しました。

フレーム 1

var my_var:String = new String();
my_var = root.loaderInfo.parameters.uploadId;

フレーム 2

my_txt.text = my_var;
stop();

ただし、サードパーティの fla で同じアプローチを使用すると、NULL 出力が得られます。TLFテキストも使用していません(と思います)。

あるケースでは機能するのに、他のケースでは機能しない理由がわかりません。私はそれが周囲のコードとの競合に関係している可能性があると考えていますが、それを追跡するのに AS について十分に知りません。これに関するヘルプは大歓迎です。

フレーム 1

import net.bizmodules.uvg.loading;

stop();

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.showDefaultContextMenu = false;
stage.quality = StageQuality.BEST;

function RandomValue()
{
    var d = new Date();
    return String(d.getDate()) + String(d.getHours()) + String(d.getMinutes()) + String(d.getSeconds());
}
var my_var:String;
my_var = root.loaderInfo.parameters.uploadId;
var userId;
var albums:Object;
var resource:Object;
var strUploadPage:String;
if (root.loaderInfo.parameters.uploadPage != undefined)
    strUploadPage = root.loaderInfo.parameters.uploadPage;
else
    strUploadPage = "http://localhost/dnn450/desktopmodules/ultramediagallery/flashuploadpage.aspx?PortalId=0&ModuleId=455";

if (strUploadPage.indexOf("?") > 0)
    strUploadPage += "&";
else
    strUploadPage += "?";

strUploadPage += "action=loadAlbums&seed=" + RandomValue();
trace(strUploadPage);

var myLoading:MovieClip = new loading();
myLoading.x = (stage.stageWidth - myLoading.width) / 2;
myLoading.y = (stage.stageHeight - myLoading.height) / 2;
addChild(myLoading);

var myRequest:URLRequest = new URLRequest(strUploadPage); 
var myLoader:URLLoader = new URLLoader(myRequest); 
myLoader.addEventListener(Event.COMPLETE, xmlLoaded); 

function xmlLoaded(evtObj:Event) 
{ 
    myLoader.removeEventListener(Event.COMPLETE, xmlLoaded);
    try
    {

        var xDoc:XMLDocument = new XMLDocument();
        xDoc.ignoreWhite = true;
        var xml:XML = XML(myLoader.data);
        xDoc.parseXML(xml.toXMLString());
        userId=xDoc.firstChild.attributes.userId;

        if (userId < 0)
        {
            removeChild(myLoading);
            txtError.text = "Please ensure you are logged in";
            return;
        }

        if(xDoc.firstChild.childNodes.length > 0)
        {
            albums = xDoc.firstChild.childNodes[0].childNodes;
            resource = xDoc.firstChild.childNodes[1].attributes;
        }
        else
        {
            removeChild(myLoading);
            txtError.text = xDoc.firstChild.attributes.error;
            return;
        }
        play();
    }
    catch(e:Error)
    {
        removeChild(myLoading);
        txtError.text = e + "\n\nPlease check your Event Viewer to find out detailed error message and contact service@bizmodules.net";
    }
}

フレーム 2

import net.bizmodules.upg.Alert;

stop();
removeChild(myLoading);

initialize();

function initialize()
{
    Alert.init(stage);

    upload.addVar("userId",userId);


    lstAlbums.dropdown.rowHeight = 24; 

    loadAlbums(0, albums);

    var my_so:SharedObject = SharedObject.getLocal("UPGUpload");
    var lastAlbum = my_so.data.lastAlbum * 1;
    var foundLastAlbum = false;
    if (lastAlbum > 0)
    {
        for (var i:int = 0; i< lstAlbums.length; i++)
        {
            if (lstAlbums.getItemAt(i).data == lastAlbum)
            {
                trace("find previous album");
                foundLastAlbum = true;
                lstAlbums.selectedIndex = i;
                break;
            }
        }
    }

    if (!foundLastAlbum)
    {
        lstAlbums.selectedIndex = lstAlbums.length - 1;
    }
    albums_change(null);

    lstAlbums.addEventListener("change", albums_change);

    lstAlbums.setStyle("backgroundColor", 0x504C4B);
    lstAlbums.dropdown.setStyle("backgroundColor", 0x504C4B);
    lstAlbums.setStyle("themeColor", 0x1F90AE);
    lstAlbums.setStyle("color", 0xC4C0BF); 
    lstAlbums.setStyle("textSelectedColor", 0xC4C0BF); 
    lstAlbums.setStyle("textRollOverColor", 0xC4C0BF); 
    lstAlbums.setStyle("alternatingRowColors", [0x504C4B, 0x504C4B]);
    lstAlbums.setStyle("borderStyle", 'none'); 

}

my_txt.text = "hello" + " " + my_var;


function loadAlbums(level:int, xml:Object)
{

    var prefix = "                                                     ".substring(0, level * 4);;

    for (var i:int = 0;i<xml.length;i++)
    {
        var itemValue = xml[i].attributes.itemid;
        if (xml[i].childNodes.length > 0)
            itemValue *= -1;

        lstAlbums.addItem({data: itemValue, label: prefix + xml[i].attributes.name});
        if (xml[i].childNodes.length > 0)
        {
            loadAlbums(level + 1, xml[i].childNodes);
        }
    }
}

function albums_change(e)
{   
    var albumId = lstAlbums.getItemAt(lstAlbums.selectedIndex).data;
    upload.set_albumId(albumId);
    if (albumId > 0)
    {
        var my_so:SharedObject = SharedObject.getLocal("UPGUpload");
        my_so.data.lastAlbum = albumId;
    }
    else
    {       
        Alert.show("The album you choosed is invalid", null, 0xEAEAEA, 0x000000);
    }
}
4

1 に答える 1

0
private var flashVarObj:Object = new Object;
flashVarObj=LoaderInfo(this.loaderInfo).parameters;
var my_var:String = new String();
my_var = flashVarObj.uploadIdd;
于 2012-04-09T08:25:51.713 に答える