Não entendi de passar o nomecompleto, namespace, nome da classe.... Crio uma classe IconesSistema.Toda vez chamo IconesSistema.icon_home, IconesSistema.icon_cliente, .... Acho mais fácil do que ter que criar um objeto class colocar o embed nele... Essa apenas seria para ter esse class e embed em uma classe separada, não muda nada.Apenas acho mais fácil.
A função no seu caso faria a mesma coisa, a única diferença é que você não sabe o nome da variável que quer acessar, pois é dinâmica apenas use a string (que tem que vir de qualquer jeito), para retornar o class certo. Repito serve apenas para evitar a criação da variável das clientes porque acho mais fácil fazê-la em um lugar apenas uma vez.Caso não se importe com o trabalho de criar a variável (que é minimo) pode fazer normalmente, cada um tem suas opiniões e jeitos de programar. On 14 jan, 18:35, Júlio César Ködel <[email protected]> wrote: > Não é uma boa anternativa, nenhuma das duas. > > Passar o nome completo do ícone é inviável, já que o transporte é muito > custoso (imagine um combo com 100 itens, cujo namespace + nome da classe > tenham 30 bytes, isso adiciona pelo menos 3000 bytes a mais no transporte). > E, como sabemos, qualquer migalha conta quando temos bottleneck =) > > A outra solução é justamente o que o Flex faz... então criar uma classe > extra para fazer uma função que ele já faz por natureza me parece meio > reinventar a roda =\ > > Como os testes mostraram que realmente ele não duplica assets, creio que não > haja problemas em manter algumas variáveis dentro do escopo. > > Outra coisa que estou pensando aqui... gerar estes arquivos de assets > dinamicamente, ou seja, ler toda a pasta de assets e montar uma classe com > todos eles embeded... usando Visual Studio e Tofino fica super fácil... se > fizer isso depois posto os resultados. > > 2010/1/14 RafaelViana <[email protected]> > > > > > > > Olha teria que testar mas acho que é: > > > NomeDaClasse.NomeDaVariavel - ex: Icones.Foo > > > Agora dinamicamente teria que testar se não vai dar problema na > > compilacao por estar setando o nome da variavel em tempo de execução, > > teria que dar uma olhada em criar nome dinâmico da variável com o > > operador this[] > > > Ou então mais fácil ainda em vez de pegar direto a referencia do > > ícone, faça um método nessa classe que receba uma string e retorne um > > class. (pode ser usada até com os icones que não são dinâmicos já que > > fica fácil de usar) ex: > > > public static function selecionarIcone(s:String):Class { > > > switch(s) { > > > case "icone_teste" : return icone_teste; > > case "icone_2" : return icone_2; > > ..... > > > } > > > <item label="Label" icon="{Icones.selecionarIcone("icone_teste")}"/> > > > obs: essas string podem ser constantes dessa classe para evitar erros. > > > Se testar nos responda o resultado > > > On 14 jan, 17:42, Júlio César Ködel <[email protected]> wrote: > > > Neste caso, como você converte um campo String, por exemplo, vindo do > > > servidor em um databind para o ícone? > > > > Ex.: tenho um combo que é preenchido por um XML server-side, contendo > > > elementos como <item label="Label" icon="Foo"/> > > > > Quando há uma variável "Foo" do tipo Class dentro da classe onde o combo > > se > > > encontra, ele automaticamente usa isso como ícone da opção do combo, mas > > se > > > não encontrar, levanta uma exceção. > > > > Colocar as imagens em uma classe separada funcionaria como? Alterar > > > icon="Foo" para icon="Namespace.Classe.Foo"? > > > > 2010/1/14 RafaelViana <[email protected]> > > > > > Eu pelo menos tenho uma classe IconesSistema onde todas as imagens > > > > estão Embed e estáticas assim FACILITAR na hora de obter acesso a > > > > elas. > > > > > No seu caso eu tiraria o bindable, pois ele é desnecessário nesse > > > > caso. > > > > > On 14 jan, 16:39, Mateus <[email protected]> wrote: > > > > > Muito Obrigado, > > > > > > fiz o seguinte teste, fiz o Embed de uma imagem de 1,24 mb, e o .SWF > > > > aumento > > > > > nesse tamanho, ai repeti o processo em diverso locais da aplicação e > > não > > > > > aumentou mais o tamanho do .SWF. > > > > > > e depois qundo removi, apenas diminuiu apenas quando removi todas as > > > > > referencias. > > > > > > 2010/1/14 Júlio César Ködel <[email protected]> > > > > > > > Eu tive esta mesma preocupação há algum tempo e, pelo que li, o > > Flex > > > > não > > > > > > repete embeded assets, ou seja, não importa quantas vezes você faz > > um > > > > > > [Embed(imagem)], a Class sempre apontará para o mesmo recurso. > > > > > > > Mas não cheguei a testar se isso é verdade. Um teste que poderia > > ser > > > > feito > > > > > > é inserir uma imagem gigantesca (por exemplo, um papel de parede em > > > > BMP) e > > > > > > verificar o tamanho do SWF gerado, aí inserir a mesma imagem em > > outros > > > > > > locais várias vezes e verificar se há um aumento significativo no > > > > tamanho do > > > > > > arquivo gerado (ou utilizar um descompilador SWF para ver se o > > asset se > > > > > > repete) > > > > > > > Isso porque há certos casos que os assets devem estar acessíveis na > > > > mesma > > > > > > classe que o utilizam (ex.: iconField em um combo). > > > > > > > As imagens físicas em si eu geralmente deixo todas na mesma pasta > > (se o > > > > > > aplicativo acessa uma library, o que é sempre uma boa idéia, > > > > especialmente > > > > > > quando se usa módulos, eu deixo todos os assets nesta library e > > acesso > > > > os > > > > > > arquivos com caminhos relativos (ex.: > > > > ../../library/assets/images/icons/16)) > > > > > > > 2010/1/14 Mateus <[email protected]> > > > > > > >> Pessoal > > > > > > >> Estou desenvolvendo um ERP aqui, e a quandidade de imagens esta > > > > crecendo, > > > > > >> gostaria de saber de vocês qual é a melhor maneira de se utilizar > > > > imagens no > > > > > >> flex? > > > > > >> Estou utilizando da seguinte maneira > > > > > >> Bindable] > > > > > >> [Embed("imagens/favicon.png")] > > > > > >> private var buttonTitle:Class; > > > > > > >> Estava pensado em criar uma super classe e fazer o Embed de todas > > as > > > > > >> imagens od sistema em um unico local, e uam unica vez, e depois > > apena > > > > > >> sutilizar essa classe, é a melhor maneira de fazer isso? > > > > > >> -- > > > > > >> __________________________________ > > > > > >> Att. > > > > > >> Mateus André Chies > > > > > >> Analista e Desenvolvedor de Sistemas > > > > > >> Bacharelando em SI - SETREM > > > > > >>http://mateuschies.blogspot.com > > > > > > >> "Viver é desenhar sem borracha." (Millôr Fernandes) > > > > > > >> -- > > > > > >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > > > > >> Para enviar uma mensagem, envie um e-mail para > > > > [email protected] > > > > > >> Para sair da lista, envie um email em branco para > > > > > >> [email protected] > > > > > >> Mais opções estão disponíveis emhttp:// > > > > groups.google.com/group/flexdev > > > > > > > -- > > > > > > [] > > > > > > Júlio César Ködel G. > > > > > > > -- > > > > > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > > > > > Para enviar uma mensagem, envie um e-mail para > > > > [email protected] > > > > > > Para sair da lista, envie um email em branco para > > > > > > [email protected] > > > > > > Mais opções estão disponíveis emhttp:// > > groups.google.com/group/flexdev > > > > > > -- > > > > > __________________________________ > > > > > Att. > > > > > Mateus André Chies > > > > > Analista e Desenvolvedor de Sistemas > > > > > Bacharelando em SI - SETREMhttp://mateuschies.blogspot.com > > > > > > "Viver é desenhar sem borracha." (Millôr Fernandes) > > > > > -- > > > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > > > Para enviar uma mensagem, envie um e-mail para > > [email protected] > > > > Para sair da lista, envie um email em branco para > > > > [email protected] > > > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev > > > > -- > > > [] > > > Júlio César Ködel G. > > > -- > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > Para enviar uma mensagem, envie um e-mail para [email protected] > > Para sair da lista, envie um email em branco para > > [email protected] > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev > > -- > [] > Júlio César Ködel G.
-- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev
