2013-02-16 2 views
0

저는 노래 목록을 가지고 있고 항목을 두 번 클릭하면 노래가 재생됩니다. 나는 이것을 좋아한다. aList는 목록의 인스턴스 이름입니다.Adobe Flash AS3 : MouseEvent가있는 목록에서 선택된 항목의 데이터 가져 오기

aList.addEventListener(MouseEvent.DOUBLE_CLICK, changeSong); 

function changeSong(e:MouseEvent) { 
    .... 
    song = e.target.selectedItem.data; 
    .... 
} 

(song = e.target.selectedItem.data;) 부분에 오류가 있습니다. 내가 잘못된 재산을 사용한 것 같아.

ReferenceError: Error #1069: Property selectedItem not found on fl.controls.listClasses.CellRenderer and there is no default value. 
at playlist_fla::MainTimeline/changeSong() 

항목 데이터를 올바르게 가져 오는 방법을 아는 사람이 있습니까? 내 구문이 잘못되었다고 생각하기 때문입니다.

미리 감사드립니다.

+0

가 이벤트 대상이'List' 아니라, 오히려'CellItemRenderer' 나에게 보인다. 더 좋은 방법은 다음과 같이하는 것입니다 : 'var list : List = e.target as List;'song = list.selectedItem' 그리고 캐스트가 성공했는지 확인하십시오. –

+0

@TomislavDyulgerov 1118 : 정적 유형 Object를 사용하는 값과 관련없는 유형 String의 암시 적 강제 변환. 그것은 song = list.selecteditem;을 가리키고 있습니다. . 이 오류의 원인이 무엇 일 수 있다고 말씀해 주시겠습니까? – Katherine

+0

아, 다시 캐스팅해야합니다. 만약 당신의 노래가'String' 타입이라면 당신의 코드는 다음과 같이 보일 것입니다 :'song = list.selectedItem as String;' –

답변

0

List 구성 요소의 dataProvider는 무엇으로 지정 했습니까?

e.target.data은 추가 속성이있는 개체입니다. 당신이 노래 변수에 할당하려는 표준의 itemRenderer의 레이블의 경우

for (var property:String in data) 
{ 
    trace("data." + property + " = " + data[property]); 
} 

: 당신은 데이터 객체의 속성을 잘 모르는 경우

,이 같은 일을 통해 반복 할 수 당신은 성공할 가능성이있어 :

song = e.target.listData.label;

관련 문제