for ループで画像をロードする複数のローダーを作成しています。次に、これらの画像を新しい MoveClip に配置します。
必要に応じて 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;
}