Flash Components      Flash Menu      Flash Gallery      Flash Slideshow      FLV Player      Flash Form      MP3 Player      PhotoFlow      Flash CMS      3D Wall      Flash Scroller

Flash / AS

Silverlight

WPF

ASP.net / PHP

Photoshop

Forums

Blog

About

 


FlashComponents
  Galleries
  Slideshows
  Menus
  Design & Effects
  Audio & Video
  User Interface
  Templates

 

 

Multiple Key Detection - Page 6
       code by Michael Avila, written by Kirupa  |  3 April 2006

In the previous page, I briefly framed the problem associated with getting our checkCombination method to work. Let's continue our step-by-step trace of how it works in this page.

First, let's go through the nested for loop:

for (var j:Number = 0; j<key_combinations.length; j++) {
for (var i:Number = 0; i<keys_pressed.length; i++) {
if (keys_pressed[i] == key_combinations[j][i+1]) {
if (i == key_combinations[j].length-2) {
invokeOnKeyCombination(key_combinations[j][0]);
return;
}
} else {
break;
}
}
}

Initially, j is initialized to zero. In the second loop, i is initialized to 0 also. We are now at the if statement:

if (keys_pressed[0] == key_combinations[0][1])

I substituted a 0 for both the i and j variables in the if statement. keys_pressed[0] maps to the number 17 from our keys_pressed array. If you recall, The key_combinations array is a nested array. By calling key_combinations[0][1], I am calling the first array's second item - which is 17. Success!

Because the previous if statement equated out to true, we go to the second if statement (with i and j values substituted in):

if (0 == key_combinations[0].length - 2)

The length of our key_combinations[0] array ([redo, 17, 89]), is three. So, 3-2 is 1, and 0 does not equal 1. This conditional results in false. Let's go back to our second for loop and try again!

Trial 0.1
So, we are back at the second for loop. The value for j remains the same at 0, because the first for loop is what controls the value of the j variable. But the value of i will increment (i++). It is now 1. Now, our first if statement is:

if (keys_pressed[1] == key_combinations[0][2])

The maps out to if (90 == 89). Nope - that does not work! We jump down the break statement and exit out of this loop. We are now back at the first for loop. Let's try again!

Trial 1.0
So, we are back at (almost) where we started from - the first for loop. This time, the value of j is set to 1 instead instead of 0. We proceed to the second for loop, and we start back with i being equal to 1. Now, let's take a look at the first if statement again:

if (keys_pressed[0] == key_combinations[1][1])

Notice that the value of j is 1, so we will be looking at the second item in our key_combinations array. More specifically, we will be looking at key_combinations' second item's second item:

key_combinations' second item:

[undo, 17, 90]

key_combinations' second item's second item:

17

Similar to before, our if statement checks out. keys_pressed[0] is 17 and so is the value returned by our key_combinations[1][1] array. We then go to the second if statement:

if (0 == key_combinations[1].length - 2)

Like a recurring bad dream, though, you will unfortunately have the equality 0 == 1, which is false. Even though our j value is incremented by one, it still refers to an item of length 3.

Phew! We are still not done yet. Let's cover some more of our checkCombinations code on the next page and wrap this tutorial up!

 

1 | 2 | 3 | 4 | 5 | 6 | 7


kirupa.com's fast and reliable hosting provided by Media Temple. flash components
The Text Animation Component for Flash CS3
Check out the great, high-quality flash extensions. Buy or sell stock flash, video, audio and fonts for as little as 50 cents at FlashDen.
Check out our high quality vector-based design packs! Flash Effect Components

Flash Templates
CSS Templates
Dreamweaver Templates

flash menus, buttons and components
Digicrafts Components The best flash components ever!
Entheos Flash Website Templates Buy and sell FLAs at Ultrashock!
Upload, publish, deliver. Secure hosting for your professional or academic video, presentations & more. Screencast.com Purchase & Download Flash Components
flash components Learn how to advertise on kirupa.com