2010-03-19 1 views
0

속성을 만들고 속성을 한 번만 설정하려는 Rect 객체가 있습니다. 그 후에 이미 속성이 있으므로 속성을 수정하기 만하면됩니다. 이것은 내가 만약 조건 확인을 위해 여러 가지 조합을 시도객체가 이미 존재하는지 확인하기위한 올바른 actionscript (조건부 내부에 지역 변수가 정의 됨)

if(theRect == undefined){ 

    Alert.show("creating"); 

    var theRect:Rect = new Rect(); 
    //then set properties 
    addElement(theRect); //then add it using addElement because addChild() does not work 

} else { 

    Alert.show("updating"); 

    //no need to create it since it's already been created 
    //just access and change the properties 

} 

내 일반적인 생각입니다 :

if(theRect == undefined){ 
if(theRect == null){ 
declaring and not declaring `var theRect:Rect;` before the if check 
declaring and instantiating to null before the if check `var theRect:Rect = null;` 

하지만 원하는 효과를 얻을 수 없습니다. 이 코드 블록이 실행될 때마다 내가 사용한 버전에 따라 "null 개체에 액세스 할 수 없습니다."오류가 표시되거나 if 문이 항상 true로 평가되고 새 Rect 개체가 만들어지고 "만들기 "경고.

해당 Rect를 만드는 올바른 방법은 무엇입니까?

답변

2

제시 한 코드에 범위 지정 문제가 있습니다. 나는 당신이 원하는 무슨 생각

은 다음과 같습니다

var theRect:Rect; 

... 

if(theRect == null) 
{ 
    theRect = new Rect(); 
    ... 
} 
... 

먼저 theRect를 선언해야하지만 당신이 그것을 만들 필요가 없습니다. 나중에 null인지 확인하여 지연 인스턴스를 생성 할 수 있습니다.

설정 방법에 따라 if 문 안의 theRect의 로컬 버전을 다른 곳에서는 볼 수 없게 만들었습니다. 미리 선언하지 않은 경우 theRect에 액세스하는 중에 오류가 발생합니다.

+0

그건 제가 시도한 것들 중 하나 였고, if 검사 전에 변수를 생성했는데 여전히 문제가있었습니다. 그러나 그것은 실제로 범위 지정 이슈였습니다. 그리고 저는 이것이 왜이 모든 것이 하나의 방법이며, 선언이 반복되고, 어리석은 이유 인 이유를 봅니다. 그것을 밖으로 옮겼다. 그리고 모든 것이 좋다. 힌트를 가져 주셔서 감사합니다. – touB