2011-05-16 2 views
0
var test:*; 
test = sMC // Some movieClip exported for ActionScript 
var f = new test; 

죄송합니다. 질문에 약간의 변화가 있지만 궁금해지기 시작하면,이 별표와 스 니펫은 무엇을 의미합니까?별표 유형의 변수

답변

0

별표는 변수 유형이 정의되지 않았 음을 의미하거나 와일드 카드입니다. 어떤 종류의 변수로 test을 정의 할 수 있습니다.

별표 변수는 정보의 모든 유형을 받아 들일 것을 의미 와일드 카드입니다 :

+0

그래서 MovieClips 전용이 아닙니까? 그렇다면이 방법만으로도 무비 클립에 변수를 할당 할 수 있습니까? sMC는 MovieClip의 이름입니다 ... – Rek

+0

'클래스'유형에 할당 할 수 있어야합니다. 나는 그것이 비교적 효과적 일 것이라고 확신한다. 그래서'var test : Class; – stormbreaker

1

원래의 질문과 코멘트에 요청 귀하의 질문에 대답. 예 :

var wildcard:*; 

wildcard = "hello"; 
wildcard = 10; 
wildcard = new MovieClip(); 

위의 모든 내용이 적용됩니다.

변수는 가능한 한 엄격하게 입력해야합니다. 이 말은 무비 클립을 변수에 지정하려고 할 때 변수가 MovieClip으로 입력되어야한다는 것을 의미합니다. 좋아요 :

var mc:MovieClip = new MovieClip(); 

이것은 모든 작업에 적용됩니다. 자신 만의 클래스를 생성 한 경우 클래스를 보유하는 변수의 유형으로 해당 클래스를 사용하십시오.

당신이 시도하고 그래서 같이 변수에 관련되지 않은 유형을 지정하면 오류가 발생합니다
var thing:MyClass = new MyClass(); 

: 한 당신의 변수 유형이 무엇을 상속 체인을 따라 어딘가로

var thing:MovieClip = "hello"; 

을하지만, 그것에 배정되면, 그것은 효과가있을 것입니다.

var thing:DisplayObject = new MovieClip(); 

MovieClip을 확장하는 고유 한 클래스 모음을 포함하는 배열을 반복하려는 경우이 방법이 유용 할 수 있습니다.

var ar:Array = []; 

/** 
* MyClass extends MovieClip 
* MyOtherClass extends MovieClip 
*/ 

ar.push(new MyClass()); 
ar.push(new MovieClip()); 
ar.push(new MyOtherClass()); 

var i:MovieClip; 
for each(i in ar) 
{ 
    trace(i); 
} 

전체적으로 와일드 카드 유형은 권장 사항이 아닙니다. 최악의 경우 Object을 플래시의 모든 요소로 확장합니다. 와일드 카드 또는 Object가 유용한 한 가지 상황은 모든 종류의 데이터를 허용 할 수있는 함수를 작성하려는 경우입니다. 그래서 같이 :

var myarray:Array = []; 

function addToArray(data:Object):void 
{ 
    myarray[myarray.length] = data; 
    trace(data); 
} 

또는

function addToArray(data:*):void 
{ 
    myarray[myarray.length] = data; 
    trace(data); 
} 

희망이 모두 의미가 있습니다.