플렉스를 사용하여 아이콘으로 아이콘으로 이미지를 동적으로 틸 릴리스트로로드하려면 어떻게해야합니까?
-
22-08-2019 - |
문제
좋아, 그래서 내가 만든 사용자 정의 렌더가 있습니다.
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center"
verticalAlign="middle"
width="100"
height="100">
<mx:Script>
<![CDATA[
[Bindable]
private var fileLabel:String;
[Bindable]
private var fileIcon:Class;
override public function set data(value:Object):void{
fileLabel = value.label;
fileIcon = value.file.url;
}
]]>
</mx:Script>
<mx:Image source="{fileIcon}" />
<mx:Label text="{fileLabel}" />
</mx:VBox>
틸리리스트에 드래그하고 떨어진 이미지가있는 사진 갤러리에 사용하고 싶습니다. 나는 그 부분이 내려졌지만 아이콘이 작동하는 것을 얻을 수없는 것 같습니다.
주어진 : 값은 파일 클래스의 일종의 래퍼입니다. MX : Image Source를 유형 클래스에 필요한 것으로 설정하고 싶습니다. NativePath 또는 URL을 사용하면 캐스트 오류가 발생합니다. XML을 사용하여 온라인으로 많은 예제와 "embed (/url/to/img.jpg)"와 같은 것을 볼 수 있습니다. 나는 당신이 나에게 그 예 중 하나를 제시한다면 (정적 이미지 사용) 당신에게 부정적인 투표를 할 것이라고 약속합니다. 그것은 내가 여기서 찾고있는 것이 아닙니다!
해결책
이것이 작동하지 않는 이유는 fileIcon
속성은 Class
. 당신은 일반적으로 유형의 객체 만 원할 것입니다. Class
공장처럼 사용할 계획이라면 해당 클래스의 인스턴스를 만듭니다. 당신이 사용할 때 [Embed]
메타 데이터, 당신은 컴파일러에 지정된 자산을 SWF에 포함시키고 또한 Class
해당 자산을 나타낼 수있는 객체 인스턴스를 평가하기위한 공장 역할을합니다. 그러나이 질문을 게시하기 전에 이미 발견했듯이 문제는 [Embed]
참조를 하드 코딩해야한다는 것입니다. 런타임에 값을 공급할 수는 없습니다 (컴파일러는 문자 그대로 자산을 컴파일 타임에 포함시켜야하기 때문에).
다행스럽게도, mx:Image.source
문자열을 받아들이는 매우 유연한 속성입니다 (대부분의 문서가 자산과 함께 사용한다는 사실에도 불구하고). Flex 애플리케이션이 자산을로드 할 수있는 한 String-Typed URL을 source
.
유형을 변경하십시오 fileIcon
문자열에, 또한 그것을 확인하십시오 value.file.url
실제로 응용 프로그램이로드 할 수있는 이미지의 URL입니다. (이 URL을 하드 코딩하여 이것을 테스트 할 수 있습니다. mx:Image
'에스 source
기인하다.)