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

Responder a