무대에서 비트 맵이 있는데이 비트 맵을 TileList 구성 요소에로드하려고합니다. 그러나 TileList의 dataProvider는 URL 링크가 매개 변수로 전달되지만 bitmapData는 전달하지 못하도록 요청합니다. 내가 어떻게 그럴 수 있니?TileList AS3에 비트 맵 데이터로드
참고 : byteArray로 저장된 Sqlite 데이터베이스에서 bitmapdata를로드하고 있습니다. 오, 나는 AIR를 사용하고있다.
무대에서 비트 맵이 있는데이 비트 맵을 TileList 구성 요소에로드하려고합니다. 그러나 TileList의 dataProvider는 URL 링크가 매개 변수로 전달되지만 bitmapData는 전달하지 못하도록 요청합니다. 내가 어떻게 그럴 수 있니?TileList AS3에 비트 맵 데이터로드
참고 : byteArray로 저장된 Sqlite 데이터베이스에서 bitmapdata를로드하고 있습니다. 오, 나는 AIR를 사용하고있다.
거기에 아마이다. 당신이 BitmapData 빠른 옵션으로 bitmapData 것을 포함하는 비트 맵 개체를 통과하는 것입니다 경우 : 당신은 사용자 정의 셀 렌더러 경로를 수행 할 경우
for(var i:int = 0 ; i < 10; i++) t.addItem({label:'item '+(i+1),source:new Bitmap(new YourBitapData())});
을, 당신은 그렇게 할도 할 수 있습니다. 주된 문제는 UIComponent의 getDisplayObjectInstance() 메서드가 BitmapData를 처리하지 않는다는 것입니다.난 당신이 ImageCell로 서브 클래스 및 변경이 필요 만들 수 상상 :
if(getQualifiedSuperclassName(classDef) == "flash.display::BitmapData") return new Bitmap(new classDef);
더 간단할수록 좋습니다. 제 제안을 권하고 싶습니다.
고맙습니다. 나는 '소스'매개 변수가 URL을 취할 수 있지만. 한 가지 더 질문하지만 나중에 TileList에서 bitmapData를 어떻게 가져올 수 있습니까? – astralmaster
항목의 source 속성은 비트 맵 객체를 다시 검색하므로 bitmapData 속성으로 가져올 수 있습니다. 'tileList.getItemAt (0) .source.bitmapData'. 조금 벗어난 주제 : 도움이 될지 모르지만 알아 둘 사항 : [캐싱] (http://www.darklump.co.uk/blog/?p=3) –
fl.controls.TileList를 사용하지 않았지만 Flex 구성 요소와 유사한 전략 인 항목 렌더러를 사용하는 것으로 보입니다. 이 경우
는 fl.controls.TileList에 대한 설명서는 말한다 :이 구성 요소에 대한
기본 셀 렌더러는 ImageCell로 클래스입니다. ImageCell 셀 렌더러는 축소판 이미지와 단일 행 레이블을 표시합니다. TileList 구성 요소에서 목록 기반 셀을 렌더링하려면 CellRenderer 클래스를 사용합니다.
당신이 원하는 것은 dataProvider에서 BitMapData
을 가져 와서 이미지를 표시하는 데 사용할 클래스를 지정하는 것입니다.
렌더러에 다른 클래스를 사용하려면 TileList
의 cellRenderer 스타일을 사용하십시오.
:
기본 접근 방식 사용자 정의 렌더러를 만들려면 다음과 같이하십시오.
1. 새 클래스를 만듭니다. AT는의 CellRenderer 연장 :가
public class CustomRenderer extends CellRenderer
{
public function CustomRenderer()
{
super();
}
}
2. 오버라이드 CellRenderer
클래스 data
속성 세터에있어서, 상기 TileList
성분이 dataProvider
의 각 요소에 대한 렌더링을 생성한다
. 그런 다음 각 렌더러에서이 세터 메소드를 호출하여 해당 요소의 데이터를 전달합니다. 이 세터에서는 BitMapData
을 가져 와서 렌더러에 이미지를 사용할 수 있습니다. 아래는 테스트되지 않은 코드는 당신은 TileList 구성 항목의의 소스 매개 변수로 DisplayObject를 전달할 수 있습니다이 할 수있는 더 좋은 방법은 (우리가 플렉스에서 물건 이러한 유형의 좋은 단축키를)
override public function set data(value:Object):void
{
super.data = value;
if (value != null && value.hasOwnProperty("propertyNameThatContainsBitMapData"))
{
var bmData:BitMapData = value["propertyNameThatContainsBitMapData"] as BitMapData;
if (bmData)
{
var g:Graphics = this.graphics;
g.beginBitMapFill(bmData);
g.drawRect(0,0,100,100); // use whatever dimensions you want
g.endFill();
}
}
}
링크에 감사드립니다. 따라서 이해할 수있는 한, dataProvider의 매개 변수를 재정의해야합니까? 현재 몇 가지 예를 찾고 있는데 – astralmaster
몇 가지 세부 정보를 포함하도록 내 답변을 수정하겠습니다. 죄송합니다. 이보다 더 많은 도움이되지 못합니다. (저는 Flex 나 순수한 AS3 개발자가 아니라 사용하지 마십시오. Flash CS5). –
나는 @George Profenza의 솔루션이 마음에 든다. 꽤 똑바로 보인다! –
Adobe의 TileList 구성 요소는 두 가지입니다. 하나는 Flex 용이고 다른 하나는 Flash CS5 용입니다. 어느 쪽을 사용하고 있습니까? –
플래시 용 fl.controls.TileList. – astralmaster