2011-11-19 70 views
0

我正在嘗試使用loadclip()加載的圖像平滑。
我發現平滑功能,它的工作原理,但只適用於位於_level0,例如_level0.mc movieclips,但我想順利兒童MC,例如_level0.parent_mc.children_mc,然後圖像只消失。

平滑功能:ActionScript 2.0動態平滑

here = this; // trace(here) == _level0 
bg_smooth = function (bg):Void { 
    var bg_depth:Number = bg.getDepth(); 
    var bg_name:String = bg._name; 
    var bg_parent = bg._parent; 
    var bg_bitmap_temp:BitmapData = new BitmapData(bg._width, bg._height, true, 0x00FFFFFF); 
    bg_bitmap_temp.draw(bg); 
    removeMovieClip(bg); 
    bg_parent.createEmptyMovieClip(bg_name,bg_depth); 
    here[bg_name].bitmapObj = bg_bitmap_temp.clone(); 
    bg_bitmap_temp.dispose(); 
    here[bg_name].attachBitmap(here[bg_name].bitmapObj,1,"auto",true); 
}; 

其他代碼:

var loader:MovieClipLoader = new MovieClipLoader(); 
var mclL:Object = new Object(); 
mclL.onLoadProgress = function(target, loadedBytes, totalBytes) { 
//trace(Math.round((loadedBytes/totalBytes) * 100) + "%"); 
}; 
loader.addListener(mclL);  
mclL.onLoadInit = function(element) { 
    bg_smooth(element); // trace(element) == _level0.mc or _level0.parent_mc.children_mc 
}; 

loader.loadClip("img/image.jpg", mc); // <= works 
//loader.loadClip("img/image.jpg", parent_mc.children_mc); // <= not works 

也試着寫_level0.parent_mc['children_mc']而不是parent_mc.children_mc並作出here == _level0.parent_mc - 仍然沒有運氣。如果我在加載完成時刪除bg_smooth(element),那麼一切正常,但當然平滑禁用。

回答

1

我發現了另一個工作函數。可能對別人有幫助。

function applySmoothing(target:MovieClip) { 
    var mcParent:MovieClip = target._parent; 
    var mcName:String = target._name; 
    var myBitmap:BitmapData = new BitmapData(target._width, target._height); 
    myBitmap.draw(target); 
    target.removeMovieClip(); 
    target.attachBitmap(myBitmap, 1, "auto", true); 
}