2013-05-16 5 views
0

그래서 2 개의 외부 클래스가있는이 사진 갤러리가 있습니다.이 코드는 클래스를 호출하여 갤러리를 가져 와서 작동시키는 타임 라인 코드입니다. 지금까지 좋은 점은이 사진 갤러리를 미디어 프레젠테이션이나 웹 사이트 또는 1 층 이상의 무언가에 넣으려고 할 때 문제가 시작된다는 것입니다. 갤러리가 호출 된 후에도 계속 남아서 갤러리로 돌아올 때마다 갤러리가 더 늘어납니다. 코드와 함께 그 프레임.AS3.0에서 다른 버튼을 클릭하면 갤러리 호출을 제거하는 방법은 무엇입니까?

그래서 만약 프레임 번호 13에 im이 없거나 클래스를 호출하지 않으면 갤러리를 제거하라는 간단한 코드를 추가 할 수 있는지 궁금합니다. "removeChild"시도, 문제의 절반을 해결, 그것은 갤러리를 제거하지만 적어도 증가 효과를 막지 못했습니다.

내가 필요한 것은 다른 프레임/페이지로 이동할 때 갤러리를 제거하는 방법입니다. 누군가 나를 도울 수 있습니까? imgLoader 경우

import flashfold.as3.*; 

var imgLoader:ImageLoader; 

var thumbsToLoad:Array=[]; 

var menuColumnItems:int=6; 

var menuTotItems:int=30; 



var menuThumbs:Vector.<Bitmap>=new Vector.<Bitmap>(); 

var menuBigPics:Vector.<String>=new Vector.<String>(); 


var menu:SpinnerMenu; 

btnSpin.visible=false; 

errorBox.wordWrap=true; 

errorBox.visible=true; 

errorBox.text="Loading thumbnails..."; 

populatePics(); 

prepImgs(thumbsToLoad); 

function prepImgs(a:Array):void { 

imgLoader=new ImageLoader(); 

imgLoader.addEventListener(ImageLoader.LOAD_ERROR,errorLoading); 

imgLoader.addEventListener(ImageLoader.IMGS_LOADED,allLoaded); 

imgLoader.loadImgs(a); 

} 

function errorLoading(e:Event):void { 

errorBox.visible=true; 

errorBox.text="There has been an error loading images. The server may be busy."; 

} 

function allLoaded(e:Event):void { 

errorBox.visible=false; 

initApp(); 

} 


function initApp():void { 

var i:int; 

for (i=0; i<menuTotItems; i++) { 

    menuThumbs[i]=imgLoader.bitmapsArray[i]; 

} 

menu=new SpinnerMenu(menuThumbs,menuBigPics,menuColumnItems); 



this.addChild(menu); 
trace("oi"); 

menu.x=72; 

menu.y=50; 





menu.menuInfoBox.x=160; 

menu.menuInfoBox.y=90; 


this.transform.perspectiveProjection.fieldOfView=70; 

this.transform.perspectiveProjection.projectionCenter=new 
     Point(menu.x+menu.menuWidth/2,menu.y+menu.menuHeight/2); 

btnSpin.visible=true; 

//We load the initial image. 

menu.loadInitial(); 

} 

function populatePics():void { 

var i:int; 

for (i=1; i<=menuTotItems; i++) { 

    thumbsToLoad[i-1]="small"+String(i)+".jpg"; 
} 

for (i=1; i<=menuTotItems; i++) { 

    menuBigPics[i-1]="pic"+String(i)+".jpg"; 

trace('ok'); 


btnSpin.addEventListener(MouseEvent.CLICK, spinMenu); 

function spinMenu(e:MouseEvent):void { 

    var r:Number=Math.random(); 

    if (r<0.5) { 

     menu.doSpin("right"); 

    } else { 

     menu.doSpin("left"); 
    } 
    } 
    } 
} 
+0

은 삭제하고자하는 갤러리의 'imgLoader'입니까? – whodeee

답변

0

당신이 도움이 될 다음 삭제하려는 갤러리입니다 :

if (objectParent.getChildByName("imgLoader") != null) { 
    trace("imgLoader exsits"); 
    objectParent.removeChild("imgLoader"); 
} 

imgLoader이 존재하는 경우 기본적으로이 확인되고 그 않는 경우, 그것을 제거합니다.

+0

많은 고마워,하지만 그것은 작동하지 않았어, 내가 그 메뉴를 제거해야 할 것 같아, 내게이 오류 준다 : 1120 : 정의되지 않은 속성 objectParent의 액세스. 오, 내가 플래시 Cs4, 플래시 플레이어 10.1 AS 3.0에서 일하는 언급을 깜빡했는데, 나도 몰라.하지만 그것은 어쩌면 그것의 코드 변경 sintax을 가지고있다. – Mars

+0

'objectParent'는 부모가 당신의'imgLoader 'stage' 또는'this' 또는'imgLoader'가 추가 된 곳이면 어디든됩니다. – whodeee

+0

메뉴를 제거하려면 위의 기본 코드와 같습니다. if (this.getChildByName ("menu")! = null) { trace ("menuexsits"); this.removeChild ("menu"); }'당신이 메뉴를 제거하는 데 도움이됩니다. – whodeee

관련 문제