2010-11-28 5 views
0

편집 :AS3 : 빠른 질문 아동에 대한 그들에게 참조

function picSwitch(p=null) 
{ 
if (picShown == true) 
{ 
    picx = 3072; 
    picy = 2304; 
    picTweens.removeChild(pic); 
    picShown = false; 
} 
else 
{ 
    var pic:image = new image(); 
    pic.smoothing = true; 

    pic.width = 750; 
    pic.height = 560; 

    if (pic.scaleX < pic.scaleY) 
    { 
    pic.scaleY = pic.scaleX; 
    } 
    else 
    { 
    pic.scaleX = pic.scaleY; 
    } 

    picx = 1536 - (pic.width/2) + 64; 
    picy = 1152 - (pic.height/2) - 12; 

    picTweens.addChild(pic); 

    TweenLite.to(pic, 1, {x:picx, y:picy, rotation:4, ease:Quint.easeInOut}); 

    picShown = true; 
} 
} 

원래의 게시물 :이 오 남자, 내가 몇 시간을 보냈어요 믿을 수 없다 카메론 전체를 일으키는 기능 요청 이것에. .. 어리석은 질문. 의심 할 여지없이 여러 번 전에 물어 보았다. 나는 너에게 모두 사전에 사과한다.

내가 만든 아이를 지목 할 때 문제가있다.

내가 '이미지'

내 무대에서 'picTweens'라는 컨테이너 무비 클립 (해당 인스턴스 이름이 동일)

하고 액션 패널에라는 내 라이브러리에있는 무비 클립을 가지고

무대에서 나는

var pic:image = new image(); 
pic.smoothing = true; 
picTweens.addChild(pic); 

을 모두 포함하고있는 함수를 가지고 있는데, 그것은 내가 생각하는 곳에 무비 클립을 생성합니다. 지금

if 문 같은 기능에, 나는이
picTweens.removeChild(pic); 

하지만

때 문 트리거, (그리고 내가 그것을해야하는데 어디에 내 그림이로드있어) 경우는

그 알려줍니다 :

TypeError: Error #2007: Parameter child must be non-null. 
at flash.display::DisplayObjectContainer/removeChild() 

내 구문이 잘못 되었나요? 그렇지 않다면 무엇을 확인해야합니까?

+0

문제의 기능을 전체적으로 게시 할 수 있습니까? – Cameron

+0

완전 위반 기능으로 편집되었습니다. – Partack

답변

2

이렇게 분명합니다. 그림 변수를 단순히 제거 할 수 없습니다. 당신은 "else"부분에서 선언했고, 어떤 기능을했습니다 (버튼을 누르거나 프레임이나 다른 이벤트를 입력하는 것으로 추측됩니다). 따라서이 함수를 다시 호출 할 때 picShown을 true로 설정하면 그림 변수를 사용할 수 없으며 null입니다.

실제로 함수의 OUTSIDE 변수를 선언했지만 함수 범위 내에 "var"가 포함되어 있으면 로컬로 덮어 씁니다.

그래서 - 나중에 핸들에 액세스 할 수 있도록 기능을 외부 그림 변수를 선언해야합니다 : 또한

var pic:image; 
function picSwitch(...){ 
    // etc. 
} 

을 - 당신은 것을이 때 그림을 재 선언하지 마십시오 변수 내부에 간단한 할당 (pic = blah;) 만 사용하십시오.

+0

나를 이길 :-) – Cameron

+0

Augh! > ___ <나는 그게 멍청한 줄 알았어. 이 공간 낭비에 대해 대단히 유감스럽게 생각합니다. 사실 그것은 내 var pic의 범위였습니다. image = new image(); * facepalm * – Partack