Authorware's List variable type makes it easy
to use the relationship between icons in your
piece to do your programming for you. For
instance, a common task might be to mark each
page complete in a course, marking each section
complete when all the pages have been finished.
If you use a multidimensional list for this,
it becomes very easy to let Authorware do the
thinking for you. Anything that saves me from
thinking is definitely a plus in my book!
Imagine for a minute that you have a course that
has an overall controlling Framework icon setting
background and navigation. Let's call it "All
Sections." Attached to the "All Sections" Framework
are maps with each section. So the first page
on this Framework would be Section 1, the second
Section 2, and so forth. Within each Section map
is a Framework, and each page on that Framework
is a page of content.
I got hung up when I first tried to work with
multidimensional Lists by trying to think of the
whole thing at once. I now find it easier to think
of it one piece at a time. Let's call our tracking
List "Completed." Overall, Completed is a multidimensional
list with an element for each section. Each of
those elements is itself a list with 1's and 0's
representing each page, depending on if the pages
have been finished or not.
So, in my head, I really only think about the
individual Section single-dimensional lists,
which just happen to be all stored in the Completed
list. Completion[1] is the linear list that contains
the completion data for Section 1, Completion[2]
contains the data for Section 2, and so on. Then
it is easier to think of Completion[1][1] as containing
the data for Section 1, Page 1.
I like to use a Conditional Response (the exact
condition varies based on the version of Authorware
you're using) that triggers once you reach the
bottom of each Map that is attached to a section
Framework. This Conditional can be used for things
like initializing variables, automatically advancing
to the next page, and tracking sections complete.
Within this response, you can use something like
this to use the course structure itself to track
completion:
Section := CurrentPageNum@"All
Sections"
Page := CurrentPageNum@SectionFrameworkID
Completion[Section][Page] := 1
If Sum(Completion[Section]) = PageCount@SectionFrameworkID
then
Checked@"Section 1 Menu Button" :=
True
end if