01. oktober 2005 - 14:42Der er
8 kommentarer og 1 løsning
manglende højde/bredde på mc ved dynamisk load af jpg
Hej
Jeg har et problem med nedenstående funktion. Når jeg kalder funktionen loader den et jpg ind og det virker fint, bortset fra at hvis jeg tracer højde ell. bredde på mit movieclip(sidste linje), så er værdien 0. Jeg vil gerne kunne styre højde og bredde på det billede jeg henter ind ved bare at sætte mc._width eller noget i den retning. Hvordan gør jeg det ?
function makenewmc(mc,mc_x,mc_y,scale_x,scale_y,parent,image,synlig,mc_alpha) { //mc=navnet på mc der skal oprettes //mc_y=y-koordinat //mc_x=x-koordinat //scale_y=antal pixels i højden //scale_x=antal pixels i bredden //parent=den parent som det nye mc skal have //image=evt. billede der skal loades ind mc = _root.createEmptyMovieClip(mc,_root.getNextHighestDepth()); mc._visible = synlig; mc.loadMovie("images/"+image, mc); mc._x = mc_x; mc._y = mc_y; mc._yscale = scale_y; mc._xscale = scale_x; mc._alpha = mc_alpha; trace(mc._width); };
hej kalleballe, jeg kan godt se princippet, men jeg er lidt usikker på præcis hvordan jeg skal kalde din funktion og hvordan jeg får svar fra funktionen om hvorvidt billedet er loadet ? Hvordan ved funktionen hvilket movieclip jeg vil tjekke på ?
Hvis du evt. gider at give et eksempel hvor det er integreret med min kode, så smider jeg lidt ekstra point i posen :-)
Hej, jeg har modificeret koden (se herunder), men det virker stadig ikke...Problemet ligger så vidt jeg kan se i if-sætningen i checkMc. Hvis jeg tracer mc._width lige før if-sætningen så er den 0. Variablen "resultat" bliver aldrig udfyldt og tracer bare som "undefined".
Jeg forstår heller ikke at når jeg tracer mc._width i checkMc, så tracer den det kun én gang - burde den ikke spytte et 0 ud hver 100 milisekund ?
//### 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) if (parent != "_root") { //opret parent og læg mc i parent trace(mc + " bliver oprettet med parent"); trace (parent); mcparent = _root.createEmptyMovieClip(parent,_root.getNextHighestDepth()); mc = mcparent.createEmptyMovieClip(mc,_root.getNextHighestDepth()); mc.loadMovie("images/"+image, mc); mc._x = mc_x; mc._y = mc_y; mc._yscale = scale_y; mc._xscale = scale_x; mc._alpha = mc_alpha; mcparent._visible = synlig; } else if (parent == "_root" ){ //opret mc i root trace(mc + " bliver oprettet uden parent"); mc = _root.createEmptyMovieClip(mc,_root.getNextHighestDepth()); mc._visible = synlig; mc.loadMovie("images/"+image, mc); runCheckMc = setInterval(checkMc(mc), 100); trace("resultat: " + runCheckMc); mc._x = mc_x; mc._y = mc_y; mc._yscale = scale_y; mc._xscale = scale_x; mc._alpha = mc_alpha; } }; //### SLUT opret nyt mc ###
//### START check om et mc er loaded ### checkMc = function(mc){ trace(mc._width); if(mc._width){ resultat = mc._width; return resultat; clearInterval(runCheckMc); } } //### SLUT check om et mc er loaded ###
Nevermind, jeg fandt selv ud af det. Nedenstående funktion opretter et movieclip, loader en jpg dynamisk og sætter dernæst alpha+scale.
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) if (parent != "_root") { mcparent = _root.createEmptyMovieClip(parent,_root.getNextHighestDepth()); mc = mcparent.createEmptyMovieClip(mc, this.getNextHighestDepth()); var mclListener:Object = new Object();
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();
var image_mcl:MovieClipLoader = new MovieClipLoader(); image_mcl.addListener(mclListener); image_mcl.loadClip(webhost + "images/" + image, mc); } }; //### SLUT opret nyt mc ###
Min funktion skal bare stå og kører... samtidig med at du loader, - så holder den hele tiden øje med om dit mc har en width, - et mc har nemlig først en width/height når det er 100 procent loadet, - så svaret er faktisk ikke helt dårligt :)
Du skal altså tjekke det i en onenterframe men ikke movieclippet der loades onenterframe fordi alt bliver slettet i det pågældende movieclip når man kalder LoadMovie!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.