Pergunta

Deixe-me apresentar o problema em primeiro lugar. Eu preciso carregar todas as imagens que eu usei no meu projeto externamente sem incorporar. As imagens estão presentes tanto em peles ou como ícones para itens em árvores. Me deparei com a classe IconUtility aqui Eu era capaz de modificá-lo e usá-lo para as árvores, mas o problema é que não podemos usar iconutility para o mesmo componente para set 2 peles diferentes (como um botão - upSkin downSkin). Eu não era capaz de pensar em uma solução com iconutility. É possível simular incorporar e criar uma classe dinamicamente e retornar a classe em tempo de execução?

Foi útil?

Solução

a coisa mais simples de realizar essas coisas é criar um / vários swfs contendo seus ativos, carregá-lo e, em seguida, puxe as classes de lá (ou seja, a partir do domínio de aplicação SWFs carregados) ...

existem várias soluções para isso:

  • versão de hardcore é carregar essas imagens em ByteArrays usando URLLoader, e, em seguida, criar uma nova ByteArray, que vai ser um arquivo SWF, contendo os ativos incorporados e as instruções necessárias para ligá-los com aulas ... que você pode quero ter uma olhada faísca é swfassist ...
  • um pouco mais simples e performance (desde que você só fazer isso uma vez), é fazer isso no servidor ... aqui você poderia
    • simplesmente usar o flexível compilador
    • uso swfmill
    • usar algumas bibliotecas para manipular swf, como ming
    • fazer você mesmo, à mão ...:)

esperança que ajuda

Editar: a segunda solução é sobre a criação de ativos no servidor, usando uma ferramenta adequada ... ou codificação você mesmo a ferramenta, mas que foi mais de uma piada ... :) .. . eu percebi, o link para o compilador Flex estava errado ... a idéia seria a de simplesmente ligá-lo em seu servidor web, e depois tê-lo compilar alguns ActionScript, que vai fazer o incorporar ... para que geraria uma arquivo ActionScript como esta:

package {
    import flash.display.Sprite;
    import flash.utils.describeType;
    public class Assets extends Sprite {
        [Embed(source='asset_1_Location')]
        public static var asset_1:Class;
        [Embed(source='asset_2_Location')]
        public static var asset_2:Class;
        ...
        [Embed(source='asset_n_Location')]
        public static var asset_n:Class;    
        public function Assets() { }
        public static function getAll():Object {
            var ret:Object = { };
            for each (var x:XML in describeType(Assets).variable.(@type=="Class")) {
                var name:String =  x.@name;
                ret[name] = Assets[name];
            }
            return ret;
        }
    }
}

, em seguida, ter o compilador Flex compilá-lo ... quando carregado, extrair dados com LoaderInfo :: ApplicationDomain.getDefinition ( "Ativos"). GetAll (), que lhe dará um mapa de valores-chave com todos as classes necessárias. ..

com outras ferramentas, ele iria trabalhar de forma diferente, mas espero que isso esclarece, como ele deve funcionar ...

no servidor, você precisa de um serviço, que vai construir esses fundos soberanos de ativos para você, e cache-los ... assim que você enviar algum pedido POST, por exemplo, com uma matriz JSON de arquivos / imagens que você precisa, e vai lhe dar de volta o swf ... o servidor deve fazer cache apropriada, é claro ...

esperança, agora ele ajuda ...:)

greetz

back2dos

Outras dicas

Este era o que eu estava procurando ... Infelizmente, o autor afirma que ele não foi capaz de usá-lo para peles botão

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