You don't need any special hash class for this; since you're using
string keys, you can simply use the Object class, like so:

class ChannelInput {
private handlerMap:Object = null;

function ChannelInput() {
  handlerMap = new Object();
}

public function addKey(key:String, handler:KeyHandler):Void {
  handlerMap[key]=handler;
}

public function processKey(key:String):Void {
  var handler:KeyHandler  = KeyHandler(handlerMap[key]);

  if (handler == undefined) {
    trace("ERROR: undefined handler for key \"" + key + "\"");
  } else {
    handler.handleKey(key);
  }
}

HTH,
 Ian

On 6/7/06, Bart Wttewaall <[EMAIL PROTECTED]> wrote:
The open-source Vegas framework at osflash.org makes use of a hashmap.
Since every Object extends of CoreObject, a hashcode is added to every
object. A nice solution, I think.

static private var _initHashCode:Boolean =
HashCode.initialize(CoreObject.prototype) ;

2006/6/7, Kevin Aebig <[EMAIL PROTECTED]>:
> Well the code that your friend is suggesting is pretty straightforward and
> you could port it over to AS2 if you wanted. Instead of a hashMap, why not
> just use an associative array? I'm pretty sure that I've seen a hash class
> ripping around from either Brandan Hall or Samuel Wan based off of an
> associative array.
>
> All in all, the code could be ported over with minimal effort... but there
> would be some area's that you would need to be creative with.
>
> Cheers,
>
> Kevin
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of black59mga
> Sent: June 6, 2006 4:09 PM
> To: Flashcoders mailing list
> Subject: RE: [Flashcoders] How do real developers do key handling?
>
> I have 10 apps that will controlled with a TV remote control (no mouse).
> There are only 12 keys on the remote, so the app that has focus will will
> have to do very different things with a given key press, depending on
> context.
>
> A java dev. friend suggested an approach using a hashMap, but we don't have
> hashMap in AS 2.0. And I'm a bit confused by his sample code:
>
> public class ChannelInputTest {
>   public static void main(String argv[]) {
>
>     // Create a new ChannelInput object and add a few keys to its map
>     ChannelInput ci1 = new ChannelInput();
>     ci1.addKey("1", new SimpleKeyHandler());
>     ci1.addKey("2", new AnotherSimpleKeyHandler());
>
>     // Now handle some keys with this puppy
>     ci1.processKey("1");
>     ci1.processKey("2");
>
>     // Create a SECOND ChannelInput object, and add some different
> keys/handlers
>     ChannelInput ci2 = new ChannelInput();
>     ci2.addKey("3", new AnotherSimpleKeyHandler());
>     ci2.addKey("4", new SimpleKeyHandler());
>
>     ci2.processKey("3");
>     ci2.processKey("4");
>
>     // Finally - should get an error if a ChannelInput gets unmapped key
>     ci2.processKey("1");
>   }
> }
>
> import java.util.HashMap;
>
> public class ChannelInput {
>   private HashMap handlerMap = null;
>
>   ChannelInput() {
>     handlerMap = new HashMap();
>   }
>
>   public void addKey(String key, KeyHandler handler) {
>     handlerMap.put(key, handler);
>   }
>
>   public void processKey(String key) {
>     KeyHandler handler = (KeyHandler) handlerMap.get(key);
>
>     if (handler == null) {
>       System.out.println("ERROR: null handler for key \"" + key + "\"");
>     } else {
>       handler.handleKey(key);
>     }
>   }
>
> public class SimpleKeyHandler implements KeyHandler {
>   public void handleKey(String key) {
>     System.out.println("SimpleKeyHandler Key " + key + " was pressed");
>     // Action for this key goes here
>   }
> }
>
> interface KeyHandler {
>   public void handleKey(String key);
> }
>
> <><><>
> Kevin Aebig <[EMAIL PROTECTED]> wrote: Perhaps if you told us what you're
> trying to accomplish, we could offer
> suggestions around it, but as far as catching specific keys, I'm pretty sure
> you're doing it the only way possible.
>
> !k
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of black59mga
> Sent: June 6, 2006 3:01 PM
> To: flash Coders
> Subject: [Flashcoders] How do real developers do key handling?
>
> How do real actionscript developers do key handling? If you have several
> (like 10) apps that are loaded into MCs in 'Main.swf'... What's a good way
> to code the key handling?  Right now I'm drowning in multiple key.GetCode()
> switch statements that all live in my 'Main.as'. How do smart people do
> this??
>
> Any suggestions, sample code, links to tutes etc., very greatly appreciated.
>
> -mga
>
>
>
>
> ---------------------------------
> Sneak preview the  all-new Yahoo.com. It's not radically different. Just
> radically better.
> _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
>
> _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to