Domanda

Ok, quindi ho un rendering personalizzato che ho creato:

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

Quello che voglio usare per una galleria fotografica con le immagini che sono trascinati e rilasciati su un TileList. Ho che parte verso il basso, ma non riesco a ottenere l'icona cosa al lavoro.

Data: il valore è una sorta di wrapper per una classe di file. Voglio impostare la mx: Fonte immagine di qualcosa che deve essere di tipo Class. Utilizzando nativePath o url mi dà un errore di cast. Vedo tonnellate di esempi online utilizzando XML e qualcosa come "Incorpora (/url/to/img.jpg)". Vi prometto che se mi dai uno di quegli esempi (utilizzando un'immagine statica) Vi darò un voto negativo. NON è ciò che Im cercando qui!

È stato utile?

Soluzione

Il motivo per cui questo non sta funzionando perché il tipo di proprietà fileIcon è Class. Si potrebbe in genere vorrebbe solo un oggetto di tipo Class se avete intenzione di usarlo come una fabbrica, la creazione di istanze di quella classe con esso. Quando si utilizza i metadati [Embed], si indica al compilatore che dovrebbe incorporare la risorsa specificata nel file SWF e anche generare un Class di agire come una fabbrica per distributori istanze di oggetti che possono rappresentare tale attività. Tuttavia, come si era già scoperto prima di pubblicare questa domanda, il problema con [Embed] è che è necessario codificare il riferimento, che non consente di fornire un valore in fase di esecuzione (perché il compilatore ha bisogno di incorporare letteralmente il bene, a compile-time).

Per fortuna, mx:Image.source è una struttura molto flessibile che accetta anche le stringhe (nonostante il fatto che la maggior parte della documentazione illustra l'utilizzo con risorse incorporate). Fino a quando l'applicazione Flex è in grado di caricare il bene, si può solo fornire un URL String-digitato come il source.

Cambiare il tipo di fileIcon in una stringa, e anche verificare che value.file.url è in realtà un URL di un'immagine che l'applicazione può caricare. (È possibile verificare questo semplicemente hardcoding questo URL nella attributo mx:Image del source.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top