CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Flash & ActionScript (http://www.codingforums.com/forumdisplay.php?f=52)
-   -   Help re-using an external .swf (http://www.codingforums.com/showthread.php?t=151695)

InCiTe 11-06-2008 01:30 PM

Help re-using an external .swf
 
Hello

Im having an issue with a template i bought, basically an MC_holder calls external swf files. Lets say this is called holder_mc.

When holder_mc loads the code below in an external swf it loads fine. However when i try to load the same swf but a different instance overlapping starts to occur.

here is the code:
Code:

var randomNum = 0;
var randomNumLast = 0;

// parent container
var container_mc = this.createEmptyMovieClip("container",0);
// movie clip containers
container_mc.createEmptyMovieClip("loader1_mc",2);
container_mc.createEmptyMovieClip("loader2_mc",1);

// preload watcher
this.createEmptyMovieClip("watcher_mc",100);

// load xml
images_xml = new XML();
images_xml.ignoreWhite=true;
images_xml.onLoad = parse;
images_xml.load("illustration/illust_slide.xml");

function parse(success) {
        if (success) {
                imageArray = new Array();
                var root = this.firstChild;
                _global.numPause = Number(this.firstChild.attributes.timer * 1000);
                _global.order = this.firstChild.attributes.order;
                _global.looping = this.firstChild.attributes.looping;
                _global.fadetime = Number(this.firstChild.attributes.fadetime);
                _global.xpos = Number(this.firstChild.attributes.xpos);
                _global.ypos = Number(this.firstChild.attributes.ypos);
                var imageNode = root.lastChild;
                var s=0;
                while (imageNode.nodeName != null) {
                        imageData = new Object;
                        imageData.path = imageNode.attributes.path;
                        imageArray[s]=imageData;
                        imageNode = imageNode.previousSibling;
                        s++;
                }
                // place parent container
                container_mc._x = _global.xpos;
                container_mc._y = _global.ypos;
                // parse array
                imageArray.reverse();
                imageGen(imageArray);
        } else {
                trace('problem');
        }
}

// depth swapping
function swapPlace(clip,num) {
        eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
}

function loadImages(data,num) {
        if (i==undefined || i == 2) {
                i=2;
                createLoader(i,data,num);
                i=1;
        } else if (i==1) {
                createLoader(i,data,num);
                i=2;
        }
}
function createLoader(i,data,num) {
        thisLoader=eval("container_mc.loader"+i+"_mc");
        thisLoader._alpha=0;
        thisLoader.loadMovie(data[num].path);
        watcher_mc.onEnterFrame=function () {
                var picLoaded = thisLoader.getBytesLoaded();
                var picBytes = thisLoader.getBytesTotal();
                if (isNaN(picBytes) || picBytes < 4) {
                        return;
                }
                if (picLoaded / picBytes >= 1) {
                        swapPlace("container_mc.loader2_mc",1);
                        alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
                        timerInterval = setInterval(imageGen,_global.numPause,data);
                        delete this.onEnterFrame;
                }
        }
}
function imageGen(data) {
        // random, or sequential?
        if (_global.order=="random") {
                // choose random # between 0 and total number of images
                while (randomNum == randomNumLast) {
                        randomNum = Math.floor(Math.random() * data.length);
                        trace(randomNum);
                }
                loadImages(data,randomNum);
                randomNumLast = randomNum;
        } else if (_global.order=="sequential") {
                // start at 0, increment to total number of images, then drop back to zero when done
                if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
                loadImages(data,p);
                p++;
        } else {
                trace ("eror!");
        }
        clearInterval(timerInterval);
}
stop();

Now that code is working fine, however because i have duplicated this code to create different instances of this swf file it is mis-matching and blending in with the previous loaded swf which obviously has the same code.

Im not a lazy person i have been at this for a couple of weeks now, i have tried to adjust the levels within this script. But im not exactly a pro in the scripting area. I think it is the global levels which is causing this issue. But im not sure on how to fix it, ive tried creating different container names and the lot.

I really appreciate your help and if you would prefer me to post the whole folder then please just ask and ill upload it to my server.

Craig

gnomeontherun 11-06-2008 03:24 PM

I'm a little confused about what is happening, and why you are loading the same SWF multiple times. Regardless, an example for me to see the issue, and the FLA if you can, would be most appreciated.

My first assumption is that since everything is set to global, each time the SWF is loaded the values are reset or overwritten or shared or confused. If this code is to stay within the function, removing the globality of the variables would be a good start.


All times are GMT +1. The time now is 01:07 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.