Pergunta

Ok, então eu tenho um costume torná que eu criei:

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

Que eu quero usar para uma galeria de fotos com imagens que são arrastado e solto em uma TileList. Eu tenho essa parte para baixo, mas eu não consigo obter o ícone coisa a trabalho.

Dada: O valor é uma espécie de invólucro para uma classe de arquivo. Eu quero definir o mx: Fonte da imagem para algo que precisa ser do tipo Class. Usando nativePath ou url me dá um erro de elenco. I ver toneladas de exemplos online usando XML e algo como "Embed (/url/to/img.jpg)". Eu prometo a você que, se você me der um desses exemplos (usando uma imagem estática) Vou dar-lhe um voto negativo. QUE NÃO É O QUE IM procurando aqui!

Foi útil?

Solução

A razão por que isso não está funcionando é porque o tipo da propriedade fileIcon é Class. Você, em geral, só quero um objeto do tipo Class se você pretende usá-lo como uma fábrica, criando instâncias dessa classe com ele. Quando você usa os metadados [Embed], você indica ao compilador que ele deve incorporar o ativo especificado no SWF e também gerar um Class para atuar como uma fábrica de máquinas de venda instâncias de objetos que podem representar esse activo. No entanto, como você já tinha descoberto antes de postar esta pergunta, o problema com [Embed] é que você precisa para codificar a referência, ele não permite que você fornecer um valor em tempo de execução (porque as necessidades do compilador para literalmente incorporar o ativo, pelo em tempo de compilação).

Felizmente, mx:Image.source é uma propriedade muito flexível que também aceita Cordas (apesar do fato de que a maioria documentação demonstra a usá-lo com ativos embutidos). Enquanto a aplicação Flex é capaz de carregar o ativo, você pode apenas fornecer uma URL String-digitado como o source.

Alterar o tipo de fileIcon a um String, e também verificar se value.file.url é realmente uma URL de uma imagem que a sua aplicação pode carregar. (Você pode testar isto, basta codificar este URL no atributo mx:Image do source.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top