2011-06-15 4 views
1

이것은 이미지를 순차적으로로드하는 갤러리에서 사용한 코드입니다. 내 문제는 다른 이미지 앨범을 열고 동영상 클립에서 이전에로드 된 모든 어린이를 삭제해야 할 때 발생합니다. 새 앨범을로드 할 때 여기에 게시 한 코드를 사용했습니다 : AS3 How to remove previous loaders하지만 문제는 때로는 사용자가 앨범 사진을 보내기 전에 앨범 페이지를 떠나기 때문에 새 앨범을 열면 새 이미지가 다른 곳에 배치된다는 것입니다. 로더가 이미 시작 되었기 때문입니다. 나는 로더를 닫기 위해 tryd를 시도했지만 작동하지 않는 것 같다. 네가 나에게 손을 댈 수만 있다면 그것을 고맙게 받아 들일 것이다. 고맙습니다. 여기 메신저 당신이 앨범을 클릭해야 abouy, 모든 사진을로드하기 전에 떠나 또 다른 하나를 열어 말을 확인하려면 다음을 참조하십시오 (작업 사이트 www.barbarabritvin.com을 볼 수 있습니다. 아르헨티나에서 응원!로더를 닫을 수 없어 갤러리에서로드 된 모든 자식을 제거 할 수 없습니다!

getImage(dataList[0].file) 


function getImage(href:String):void { 


var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageReady); 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress); 
loader.x=xCounter 
loader.load(new URLRequest(href)); 

} 


function imageReady(e:Event):void { 
var bitmap:Bitmap=e.target.content; 
if (bitmap!=null) { 
    bitmap.smoothing=true; 
} 

displayLarge2.thumb_loader.thumbHolderInside.addChildAt(e.target.loader,0) 
yaCargo=true 


trace("NUMCHILDREN"+displayLarge2.thumb_loader.thumbHolderInside.numChildren) 


collection.push(e.target.content); 
xCounter=xCounter+e.target.loader.width+3 
imagecounter++; 
if(imagecounter < dataList.length() && loadingPics==true) { 
getImage(dataList[imagecounter].file); 
} 

} 

function clearThumbs():void 
    { 
     while(displayLarge2.thumb_loader.thumbHolderInside.numChildren > 0) 
     { 
      //Remove the first child until there are none. 
      displayLarge2.thumb_loader.thumbHolderInside.removeChildAt(0); 
     } 
    } 


displayLarge2.close.addEventListener(MouseEvent.CLICK, closeAlbum) 




function closeAlbum(e:MouseEvent):void{ 
displayLarge2.thumb_loader.thumbHolderInside.enabled=false 
loadingPics=false 


      while(displayLarge2.thumb_loader.thumbHolderInside.numChildren>0) 
    { 
      displayLarge2.thumb_loader.thumbHolderInside.removeChildAt(0) 
    } 


     trace("NUMCHILDREN"+displayLarge2.thumb_loader.thumbHolderInside.numChildren) 

imagecounter=0 
xCounter=0 

displayLarge2.enabled=false 
displayLarge2.mouseChildren=false 






var scrollerTween=TweenManager.create(displayLarge2,"alpha",Regular.easeIn,1,0,0.5,true); 
scrollerTween.addEventListener(TweenEvent.MOTION_FINISH, doNextTween) 
function doNextTween(e:TweenEvent):void{ 


    sectionThumbs.enabled=true 
    sectionThumbs.mouseChildren=true 
    displayLarge2.visible=false 

    var   thumbsTween=TweenManager.create(sectionThumbs,"alpha",Regular.easeIn,0,1,0.5,true); 
    scrollerTween.removeEventListener(TweenEvent.MOTION_FINISH, doNextTween) 
} 



} 
+1

** **이 링크를 참조하십시오. http://www.adobe.com/devnet/actionscript/articles/oop_as3.html – Marty

답변

1

내가보기 엔 greensock에 의해 LoaderMax를 추천 할 것입니다.

http://www.greensock.com/loadermax/

내가 꽤 중요한 로딩/언 로딩을 위해 그것을 사용하고 정리 많이 처리합니다.

+0

한번보세요. 고마워요! – nlalli87

1

한 가지 방법은 컨테이너를 할당하는 것에 대해 이동 각 앨범에. 이 방법으로 새 ​​앨범을로드하려면 이전 컨테이너를 제거하고 새 앨범을 표시 목록에 추가하기 만하면됩니다.

OOP 접근법 (Marty Wallace 링크 참조)을 사용하는 경우 가능한 한 LoaderMax를 통해 콘텐츠로드를 처리 할 수있는 앨범 클래스를 만드는 것이 한 가지 해결책 일 수 있습니다. 새 앨범을 선택하면 이전 앨범을 표시 목록에서 제거하고 나중에 불러올 수 있도록 저장합니다.

LoaderMax는 매우 유용합니다. 체크 아웃해야합니다. 사용자 상호 작용에 따라 임의로 로딩 시퀀스를 생성하고 수정할 수 있습니다. 당신은 OOP를 사용하는 경우

+0

나는 첫 번째 시도를 시도했지만 몇 가지 문제를 겪어 그래서 내가 가진 것과 계속 진행되었다. 이것이 바로. 하지만 LoaderMax 방식으로 돌아가서 그 방법을 시도해야 할 수도 있습니다! 고맙습니다! – nlalli87

0

, 당신은 세 가지 핵심 요소를 사용하여 응용 프로그램을 구성 할 수 있습니다

  1. Main -> MovieClip
  2. Album -> MovieClip
  3. Photo -> Loader

Main 큐 것 Album,로드 제어합니다 로드 인스턴스는 Photo입니다. Album이 닫히면 Photo의 포함 된 인스턴스를 제거 할 수 있으며 현재 대기중인 Photo (s)은 무시할 수 있습니다.

나는 입니다.

관련 문제