Hey Troy,

Thanks!  That was totally it!  Fixed the browser problem, and it's way less 
code... 
awesome!

//Matt

--- In flexcoders@yahoogroups.com, "Troy Gilbert" <[EMAIL PROTECTED]> wrote:
>
> Not sure what you're specific problem may be, but to answer the question of
> what to do since there's no Key.isDown()...
> 
> I borrowed this from Andre Michelle... works a charm.
> 
> private var keyState:Array = new Array();
> 
> private function handleKeyDown(event:KeyboardEvent):void
> {
>     keyState[event.keyCode] = true;
> }
> 
> private function handleKeyUp(event:KeyboardEvent):void
> {
>     keyState[event.keyCode] = false;
> }
> 
> This takes advantage of the fact that AS3 arrays are sparse (otherwise you
> could just use an Object or Dictionary). Just replace any calls to
> Key.isDown() with keyState[Keyboard.CONSTANT].
> 
> Troy.
> 
> 
> On 20 Mar 2007 05:22:18 -0700, mtthwnthnyhys <[EMAIL PROTECTED]> wrote:
> >
> >   Hey all,
> >
> > I'm working on some physics/game stuff... not typical Flex area of
> > concern, but... well
> > eventually I'll be making use of the Flex specific stuff, and for now I
> > want to write in in AS3
> > and am on a Mac, so no AS3 Preview for me... :(
> >
> > Anyways, I wrote a little function to try and capture "persistent" key
> > press... as the
> > Key.isDown() got deprecated. It looks like this:
> >
> > private var l:uint; //left
> > private var u:uint; //up
> > private var r:uint; //right
> > private var d:uint; //down
> >
> > private function persistKeyDown(event:KeyboardEvent):void
> > {
> > if(event.keyCode == Keyboard.LEFT)
> > {
> > l = setInterval(control, 10, event);
> > }
> >
> > if(event.keyCode == Keyboard.UP)
> > {
> > u = setInterval(control, 10, event);
> > }
> >
> > if(event.keyCode == Keyboard.RIGHT)
> > {
> > r = setInterval(control, 10, event);
> > }
> >
> > if(event.keyCode == Keyboard.DOWN)
> > {
> > d = setInterval(control, 10, event);
> > }
> >
> > //tFrame.text = "keyDown: " + event.keyCode;
> > }
> >
> > private function persistKeyUp(event:KeyboardEvent):void
> > {
> > if(event.keyCode == Keyboard.LEFT)
> > {
> > clearInterval(l);
> > }
> >
> > if(event.keyCode == Keyboard.UP)
> > {
> > clearInterval(u);
> > }
> >
> > if(event.keyCode == Keyboard.RIGHT)
> > {
> > clearInterval(r);
> > }
> >
> > if(event.keyCode == Keyboard.DOWN)
> > {
> > clearInterval(d);
> > }
> >
> > //tFrame.text = "keyUp: " + event.keyCode;
> > }
> >
> > The control function just applies forces to an object on the screen. I
> > have the seperate
> > intervals for each key so that I can catch simultaneous keys being held
> > down... is that
> > right? I think I must be doing something wrong, because, though it works
> > fine in FireFox,
> > it behaves all weird in Safari.
> >
> > You can check it out here:
> >
> > http://www.noncehence.com/game/experiments/test05.html
> >
> > Ideally, the green ball should bounce off the walls and the grey box.
> > You'll have to click
> > inside the canvas to give it focus, and you can control the green ball
> > with the arrow keys.
> > It's actually kind of fun already, but only in FireFox. In Safari, the
> > green ball seems to get
> > "stuck" in one direction or another and "magnatize" to a wall.
> >
> > Is there a difference between how keyDown/Up events are dispatched in
> > various browsers?
> > That doesn't make any sense to me... but then, I don't know why I'm having
> > this problem.
> >
> > If anyone can help, or has other questions for me, please let me know.
> >
> > Thanks much,
> > //Matt
> >
> >  
> >
>


Reply via email to