Quantcast Flash | The Danosphere. - Part 3

The Danosphere.

Avatar

class TheDanosphere extends Dan implements Blog

removeMovieClip() not working? Heres the fix!

This problem presented itself while workin on a project for class that required alot of dynamic loading, attachMovies, and so forth. So I’m attaching these movies but for some reason my movieclip.removeMovieClip() calls aren’t doing anything! This problem can be very frustrating as Macromedia / Adobe does little to nothing to document this. The issue is components and the depthManager.

If you have a component in the library (does not need to be on stage!) and try to use _root.getNextHighestDepth() you will get returned a depth in the reserved range. Then when you try to removeMovieClip() the command will fail silently because the clip is out of depth range. As far as I’ve seen this issue only applies to clips who get their depth from _root.getNextHighestDepth()… using getNextHighestDepth() on other clips seems to still work fine. Anyway here is an easy solution I found somewhere:

[actionscript]

function removemovieclip(removemovie:MovieClip) {

var scope = removemovie.parent;
var poorswappedmc = scope.getInstanceAtDepth(0);
poorswappedmc.swapDepths(scope.getNextHighestDepth());
removemovie.swapDepths(0);
removemovie.removeMovieClip();
poorswappedmc.swapDepths(0);

}

[/actionscript]

Simple really- swap the target mc back into the valid depth range and then remove! voila!

Flash and Cache

On yet another DL assignment I had to figure out how to get the browser to stop caching my swf’s. I tried using the Adobe/Macromedia Technote method of setting headers to force the refresh of content, but, big surprise, it didnt work.

So I searched for a different method. I needed the page to reload the swf regardless of if it was the latest or not, i wanted it to refresh every.single.time. The solution was simpler than I had expected. By simply appending an arbitrary random number variable onto the swf location the browser will force refresh the swf every time. Here is the code [using the IE activeX bypass]

[script language="javascript" type="text/javascript"]

var randNum = Math.round(100*Math.random());
AC_FL_RunContent(“src”, “myCachedSWF?cacheController=” + randNum);

[/script]

prev |

What's Here?