Loading external SWF with masked content - need width/height
I am loading an external swf using the SWFLoader component. The swf that is being loaded is masked so that only a portion is being shown. However, when it's loaded the actual size of the swf (loader.content.width/loader.content.height) is the complete swf including the masked area. Therefore, the loaded swf does not display properly in the itemrenderer Is there a way to to grab the size of the just the masked area as opposed to getting the size of the entire swf's contents?
One item to note that is complicating the issue, is that 开发者_如何学运维these are swf files that have already been created and there are many of them. In some instances, the size of the stage matches up with the size of the masked area. In other instances, the stage is larger (or possibly smaller) than the masked area movieclip as well as possibly the actual size of the movieclip (w/o the mask).
I am currently loading the external swf in using a Loader. Once loaded, I make a copy (screen shot) of the swf by creating a bmp of the loader.content.This is done as I don't want to have any animations being shown on screen at this moment. I am setting the size of the bmp using using loader.content.width & loader.content.height. I then set the SWFLoader.source to the bitmap.
If you can't find the mask in the loaded swf, there is a brute-force way: render it into BitmapData with transparent background, then analyze pixels to find out where non-transparent area ends. If you do it smart, you should fit into several dozen of samples (unless swf itself is transparent). Of course, render part will be costly as hell, but maybe your app allows such delays...
精彩评论