2011-01-18 3 views
1

에 나타나지 않는 내가 가진 데이터 값에 따라 이미지, 예를 들어로드 (UIComponent를 확장)를 itemRenderer를 :플렉스의 itemRenderer 이미지는 데이터 그리드에서 실행

_img.source = "assets/images/flags/" + value[dglistData.dataField] + ".gif"; 

내 응용 프로그램 이미지 (플래그) 실행을 ItemRenderer에 나타납니다. SWF 파일로 응용 프로그램을 빌드하고 BlazeDS에 배포하면 이미지가 나타나지 않습니다. 대신 인터넷 익스플로러에 나타나는 표준 "누락 아이콘"링크가 있습니다.

내가 알 수있는 한, ANT 빌드 스크립트에는 위의 "assets/images/flags /"디렉토리와 모든 이미지가 SWF 파일에 포함되어 있습니다.

이 경로는 상대적 경로입니까? 확실하지 않은 경우, 어떤 도움을 얻을 수 있습니다.

감사 마이크

답변

2

source 플래시 플레이어는 HTTP 요청을 통해 이미지를로드하려고으로 경로를 지정하고 있습니다. 따라서 이미지를 SWF에 포함해도 아무 효과가 없습니다.

두 가지 가능한 솔루션이 있습니다. 이미지가 포함 된 폴더를 서버에 배포하고 해당 경로를 source으로 사용하거나 모든 이미지를 SWF에 포함하십시오.

두 번째 솔루션의 간단한 예입니다. 이 코드에서는 value[dglistData.dataField][Embed] 메타 데이터가있는 변수 중 하나에 해당한다고 가정합니다.

[Embed(source='assets/images/flags/Image1.png')] 
private var image1:Class; 

[Embed(source='assets/images/flags/Image2.png')] 
private var image2:Class; 

[Embed(source='assets/images/flags/Image3.png')] 
private var image3:Class; 

// access the image like this... 
_img.source = this[value[dglistData.dataField]]; 
+0

".gif"를 끝에 붙이면 어떤 점이 좋습니까? –

+0

아, 죄송합니다. Michael의 예를 복사하고이 부분을 삭제하는 것을 잊었습니다. 내 대답을 편집했습니다. –

+0

안녕 Gerhard, 답변 주셔서 감사합니다. 두 번째 솔루션은 [Embed] 태그를 사용합니다. 로드 할 이미지가 많습니다. 약 75 개의 플래그가 있으며 각 [Embed] 태그를 타이핑하는 대신 동적으로 이미지를로드하고 캐시하는 방법이 있습니까? 또한 더 많은 이미지를 추가 할 때 코드를 변경하지 않아도됩니다. 감사합니다 – Michael

관련 문제