The USA Hockey Skills CD-ROM is an application designed for Coaches, Players
and Parents involved in Youth Hockey. It functions as both a learning tool
for and an encyclopedia of hockey fundamentals for all ages. The program consists
of approximately 400 skills broken into different categories. The majority
of skills are presented in video form along with a text description. Skills
may also be a static image or full text article. Each skill has an associated
multiple-choice question that appears along with the video.
Users are able to search for content by keyword and/or category (skating,
passing, etc.), age group (under 8, under 10, etc.), or number of players
involved.
Each video skill listed features an “add to playlist” button that enables
the user to create a custom playlist.
The disc also features a
“Glossary” of hockey terms.
This
is the home screen for the DVD. The menu in the upper-right links to an index,
the extras (two games and a glossary), an "about" section, and a help section.
The main menu on the left is a modified "accordian" style menu containing the
categorized skills, the user's saved playlists, recently viewed skills, and
the USA Hockey Tutorials, which is a pre-selected set of skills for each age
group. The background image changes each time the home screen loads.
Each
section and sub-section of the main menu animates open and closed. The contents
of the menu are read in dynamically from two XML files. The index file shows
the structure of the menu subsections for the skills the hockey tutorials,
with each skill represented by an id. The ids are then cross-referenced with
a data file that contains all of the detailed information for every skill,
including a skill type, title, age group, and number of players required
to practice the skill. In addition, each skill contains an associated media
file (flv, swf, or jpeg) if applicable, a text description, and a multiple-choice
quiz. The index file also contains a list of keywords and associated ids,
which is used for the search feature.
When the user selects a skill, it loads in the content viewer and the skill
is highlighted in the menu. All of the skills in a sub-category play sequentially,
and as each skill loads in the viewer, the menu highlights the appropriate
skill. Skills are automatically added to the recently viewed section of the
menu, and the user has the option of adding any skill to his custom playlist.
Items
in the menu can be filtered by age. Updates made to the filter are reflected
in the menu immediately.
The
user may create and save any number of video playlists. When an item is added
to a playlist, then it may be removed or repositioned within the queue. Skills
play sequentially in a playlist. The user may also jump directly to a category
or subcategory in the browse skills section of the menu from within a playlist
by clicking the category or subcategory associated with a particular skill.
Playlist information is saved in a shared object on the user's hard drive.
When
the user chooses to save or load a playlist, he is presented with a modal window
containing all of his playlists. If he is saving or updating a playlist, he
may give it a new name or overwrite an existing one. The user may also choose
to delete an existing playlist at any time. Modal windows are managed by a
class that I created to follow the Singleton design pattern, so windows created
by any number of callers are funneled through a single manager, which handles
the display of all modal windows in queue. Modal windows may be generic alerts
and confirms, or one of a few special windows like the "ModalPlaylist" seen
here.
Searches
may be simple keyword searches, or more complex searches, such as the one shown
here. In an advanced search, the user may or may not choose to type keywords,
the results of which may be further filtered. If he chooses not to enter any
keywords, the search will return all skills that match the selected ages, types,
and number of players. Keyword searches are executed against a list of keywords
defined in the index XML file. Advanced searches are filtered against the detailed
data XML that contains all of the information about the age, type, and players
associated with each skill. The index and data XML files are approximately
1 and 2 MB, respectively. I initally tried to use an XPath implementation,
but keyword searches took up to 2 seconds on my machine. I then parsed the
XML data into native AS objects and arrays, and I wrote prototype array functions
that reduced the longest search time for any keyword to 13 milliseconds on
my machine.
When
the user selects a skill, it loads into the content viewer along with a text
description of the skill and a multiple choice quiz question.
Skill
descriptions appear in a textfield below the video. All skill descriptions
are printable, and the printed descriptions may flow over multiple pages.
The
user has one chance to answer a quiz question. Subsequent views of the skill
will indicate that the user has already answered the question. A correct answer
results in a display of "CORRECT!" and an incorrect answer reveals the correct
answer. A running tally of the correct answers and the number of attempts updates
when the user makes his selection.
Videos
have three viewing modes: normal, fullscreen, and fullscreen with no controls.
When
skill titles are too long to fit in the title textfield, title names are trimmed
to the appropriate size and ellipses are appended. The user may choose to loop
a skill video. If the skill does not loop, the player automatically loads the
next video in the queue. The user may also skip to the next video in the queue
by clicking the next button. Clicking the back button will cause the video
to rewind, or it will load the previous
video in the queue if the current time of the video is less than one second.
A complete index of video skills may be loaded by clicking "VIEW INDEX" in the upper-right menu. The contents of the index are created dynamically, and are linked to the main menu. The user may open the main menu to a particular category or subcategory by selecting an item in the index.
The glossary and help sections are scrolling blocks of text with anchored links. Both the glossary and the help are printable and print over multiple pages.