문제

Tilelist 내부의 Itemrenderers와 함께 이상한 문제가 발생합니다.

다음은 Itemrenderer가없는 작업 예입니다. 152.org/flex/

다음은 Itemrenderer가있는 깨진 버전입니다 : 152.org/brokenexample/
(나는이 두 가지를 모두 링크 할 담당자가 없습니다)

두 가지 예 모두 "뷰 소스"가 활성화되어 있습니다.

문제를 보려면 깨진 예제를 사용하려면 앨범을 선택하고 한 행 아래로 스크롤하십시오. 다시 스크롤하면 이미지가 전환됩니다. 작업 예제에서 이것을 시도하면 괜찮습니다.

이것은 널리 알려진 버그 인 것처럼 보이지만 솔루션을 찾을 수 없습니다.

업데이트
나는이 예를 다시 연주하기 시작했고 다른 것을 발견했습니다. 데이터 세터를 무시할 필요가 없습니다. 타일이 새로 고칠 때마다 설정된 ItemRenderer에서 새 메소드를 만들 수 있습니다. 따라서 속임수는 초기화 또는 CreationCeplete 방법에 의존하지 않는 것입니다.

이것이 제가 응용 프로그램의 ItemRenderer에 대한 것입니다.

<itemRenderers:ImageTile img="{data}"/>

이것은 ItemRenderer에있는 코드입니다.

public function set img(value:String) : void {
  trace("setting source: " + value);
  this.source = value;
  this.name = value.toString().split("/").pop().split(".").shift();
}

내 예제를 업데이트했습니다 이 변화를 반영합니다.

도움이 되었습니까?

해결책

앱이 편리하지 않으므로 엔드 투 엔드를 테스트 할 수는 없지만 소스를 보았습니다. 당신은 아마도 그것을 무시해야 할 것입니다 데이터 ItemRenderer의 Setter :

<?xml version="1.0" encoding="utf-8"?>
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()">

 <mx:Script>
  <![CDATA[

   override public function set data(value:Object):void
   {
    super.data = value;
    this.source = data;
    this.name = data.toString().split("/").pop().split(".").shift();
   }

   private function init() : void {
    // Removed from your source and transplanted above
   }

  ]]>
 </mx:Script>

</mx:Image>

Flex는 목록에서 항목 렌더러를 재사용하려고 시도합니다 (즉, 초기화, 생성 컴퓨터 등이 기대할 수있는 수명주기 이벤트는 항상 발사되지 않습니다). 스크롤 이벤트가 발생할 때와 같이 데이터 항목이 변경되면 모범 사례는 렌더러의 데이터 속성을 무시하는 것입니다. 그것은 문제를 해결할 가능성이 높습니다.

다른 팁

CreationComplete를 무효화하려고할까요?

내가 DataGrids (Tilelist와 다소 유사하게 작동 함)로 기억하는 것에서 항목이 재현 된 경우 초점을 맞 춥니 다.

<mx:itemRenderer>
  <mx:Image id="myImage" creationComplete="myImage.invalidate()" />
</mx:itemRenderer>

이 코드를 시도하지는 않았지만 이것이 당신이 찾고 싶은 곳이라고 생각합니다. 나는 당신의 itemrenderer 구성 요소를 살펴 보았습니다. 기능을 호출하려면 초기화 대신 CreationComplete를 사용해보십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top