2017-05-24 4 views
2

두 프레임이 있습니다.프레임을 다시 방문 할 때 AddChild를 한 번만 스테이지에 추가합니다.

첫 번째 프레임에서 단추를 클릭하여 다음 프레임으로 이동할 수 있습니다. 첫 번째 프레임에서는 단 한번만 menu1을 추가하고 싶습니다. 다음 프레임으로 이동 한 다음 첫 번째 프레임으로 돌아 가면 menu1이 이미 스테이지에 있으므로 다시 생성해서는 안됩니다.

제 문제는 프레임 2에서 프레임 1로 돌아가서 menu1 복사본을 스테이지에 계속 추가하는 것입니다.

stop(); 

import flash.display.Loader; 
import flash.events.MouseEvent; 
import flash.net.URLRequest; 
import flash.display.Stage; 

var menu1:Loader = new Loader(); 
var request1:URLRequest = new URLRequest ("MENU1.swf"); 
menu1.load(request1); 

if (stage.contains(menu1)){ 

} 
else 
{ 
    addChild(menu1); 
} 

답변

3

여전히 메뉴마다 추가 유지하는 이유, 때문에 당신의 상태는 항상 false 될 것입니다 경우 :

여기에 내 현재 코드입니다. 그런 경우 이유를 지적하는 두 줄이 있습니다

: 위의 줄에

var menu1:Loader = new Loader(); 

, 당신은 새로운 로더() 객체를 생성하고 VAR menu1

if (stage.contains(menu1)){ 
에 할당된다 위의 줄에

, 당신은 당신이이 프레임, AB를 방문하는 첫 번째 줄부터 무대

에 현재 menu1 경우마다 실행됩니다 확인 중 새로운 객체가 매번 생성됩니다. 그 새 객체는 무대에 아직 존재하지 않으므로 (이전 객체가 있습니다) if 조건부는 항상 false으로 평가됩니다.

이 문제를 해결하려면 다음을 수행 할 수 있습니다

var menu1:Loader; //just define the var here, don't assign anything yet 

//if menu1 doesn't have a value 
if(!menu1){ 

    //create a new Loader only if one doesn't exist yet 
    menu1 = new Loader(); 
    var request1:URLRequest = new URLRequest ("MENU1.swf"); 
    menu1.load(request1); 
    addChild(menu1); 
} 
+0

이 마치 마법처럼 작동하지만 지금 발생한 문제가 때 프레임 2에서 프레임 1 인이, 프레임 2에서 SWF 프레임 1 중첩됩니다 . 그럼 버튼을하십시오 – Jack

+0

안녕하세요, 제가 왜 내 물건이 나타나지 않습니다? 정말 혼란 스럽네요. – Jack

+0

프레임 2 코드를 사용하여 새로운 질문을 만들고 그 코드가 어떻게 작동해야하며 문제가 무엇인지에 대한 자세한 설명을 권합니다. – BadFeelingAboutThis

관련 문제