0
我正在用for循環創建多個加載器來加載圖像。然後我將這些圖像放入新的MoveClip中。as3 removeChild和Loaders in them?
需要時我要去removeChild(flagHolder);其中包含裝載器中加載的標誌的所有圖像。 我想知道這會刪除所有加載到我正在刪除的父級影片剪輯的myLoaders?
我希望它可能不會如何佔用資源,因爲這是一個電話應用程序。
我不願意在下面發表我的代碼,因爲不需要問這個問題,但我會反正。這有點亂。我希望在as3中變得更高效。我真的需要所有的資源不被用完,所以我希望我的劇本在這方面不會太糟糕。
import flash.display.MovieClip;
var daCol:int;
var daRow:int;
var daPosition:int;
var daPage:int;
var daWidth:int;
var daHeight:int;
var daTotalFlags:int;
var daTotalPages:int;
var daFlag:Array = [];
var daFlagText:Array = [];
var pages:Array = [];
// Movie Clips
var newBox:MovieClip = new MovieClip;
// Make new Movie clip to hold the flags
var flagHolder = new MovieClip();
flagHolder.name = "flagHolder";
for (var a:uint = 0; a < DirArray.length; a++)
{
//trace(DirArray[a]);
var Flag = new languageFlag();
Flag.name = DirArray[a];
daFlag.push(Flag);
/// Important for adding flag to display
//flagHolder.addChild(Flag);
Flag.width = 160;
//Flag.scaleX = 1.5;
//Flag.scaleY = 1.5;
daHeight = Flag.height;
daWidth = Flag.width;
daCol = Math.floor(stage.stageWidth/Flag.width);
daRow = Math.floor(stage.stageHeight/Flag.height)-1;
trace("Flag Width: " + Flag.width);
//Flag.x = Flag.width * a;
theFlag = new Loader();
theFlag.load(new URLRequest("Languages/"+DirArray[a]+"/Flag.png"));
theFlag.name = DirArray[a];
Flag.addChild(theFlag);
//daFlagText =
Flag.btext.text = DirArray[a];
theFlag.addEventListener(MouseEvent.CLICK, flagClick);
}
BG.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);
function fl_MouseClickHandler_2(event:MouseEvent):void
{
/// CALLS FUNCTIONS FOR FLAGS
displayFlags();
displayFlagButtons();
}
function displayFlags()
{
flagMoveIn();
var theRow = 0;
var C = 0;
var goUp:int;
var spaceHeight:int = 33;
daHeight = daHeight + 20;
/// DISPLAYS FLAG HOLDER
addChild(flagHolder);
/// Sets position of Flags in pages to start at zero
daPosition = 33;
daTotalFlags = daRow * daCol;
daTotalPages = daFlag.length/daTotalFlags;
trace("DA TOTAL PAGES: " + daTotalPages);
//////////////////////
/////////////////////
for(var p = 0; daTotalPages >= p; p++)
{
var screenPage:MovieClip = new MovieClip();
pages.push(screenPage)
for (var F:uint = 0; F <= daRow-1; F++)
{
if(daFlag[F])
{
for(C = theRow; C < theRow+daCol; C++)
{
if(daFlag[goUp])
{
screenPage.addChild(daFlag[goUp]);
daFlag[goUp].y = daHeight * F;
daFlag[goUp].x = daFlag[goUp].width * C;
}
goUp++;
}
}
}
daPosition = daPosition + stage.stageWidth;
//--- End of work For Loop
flagHolder.addChild(screenPage);
} // End of Pages loop
spaceFlags();
}// End of Display Flags
/// This function orders the pages correctly and spaces them right
/// and adds buttons to the pages at bottom
function spaceFlags(){
for(var i = 0; pages.length > i; i++)
{
pages[i].scaleX = .9;
pages[i].scaleY = .9;
}
newBox.addChild(pages[0]);
for(var a = 0; pages.length > a; a++)
{
pages[a].x = stage.stageWidth/2 - newBox.width/2 + stage.stageWidth * a;
}
flagHolder.addChild(newBox);
}
var flagButton:MovieClip;
var flagArray:Array = new Array;
var flagDisplayButtons:MovieClip = new MovieClip();
function displayFlagButtons()
{
for(var i = 0; pages.length > i; i++)
{
var flagButton:MovieClip = new roundButton();
flagButton.x = (flagButton.width + 10) * i;
flagButton.y = stage.stageHeight - flagButton.height;
addChild(flagButton);
flagButton.alpha = .3;
flagDisplayButtons.addChild(flagButton);
flagArray.push(flagDisplayButtons.getChildAt(i) as roundButton);
}
addChild(flagDisplayButtons);
// Works
flagDisplayButtons.x = stage.stageWidth/2 - flagDisplayButtons.width/2;
}
這工作。我現在確實有一個問題。當我加載它後,它不顯示。我相信它是一個VAR範圍。這不是重新創建裝載機或其他東西。 – 2013-05-03 18:34:16
這完全破壞了所有的'BitmapData'。如果您稍後嘗試重新添加這些圖像,則還必須重新加載圖像,因爲它們不再存在於內存中。 – 2013-05-03 18:50:10