2010-07-31 6 views
0

j'ai une liste qui affiche des photos comme eux:affichage bizarre quand Scolling images à l'intérieur Liste composant dans Flex

   <s:List id="thumnPhotosList" 
        dataProvider="{_model.photoAlbumToCreate.photos}" 
        height="450" 
        itemRenderer="PhotoRenderer" > 
       <s:layout> 
        <s:TileLayout orientation="columns" 
            requestedRowCount="4" 
            requestedColumnCount="3" /> 
       </s:layout> 
      </s:List> 

et PhotoRenderer a un code comme ceci:

...... 

<mx:Image source="{_model.url + theAlbumPhoto.thumbPhotoURL}" 
          visible="{theAlbumPhoto.ready}" 
          maintainAspectRatio="true" 
          maxWidth="{Constants.DEFAULT_ALBUM_PHOTO_WIDTH}" maxHeight="{Constants.DEFAULT_ALBUM_PHOTO_HEIGHT}" />  

........ 

Ce qui fonctionne bien, sauf si le nombre de photos devient élevé et la barre de défilement apparaît elle commence à se comporter bizarrement: elle commence à montrer des photos différentes de celles supposées et si je reviens au début et fais défiler de nouvelles photos, d'autres apparaissent parfois correctes et parfois non . Vous ne savez pas comment résoudre cela, des idées? vous pouvez également recommander différentes façons que d'utiliser s: Liste si cela le rend plus facile.

+1

Pouvez-vous produire un bogue avec un cas de test reproductible? http://bugs.adobe.com/flex –

+0

J'ai essayé de reproduire le problème avec une application séparée, mais je ne pouvais pas. Peut-être en raison de la complexité de mon application ou de quelque chose qui n'a pas fonctionné. J'ai posté le code qui a fonctionné pour moi ci-dessous au cas où quelqu'un aurait un problème similaire. – Tam

Répondre

0

Comme je ne pouvais pas comprendre quel était le problème et ne pouvait pas le reproduire sur une application autonome. Je suis venu avec le code suivant qui a résolu le problème:

   <s:Scroller id="photoScroller" 
         width="100%" 
         visible="{_model.photoAlbumToCreateOrUpdate.photos.length > 0}" 
         horizontalScrollPolicy="off" verticalScrollPolicy="auto" 
         skinClass="com.lal.skins.PhotoAlbumScrollerSkin" 
         top="50" bottom="0"> 

        <s:DataGroup id="thumnPhotosList" 
            dataProvider="{_model.photoAlbumToCreateOrUpdate.photos}" 
            itemRenderer="AlbumPhotoThumbRenderer" > 
         <s:layout> 
          <s:TileLayout orientation="rows" 
              requestedRowCount="4" 
              requestedColumnCount="4" /> 
         </s:layout> 
        </s:DataGroup> 
      </s:Scroller> 
0

J'ai eu le même problème avec la liste de texte, je pense que son problème de remplissage, organiser le rembourrage pour tous les composants, il peut aider.

0

J'ai eu ce même problème avec un élément d'image dans un élément personnalisé que j'utilisais renderer dans un TileList. Je l'ai corrigé sans vraiment savoir comment, mais le problème était la propriété source du composant Image dans le rendu d'élément.

L'idée avec les moteurs de rendu d'éléments consiste à utiliser la variable data pour accéder à l'élément alimentant le moteur de rendu. Que font les variables _model et theAlbumPhoto dans votre moteur de rendu? Ce que j'ai fini par faire était de changer la propriété de la source à quelque chose de plus comme data.image_path, et il a décidé de commencer à travailler.

Si vous êtes satisfait de votre solution, j'espère que cela pourra au moins aider quelqu'un d'autre.