function til at oprette mc virker kun hvis mc oprettes i _root ?
okay, i en actionscript-fil kaldet "game_pirat.as" har jeg følgende kode der kalder en funktion i en anden actionscript-fil:trace("### START load lib! ###");
makenewmc("item1",230,30,100,100,"piratlib","game_pirat_item1.jpg","true",100);
makenewmc("item2",290,30,100,100,"piratlib","game_pirat_item1.jpg","true",100);
trace(_root.piratlib.item1);
trace(_root.piratlib.item2);
trace("### END load lib! ###");
Den anden fil hedder functions.as. Den indeholder bl.a. følgende funktion (makenewmc):
//### START opret nyt mc ###
function makenewmc(mc,mc_x,mc_y,scale_x,scale_y,parent,image,synlig,mc_alpha) {
//(navnet på mc der skal oprettes, y-koordinat, x-koordinat, antal pixels i højden, antal pixels i bredden, den parent som det nye mc skal have, billede der skal loades ind, transparency)
//variabel der bruges til at tjekke om mc er loaded
mc_load_ok = 0
//opret mc, enten med eller uden parent
if (parent != "_root") {
//tjeck om parent allerede findes
if (typeof(eval(parent)) == "movieclip") {
trace ("opret "+mc+" ("+parent+" findes!)");
mcparent = eval("_root."+parent)
}
else {
trace ("opret "+mc+" ("+parent+" findes ikke!)");
mcparent = _root.createEmptyMovieClip(parent,_root.getNextHighestDepth());
}
//opret mc
mc = mcparent.createEmptyMovieClip(mc, this.getNextHighestDepth());
var mclListener:Object = new Object();
mclListener.onLoadStart = function(target_mc:MovieClip) {
target_mc.startTimer = getTimer();
};
mclListener.onLoadComplete = function(target_mc:MovieClip) {
target_mc.completeTimer = getTimer();
};
mclListener.onLoadInit = function(target_mc:MovieClip) {
var timerMS:Number = target_mc.completeTimer-target_mc.startTimer;
target_mc._x = mc_x;
target_mc._y = mc_y;
target_mc._yscale = scale_y;
target_mc._xscale = scale_x;
target_mc._alpha = mc_alpha;
trace("Loaded "+mc+"("+target_mc._width+"px)");
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip(webhost + "images/" + image, mc);
}
else if (parent == "_root" ){
//opret mc i root
mc = _root.createEmptyMovieClip(mc, this.getNextHighestDepth());
var mclListener:Object = new Object();
mclListener.onLoadStart = function(target_mc:MovieClip) {
target_mc.startTimer = getTimer();
};
mclListener.onLoadComplete = function(target_mc:MovieClip) {
target_mc.completeTimer = getTimer();
};
mclListener.onLoadInit = function(target_mc:MovieClip) {
var timerMS:Number = target_mc.completeTimer-target_mc.startTimer;
target_mc._x = mc_x;
target_mc._y = mc_y;
target_mc._yscale = scale_y;
target_mc._xscale = scale_x;
target_mc._alpha = mc_alpha;
trace("Loaded "+mc+"("+target_mc._width+"px)");
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip(webhost + "images/" + image, mc);
}
//returner besked om at mc er loaded
mc_load_ok = mc+"_LOADED";
return mc_load_ok
};
//### SLUT opret nyt mc ###
MIT PROBLEM er at hvis jeg kalder makenewmc med variablen parent sat til at være noget andet end _root, så kan jeg tilsyneladende kun oprette ET movieclip, uanset hvor mange gange jeg kalder makenewmc.
Så jeg kan sagtens oprette lige så mange movieclips ude i _root som jeg vil, men lige så snart jeg prøver at neste det movieclip jeg vil oprette inden i et andet (i dette tilfælde "piratlib") så opretter den kun ét movieclip.
Når jeg efterfølgende tracer de to movieclips jeg har forsøgt at oprette, så er det ene bare "undefined" og det andet loader fint nok...