|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
Description
| Class Summary | |
|---|---|
| KeyProcessor | This class is intended to associate key (game action) or sequence of keys and/or game actions with command. |
| XCanvas |
A Canvas subclass that translates key events
to commands and issues them to commands execution thread and implements
double buffering. |
This package is intended to associate key (game action) or sequence of keys
and/or game actions with command and issue it to the commands execution thread.
This package depends on mome package. This package contains two classes:
KeyProcessor used to map key (game action) or sequence
of keys and/or game actions to command. XCanvas - Canvas
subclass that translates key events to commands
and issues them to commands execution thread and implements double buffering.
This is a Canvas subclass that translates
key events to commands and issues them to commands execution thread,
implements double buffering.
To use this class
executor property (e.g. to
MoXMIDlet.getExecutor() method or any other Executor
instance, as Executor can be used independenly from
MoXMIDlet),KeyProcessor and set it via
setKeyProcessor(mome.keyb.KeyProcessor) method.
It uses KeyProcessor to map key (game action) or sequence
of keys and/or game actions to command. KeyProcessor can be
set and returned by setKeyProcessor(KeyProcessor),
getKeyProcessor() methods respectively.
It also uses Executor to issue found command to the commands execution
thread. Executor can be set and returned by
setExecutor(Executor),
getExecutor() methods respectively.
To realize double buffering it contains methods
getGraphics() to get
Graphics instance associated with buffer.
and flushGraphics() to flush contents of the buffer.
This class is intended to associate key (game action) or sequence of keys
and/or game actions with command. In this class term "command" is abstracted
to an Object (like in mome package). Key - command
association can be looked up by calling method
KeyProcessor.process(int) with key code. Game action -
command association can be looked up by calling the same method with key code
mapped to the given game action or with game action directly.
Based on fact, that key codes and game action constants do not intersect (key
code is unicode code of character representation of key or a negative value
and game action constants are mapped to control unicode characters), it is
possible to look up commands with key codes and game action constants
independently. For example methods invocations:
processor.process(Canvas.KEY_NUM4); and
processor.process(Canvas.LEFT); will return the same result on
almost every phone, because mostly key '4' is mapped to game action
"LEFT".
Association of sequences of keys and/or game actions with command is based on
introduction of alt keys (alt game actions), that can be associated with
other KeyProcessors. If alt key (alt game action) is found method
KeyProcessor.process(int) returns
KeyProcessor.ALT_KEY_ACTIVATED constant. Next invocation of
KeyProcessor.process(int) will look up key or game action
at KeyProcessor associated with previous alt key (alt game action), For
example, to associate a key sequence '#', '9' with cmd :
...
KeyProcessor p1 = new KeyProcessor( ... );
...
KeyProcessor p = new KeyProcessor( ... );
...
p1.addKey( Canvas.KEY_NUM9, cmd);
...
p.addAltKey( Canvas.KEY_POUND, p1);
...
Cycle chaining of KeyProcessors (direct or indirect) is detected via
IllegalStateException thrown from method
KeyProcessor.process(int), when cycle is actually reached.
Note Game action - command association can be looked up
based on key code only if canvas property was set to not
null value (via method
KeyProcessor.setCanvas(Canvas) or during instantiation of
KeyProcessor via KeyProcessor.KeyProcessor(Canvas) or
KeyProcessor.KeyProcessor(Canvas, int[], Object[]) or
KeyProcessor.KeyProcessor(Canvas, int[], Object[], int[], mome.keyb.KeyProcessor[])).
This limitation exists because
Canvas.getGameAction(int) method is not
static.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||