2010-07-30 4 views
0

간단한 내용이 누락되었다고 가정해야합니다. 그렇지 않으면 이해할 수 없습니다.AS3 배열의 문자열 변수가 변경 되어도 변수 자체가 업데이트되지 않습니다.

배열에 추가하는 문자열 목록이 있습니다. 그런 다음 내가 읽은 데이터를 사용하여 for 루프에서 해당 값을 설정하려고 시도합니다. 배열은 업데이트되지만 배열에 포함 된 값은 변경되지 않습니다. 또한 위와 같은 방식으로 업데이트하는 버튼 배열이 있지만 문자열은 같은 방식으로 작동하지 않는 것 같습니다. 나는 전체 범위를 제공하기 위해 문자열 배열을 이동하려고 시도했지만 여전히 아무것도 ... 무엇을 놓치고 있습니까?

public class test extends Sprite 
{ 
    // Declare a list of strings 
    protected var title0:String = undefined; 
    protected var title1:String = undefined; 
    protected var title2:String = undefined; 

    protected function onDataLoad(evt:Event):void{ 

    var titleArray:Array = new Array(title0,title1,title2); // Array of strings 

    for(i=0; i<=evt.target.data.count; i++){ 
     titleArray[i] = evt.target.data["title"+i]; // attempt to set the title values 
    } 
    } 

    protected function function0(e:Event):void { 
    trace("My title is: " + title0); // title0 is null 
    } 
} 

답변

0

AS3가 배열 요소를 저장하는 방법과 관련이 있습니다. 당신이 원하는 것을 얻기 위해서 인스턴스 프로퍼티 (title1, title2, title3)와 연관된 배열 요소 (array [0], array [1], array [2])를 명시 적으로 설정할 필요가 있습니다. 또는 인스턴스 속성 (title0, title1, title2)을 완전히 삭제하고 배열을 사용하여 값을 저장할 수 있습니다. 뭔가가 :

public class test extends Sprite 
{ 

    protected var _titleArray:Array = []; 

    protected function onDataLoad(evt:Event):void{ 

    for(i=0; i<=evt.target.data.count; i++){ 
     // set the title values 
     _titleArray[i] = evt.target.data["title"+i]; 
    } 
    } 

    protected function function0(e:Event):void { 
    trace("My title is: " + _titleArray[0]); 
    } 
} 
+0

이것은 내가 시작해야했던 것입니다 ... 훨씬 더 유연합니다. 필자가 변경 한 유일한 것은 제목 값을 인덱스로 설정하지 않고 배열에 밀어 넣었다는 것입니다 (개인적인 취향). _titleArray.push (evt.target.data [ "title"+ i]); – taipan

+0

그래, 확실히 더 깨끗한 접근법이야. 도와 줘서 기뻐요! – heavilyinvolved

관련 문제