Para passar um parâmetro a um listener adicione o listener a uma
função que recebe um parâmetro e que devolve uma outra função. Essa
função que é retornada é que deverá então receber como argumento o
parâmentro do evento. Por exemplo:
private function addMarker(localizacao:Object):void
{
var marker:Marker=new Marker(localizacao.point);
map.addOverlay(marker);
marker.addEventListener(MapMouseEvent.CLICK, teste(obj), false,
0);
}
private function teste(objecto:Object) : Function
{
// Aqui voce pode aceder ao objecto pra fazer o que precisar...
return function (e:MapMouseEvent):void
{
// ...e aqui também
Alert.show("TESTE");
}
}
On 8 dez, 21:49, Rodrigo Pandini <[email protected]> wrote:
> @fabiophx A dúvida é do outro Fabio e não minha :)
>
> Fabio,
> No caso, você tem que passar o evento como parâmetro, como disse o outro
> Fabio :)
> No seu caso, você pode fazer assim:
>
> private function addMarker(localizacao:Object):void
> {
> var marker:Marker=new Marker(localizacao.point);
> map.addOverlay(marker);
> marker.addEventListener(MapMouseEvent.CLICK, teste, false, 0);
>
> }
>
> private function teste(e:MapMouseEvent):void
> {
> Alert.show("TESTE");
>
> }
>
> A pergunta então é: tem como passar outro parâmetro além do evento pra
> função listener?
> Confesso que não sei, nunca vi e num to achando no docs. Alguém ai sabe se é
> possível?
> Porque no caso aí do uso do mapa, quando a pessoa clicar em cima do marker,
> só ocorre o event MapMouseEvent.CLICK.
> Como ele iria passar os demais parâmetros nesse esquema ai onde só foi
> definido o listener?
>
> 2009/12/8 fabiophx <[email protected]>
>
>
>
>
>
> > Rodrigo,
> > Qd se usa addEventListener vc só informa a função, e esta função
> > prioritamente terá q ter um parâmetro q é o evento q o Flex irá
> > passar.
> > Via MXML vc chama a função como outra qq ex.:
> > <mx:Button click="funcao(1, 'parm2');" />
> > <mx:Button click="funcao2();" />
>
> > []s
> > Fabio da Silva
> >http://fabiophx.blogspot.com/
>
> > On 8 dez, 12:04, Fabio Ebner <[email protected]> wrote:
> > > Rodrigo com a MapMousEvent.CLICK funcionou, porem quero chamar uma funcao
> > > que eu passo um parametro??? e possivel?? eu tentei trocar fazer a
> > funcao,
>
> > > private function teste(nome:String):void{
>
> > > }
>
> > > e chamei assim:
>
> > > *var* marker:Marker=*new* Marker(localizacao.point);
>
> > > *this*.map.addOverlay(marker);
>
> > > marker.addEventListener(MapMouseEvent.CLICK, teste(localizacao.address));
>
> > > porem so de adicionar a Mark ele ja executa a funcao, e se eu clicar
> > sobre a
> > > marca ele da erro:
>
> > > TypeError: Error #1006: value is not a function.
> > > at <anonymous>()
> > > at flash.events::EventDispatcher/dispatchEventFunction()
> > > at flash.events::EventDispatcher/dispatchEvent()
> > > at com.google.maps.overlays::Marker/dispatchMarkerMouseEvent()
> > > at com.google.maps.overlays::Marker/onOverlayClick()
>
> > > valeu
>
> > > 2009/12/7 Rodrigo Pandini <[email protected]>
>
> > > > Fábio,
> > > > Dá uma olhada na documentação:
>
> > > >http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/refer.
> > ..
> > > > Se você for em propriedades do MarkerOptions, vai ver que tem uma
> > > > propriedade chamada *clickable*.
> > > > Em algum momento você alterou essa propriedade antes?
> > > > Porque o estranho é que o default dela é true.
> > > > Se não for isso, talvez (quase certo) que seja o tipo de evento que
> > você tá
> > > > usando.
> > > > Repare que tem o *MapMouseEvent.CLICK*
>
> > > >http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/refer.
> > ..
> > > > Tente trocar o MouseEvent.CLICK que você está usando por
> > > > MapMouseEvent.CLICK pra ver se dá certo ai.
> > > > Att.
>
> > > > 2009/12/7 Fabio Ebner <[email protected]>
>
> > > >> Entao nao tem esse EventMaker, estou usando a api do googleMaps.
>
> > > >> 2009/12/7 J.C.Ködel <[email protected]>
>
> > > >> Tente usar o EventMark:
>
> > > >>> var marker:EventMarker = new EventMarker(trafficEvent, icon);
>
> > > >>> marker.addEventListener(MouseEvent.CLICK,
> > onMarkerClick);
>
> > > >>> *From:* Fabio Ebner <[email protected]>
> > > >>> *Sent:* Monday, December 07, 2009 4:56 PM
> > > >>> *To:* [email protected]
> > > >>> *Subject:* [flexdev] Re: Ajuda AddEventListener
>
> > > >>> AE mlkao.. ficou assim e nao funcionou
>
> > > >>> private function addMarker(localizacao:Object):void
> > > >>> {
> > > >>> var marker:Marker=new Marker(localizacao.point);
>
> > > >>> this.map.addOverlay(marker);
> > > >>> marker.addEventListener(MouseEvent.CLICK, teste,
> > false,
> > > >>> 0);
>
> > > >>> }
>
> > > >>> private function teste(evt:MouseEvent):void
> > > >>> {
> > > >>> edit.text="vaii";
> > > >>> Alert.show("TESTE");
> > > >>> }
>
> > > >>> e nao funcionou
>
> > > >>> 2009/12/7 Paulo Fernando Stoppa <[email protected]>
>
> > > >>>> cara, a assinatura da function teste ta errada...
> > > >>>> tem q ser assim
> > > >>>> private function teste(event:MouseEvent):void
>
> > > >>>> Paulo Fernando Stoppa
> > > >>>> [email protected]
>
> > > >>>> 2009/12/7 Fabio Ebner <[email protected]>
>
> > > >>>> Pessoal fiz o seguinte codigo:
>
> > > >>>>> private function addMarker(localizacao:Object):void
> > > >>>>> {
> > > >>>>> var marker:Marker=new Marker(localizacao.point);
> > > >>>>> marker.addEventListener(MouseEvent.CLICK, teste,
> > false,
> > > >>>>> 0);
> > > >>>>> this.map.addOverlay(marker);
>
> > > >>>>> }
>
> > > >>>>> private function teste():void
> > > >>>>> {
> > > >>>>> edit.text="foi";
> > > >>>>> }
>
> > > >>>>> alguem pode me ajudar pq qdo eu clico na marca ele nao faz nada??
> > nao
> > > >>>>> executa o eventListener (no meu caso o teste)..
>
> > > >>>>> Obrigado
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---