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 > > > > > > >