Hi, I think you need to attach the listeners to the stage.
HTH aconfrey wrote: > I'm going crazy with a bug/feature trying to receive keyboard events. > I've created a very basic app to demonstrate. I have a VBox with a > Canvas containing a TextArea. I want the TextArea to be invisible > unless a certain key is pressed. With the code as listed below on > Firefox I only receive KEY_DOWN events for the 'apple' key and the > shift key! If I click in the application area then everything works > fine and all events are received, but I don't want my user to have to > click. On Safari and the standalone Flex player all keyboard events > are received without clicking. > > I've played around with all combinations of which container to > register for key press events on and which container to set focus to. > Apart from making the behavior even more bizarre nothing seems to work. > > What am I missing? > > Thanks > > Tony > ---------- > KeyPressTest.mxml > ---------- > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > layout="absolute" width="100%" height="100%"> > <mx:Script><![CDATA[ > public var theClass:Typer; > public function startUp(c:Canvas, txt:TextArea):void { > theClass = new Typer(c, txt); > } > ]]></mx:Script> > <mx:VBox horizontalCenter="14" verticalCenter="18" height="100%" > width="100%" horizontalAlign="center" verticalAlign="middle"> > <mx:Canvas id="cnvs" height="100%" width="100%" borderStyle="solid" > creationComplete="startUp(this.cnvs, this.txt)"> > <mx:TextArea width="100%" height="100" > verticalScrollPolicy="auto" > id="txt" visible="false" text="Can you see Me?"/> > </mx:Canvas> > </mx:VBox> > </mx:Application> > ------------ > Typer.as > ------------ > package > { > import mx.containers.*; > import mx.controls.*; > import flash.events.KeyboardEvent; > > public class Typer > { > private var ta:TextArea; > private var cv:Canvas; > public function Typer(c:Canvas, txtArea:TextArea) { > ta=txtArea; > cv=c; > cv.addEventListener(KeyboardEvent.KEY_DOWN,typing); > cv.setFocus(); > } > > public function typing(e:KeyboardEvent):void{ > trace("now we're typing - keydown", e); > ta.visible=!ta.visible; > cv.setFocus(); > } > } > } > >

