Tatiane . 0 Denunciar post Postado Maio 18, 2007 Oi gente, Estou encontrando problemas na utilização do ComboBox quando ele é instanciado através da classe ComboBox.Vou explicar melhor...Quando instancio um ComboBox, por exemplo "cb", adiciono itens e registro uma função ouvidora para o evento de onChange, qualquer alteração na combo, a função é executada. Alteração via teclado, mouse e até mesmo quando abrimos a lista da combo e navegamos pelas setas. Porém, se declarar "cb" como instância da classe ComboBox, o evento onChange não se comporta como anteriormente. Ocorre que, quando o usuário abre a lista da combo e navega pelo teclado, o item selecionado é atualizado, porém, o evento de change não é disparado. Esse é um comportamento esperado?Ahh... estou usando o Flash MX 2004. Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 18, 2007 Hum.. como você está criando o ouvinte? Exemplo var listenerObject:Object = new Object();listenerObject.change = function(eventObject:Object) { // Your code here.};comboBoxInstance.addEventListener("change", listenerObject); Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Tatiane . 0 Denunciar post Postado Maio 21, 2007 Oi, sim, a função ouvidora tá funcionando direitinho... fiz um exemplo pra ficar mais claro.. Desta forma funciona corretamente, mas não posso utiliza-lo pois uso em uma classe externa. cb1.addItem("A");cb1.addItem("B");cb1.addItem("C");cb1.addItem("D");cb1.addItem("E");cb1.addItem("F");cb1.addItem("G");listener = new Object();listener.change = function(event:Object) { trace(event.target._name + " - " + event.target.selectedItem.label);}cb1.addEventListener("change", listener); Quando incluo as duas linhas abaixo, o comportamento é alterado e não funciona mais como deveria. import mx.controls.ComboBox;var cb1:ComboBox; Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 21, 2007 É, realmente estranho. Não tive tempo de achar uma solução, a não ser não usar o strict data typing. Deve ser algum bug nas classes dos componentes, pois o flash acusa não haver os eventos addItem e addEventListener, que na verdade são herdados de outras classes do sistema deles. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Compartilhar este post Link para o post Compartilhar em outros sites
Tatiane . 0 Denunciar post Postado Maio 21, 2007 E qual seria a solução com o strict data typing? Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 21, 2007 O strict data typing é apenas a declaração do tipo de variável.a = "1"; //semvar a:String = "1"; //com strict data typingEntão seria mais fácil apenas ignorar o var cb1:ComboBox;, hehe. Compartilhar este post Link para o post Compartilhar em outros sites
Tatiane . 0 Denunciar post Postado Maio 21, 2007 sim, mas infelizmente eu não tenho como ignorar a declaração pois utilizo o combo dentro de uma classe externa.Eu consigo acessar todos os métodos do combo através da classe externa, apenas o comportamento (quando utilizado pelo teclado) é diferente. Compartilhar este post Link para o post Compartilhar em outros sites