Comment puis-je charger des images dynamiquement sous forme d'icônes dans un TileList en utilisant Flex?

StackOverflow https://stackoverflow.com/questions/539458

Question

Ok, donc j'ai une coutume rendu que j'ai créé:

<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>

Ce que je veux utiliser pour une galerie de photos avec des images qui sont glissés et déposés sur un TileList. J'ai cette partie vers le bas, mais je ne peux pas sembler obtenir la chose icône pour travailler.

Étant donné: la valeur est une sorte d'emballage pour une classe de fichier. Je veux régler la mx: Source de l'image à quelque chose qui doit être de type Class. En utilisant nativePath ou url me donne une erreur de casting. Je vois des tonnes d'exemples en ligne avec XML et quelque chose comme « Intégrer (/url/to/img.jpg) ». Je vous promets que si vous me donnez un de ces exemples (en utilisant une image statique) Je vais vous donner un vote négatif. EST PAS IM CHERCHE ICI!

Était-ce utile?

La solution

La raison pour laquelle cela ne fonctionne pas parce que le type de la propriété fileIcon est Class. Vous seriez en général que voulez un objet de type Class si vous prévoyez de l'utiliser comme une usine, la création d'instances de cette classe avec elle. Lorsque vous utilisez les métadonnées [Embed], vous indiquez au compilateur qu'il doit intégrer l'actif spécifié dans le fichier SWF et générer également un Class d'agir comme une usine de distributeurs automatiques instances d'objets qui peuvent représenter cet actif. Cependant, comme vous l'aviez déjà découvert avant de poster cette question, le problème avec [Embed] est que vous devez coder en dur la référence, il ne vous permet pas de fournir une valeur à l'exécution (parce que le compilateur doit littéralement intégrer l'actif, à la compilation).

Heureusement, mx:Image.source est une propriété très flexible qui accepte également des chaînes (malgré le fait que la plupart des documents démontre l'utiliser avec des actifs intégrés). Tant que l'application Flex est capable de charger l'actif, vous pouvez simplement fournir une URL String typé comme source.

Modifier le type de fileIcon à une chaîne, et vérifiez également que value.file.url est en fait une URL d'une image que votre application peut charger. (Vous pouvez tester ce juste en hardcoding cette URL dans l'attribut mx:Image du source.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top