2009-03-17 4 views
4

Flex에서 인터페이스 (인터페이스)를 사용하고있는 특정 유형의 데이터를 수용하는 것으로 제한되는 컬렉션 클래스를 만들려고합니다. ArrayCollection 클래스를 확장하지 않기로 결정했기 때문에 ArrayCollection 클래스는 너무 일반적이어서 컴파일 시간 안전을 제공하지 않습니다. 그것은 단순한 형태로 컬렉션에 배열이 포함되어 있고 객체가 어떻게 추가되고 제거되는지 등을 관리합니다.Flex에서 형식 안전한 컬렉션 만들기

정말 할 수 있기를 원하는 것은 각 루프에 대해 이러한 컬렉션을 사용하는 것입니다. 그것은 분명히 똑바로 앞으로 IEnumerable 및 IEnumerator (또는 그냥 일반 컬렉션을 사용하여) C# 말할 것처럼 보이지 않습니다. 액션 스크립트에서이를 수행 할 수있는 방법이 있습니까? 그렇다면 어떻게 달성되는지에 대한 정보가 있습니까?

건배

답변

2

플래시 프록시 클래스를 확장해야합니다. Proxy를 확장하면 'for ... in'및 'for..each'루프뿐만 아니라 'get'및 'set'작업 방법을 변경할 수 있습니다. 당신은 여기에 귀하의 문제에 대한 예입니다 자세한 내용은 on the Livedocs.

을 찾을 수 있습니다

package 
{ 
    import flash.utils.Proxy; 
    import flash.utils.flash_proxy; 

    public class EnumerableColl extends Proxy 
    { 
     private var _coll:Array; 

     public function EnumerableColl() 
     { 
      super(); 
      _coll = [ 'test1', 'test2', 'test3' ]; 
     } 

     override flash_proxy function nextNameIndex(index:int):int 
     { 
      if (index >= _coll.length) return 0; 
      return index + 1; 
     } 


     override flash_proxy function nextValue(index:int):* 
     { 
      return _coll[ index - 1]; 
     } 

    } 
} 
+0

sweet ... 내가 찾고있는 것만으로도 둘 모두에게 환호합니다. –

2

Vector<>을 살펴보십시오. 이는 Flex에서 입력 된 컬렉션 (4 개 이상)으로 갈 수있는 최선의 방법입니다. 그러나 자신 만의 클래스를 구현해야합니다. 한 가지 방법은 Iterator Pattern을 사용하는 것입니다.

또한 this SO 게시물을 살펴보십시오.

+0

그래 내가 그래서 난 Vector 객체를 사용할 수 없습니다 플래시 9 프로그래밍을하고 있습니다. 각 루프마다 ListCollectionView 클래스를 사용할 수 있으므로 일종의 반복자 패턴을 구현하는 방법이 있어야합니다. –

+0

물론, Brian Heylin이 자신의 질문에 대한 해답을 살펴보십시오. – dirkgently

+0

또한 Flash 10을 타겟팅하는 동안 Flex. 3에서 사용할 수 있습니다. –

관련 문제