Home (Spotlight) | TOC
| Products & Ordering | Technical
Info | Contact Zeus
Errata in
Director 6 Documentation
Copyright © 1996-1997.
Zeus Productions. All Rights Reserved.
Errata in the Director 6Learning Lingo manual
- Page 10 reads:
- The shape appears as cast member 1 in the Cast window and becomes
sprite 1 in frames 1 through 28". - The number of frames spanned
depends on default sprite span set by the Preferences>Sprite>Span
Duration option.
- Page 11:
- Screen shot of script is missing "
on mouseUp...end
"
- Page 11 should read:
- "To test your script:
- <snip>
- 2. Click the mouse on the sprite (not "Stage")
several times"
- Page 11 states:
- "...if the computer has working, the computer should beep
each time you click". The system beep will work without external
speakers on the Macintosh, through the computer's internal speaker. On
Windows systems without a sound card, it may also work via the internal
speaker. (not confirmed).
- Page 13
- Setting the forecolor of sprite may only work properly in 8-bit mode
(256 colors).
- Page 13 should read:
- "...responds to the user releasing (not "clicking")
the mouse button (a mouseUp (not "mouseDown") event
in Lingo) and sends the message change."
- Page 13 should read:
- "Each time you release (not "press")
the mouse button, the sprite changes color. (Sometimes the sprite
(not "circle", it is actually a rounded rectangle) can
change to the same color as the Stage, in which case it seems to disappear
until the color changes again.)"
- It may also remain the same color if the random number used for the
color happens to be the same as the previous color.
- Page 13:
- "In fact, when the user clicks the sprite, the sprite and
movie script both run."
- This is incorrect. Because
mouseUp
handlers are used
in both the sprite script and movie script, the mouseUp
event
is intercepted and consumed by the sprite script. You could either use "pass
"
to pass it onto the movie script, or use a mouseDown
handler
in the sprite script, and a mouseUp
handler in the movie script,
(or vice-versa) in which case the events would be processed separately by
the two scripts.
- The statements on page 13 would be correct if a
mouseDown
handler were used in the movie script instead of the mouseUp
script shown.
- Page 13:
- "The movie script runs when the user clicks the button."
If they are in fact using a mouseUp
handler in the movie script,
this should read:
"The movie script runs when the user releases the mouse button over
the Stage, but not over the sprite."
- The sprite scripts runs when the user releases the button over
the sprite, but only if the mouseDown occured over the sprite.
- Page 14 and 15
- The Message/Events table is missing the "
alertHook
",
"moveWindow
" and "startUp
"
messages. The "getBehaviorDescription
" and "getProperyDescriptionList
"
messages are each one word (they are shown with a continuation character,
which is technically correct but hard to read). The table also does not
include the primary event handlers (timeoutScript, mouseUpScript, mouseDownScript,
keyDownScript and keyUpScript).
- Page 17 states:
- "The cast member number of individual score scripts also
appear in the Score over the sprites and frames that the script is attached
to."
This is only true if the Score display mode is set to "Behavior"
(formerly "Script").
- Page 17 states:
- "Whenveer the cast member is assigned to a sprite,
the cast member's script is available"
- This is only true if there is not an overriding sprite script.
- Page 20 should read:
- "The mouseDown and mouseUp messages are first available
to the mouseDownScript (not "on mouseDown") and
mouseUpScript (not "on mouseUp") primary event
handlers..."
- Page 20:
- mouseUp events are only passed to sprite scipts and cast member scripts
if the mouse was first depressed over the sprite, and then released over
the sprite. If the mouseDown occurs over the Stage or another sprite, the
mouseUp event is not sent to the sprite over which the mouse is released.
See mouseUpOutside.
- Page 20:
If the emulateMultiButtonMouse
property is FALSE, holding down
the Control key on the Macintosh while clicking the mouse button generates
standard mouseUp and mouseDown events.
- Page 21 should read:
- "...is available to the timeOutScript primary event
handler".
- Page 21:
- The "on moveWindow" message is omitted under the "Using
movie windows" heading (which should read 'Using Movies-in-a-Window"
anyway)
- Page 22:
- "Strategies for placing handlers," omits mention of Parent
Scripts and Primary Event Handlers.
- Primary event handlers are also convenient for changing the handlers
dynamically, which is harder to do with, say, movie scripts.
- Page 23:
- "Tips for placing handlers," omits mention of externally
linked casts which are ideal for holding scripts used in mutiple DIR movies.
- Page 24:
- Table of Lingo Elements has an error:
"Attributes of a object. For example the depth of member
(not colorDepth) is a property of a bitmap."
- Page25 states:
- "Lingo is not case sensitive."
- Although this is true in most cases, it is not universally true in
Lingo. (provide details)
- Page 29:
- The example of using "if..then...else" to check
the
clickOn
within a mouseDown handler is technically accurate, but extremely
poor programming technique. It is much better accomplished by using mouseDown
handlers attached to each clickable sprite, and using a catch-all mouseDown
handler in the frame script if desired. The frame script will only be
reached if one of the desired sprites is not clicked on.
- Page 31 should read:
- "The on rolloverTest handler first assigns..."
- Page 32 has a typo:
- The example shows "repeat with n = 10 down to 1" in one
place, and "repeat with n = 10 down to 2" in another. The graphic/chart
also omits the
end repeat
command, and the puppetSprite
1, TRUE
iteration of the loop.
- Page 33:
- The example else clause:
else set the name = EMPTY
end if
- should be split on two lines, such as:
else
set the name = EMPTY
end if
- Failure to do so will cause the "end if" to end the current
handler.
- Page 34 should read:
- "Unless the handler uses the term
global
or
property
to declare that a variable is global, or a
property, the variable is automatically a local variable."
- Page 34 reads:
- "Parameters in the calling statement must be in the same
order that they follow in the first line of the handler and they much be
surrounded by parentheses"
- While this is good programming practice, parentheses
are only strictly required if the caller wants to receive a return value
from the called handler.
- Page 39 reads:
- "Use the set command to test and set conditions."
- The "set" command is not exactly used to test conditions.
Use "put" to display the current state of a property, and "if"
to test a condition. You can use "set" to record a condition,
and then perform a test later, such as:
set x = the mouseH
if x = 5 then alert "the mouseH was 5!"
- Page 39 states:
- "For example, the
timeoutLapsed
property,
which indicates the length of time since the last timeout, can only be tested."
- The
timeoutLapsed
property can also be set, such as:
set the timeoutLapsed = 0
- Page 40:
- Although the "and" and "or" logical operators
test whether two logical expressions are true or false, the "not"
operator operates on a single expression.
- The table on Logical Operators is mistaken. "And" determines
whether both expressions are TRUE, but not whether both are FALSE. "Or"
determines whether either (not both) expressions are TRUE.
- Page 45 states:
- "If the current frame has a marker, the statement
go
to marker(0)
loops in the current frame. "
This is true, If the current frame does not have a marker, however, this
command sends the playback head to the previous marker. If there is no
previous marker, it sends the playback head to the next marker.
If there are no markers, it sends the playback head to frame 1.
- Page 45 states that:
"go to the marker + 1"
sends the playback head
to the next marker. This is completely wrong and generates a syntax error.
Use "go marker (1)
" instead.
- Page 54 states:
- "You can test a handler by writing it in a Movie Script
or Score Script window and then calling it from the Message window."
- Handlers in Score Scripts are not generally testable
from the Message window. Doing so will generate a "Handler not defined"
error unless you specify the target script, such as:
myCustomHandler (script x)
where x is the Score script's
member number.
- Page 56 states:
- "The Step Script button runs the current line of Lingo,
runs any nexted handlers that the line calls, and then stops at the next
line in the handler."
- The Step Script button actually only executes one handler, including
nested handlers, each time you hit it. If a line includes one or more nested
handlers, you need to hit the Step Script button multiple times before it
will step to the next line of Lingo in the current handler.
- Page 57:
- The Comment and Uncomment buttons affect any hilighted lines of Lingo,
not just the current line.
- Page 60 has a number of mistatements under "When to use puppets":
- Not all sprite properties require that the sprite be puppeted for
the changes to last beyond the current sprite. For example, the
visible
of sprite
property affects the channel permanently, whether the sprite
is puppeted or not.
The puppetTempo and and puppetPalette settings are cancelled whenever the
playback heads loops in the current frame, or moves backward in the Score,
not only when entering a frame with a new palette or tempo setting.
- Page 61 under, "How to make a sprite channel a puppet" should
read:
- Put a sprite channel under Lingo's control, or return control
to the Score, by using the puppetSprite command, followed by the channel
number, a comma, and the value TRUE or FALSE respectively.
- Page 64:
- The discussion of the puppetPalette's duration conflicts with the
discussion on page 60. Furthermore, the puppetPalette setting is cancelled
whenever the playback heads loops in the current frame, or moves backward
in the Score, not only when issuing a "puppetPalette 0" command.
- Page 71:
- The example handler sets the horizontal (not vertical) location
of the sprite to 250, and the vertical (not horizontal) location
of the sprite to 300.
- Page 71:
- The mouseDown example is very wrong. The example is missing the keyword
"point" and a closing parentheses:
on mouseDown
set the loc of sprite 9 to point (the mouseH, the mouseV)
updateStage
end
Furthermore, the example above sets the sprite to the current position
of the cursor, not of the last mouse click. For the latter, use:
set the loc of sprite 9 to the clickLoc
- Page 72:
- For digital video cast members, the default registration point is
the center of the cast member, not its upper left corner.
- Page 74:
- The table's description of the scrollTop or member property seems
wrong to me, but perhaps I just misunderstand their intent.
- Page 77 should read:
- "The
on checkName
handler checks whether the answer
contains (not "is") the string "Einstein".
If "Einstein" is contained in the content of the cast member
Answer, the playback head goes to the next marker. If "Einstein"
is not contained in the content of Answer, the playback head goes
to the marker Try Again."
- Page 79:
- The example currently checks "the lastKey" (which is the
time since a key was last pressed) instead of the variable named "lastKey"
set lastKey = the key
case (lastKey) of
- Page 81:
- The example is completely wrong. It should read:
on exitFrame
if rollOver(25) the go next
end
- Page 81:
- The rightMouseDown message also applies to the Mac (not just Windows)
if the "emulateMultiButtonMouse" property is set.
- Page 87 should read:
- Test and set a specific channel's sound level by using the volume
of sound property (not "the soundLevel"). You can also use
the volume of sprite command to test and set the volume of digital video
sprites.
- Page 87:
- The example is completely wrong. It should read:
on playThunder whichChannel
set oldChanVolume = the volume of sound whichChannel
set the volume of sound whichChannel = 255
set oldSoundLevel = the soundLevel
set the soundLevel = 7
puppetSound "Thunder"
updateStage
repeat while soundBusy(1)
nothing
end repeat
set the volume of sound whichChannel = oldChanVolume
set the soundLevel = oldSoundLevel
end
- Page 89 reads:
- "Lingo can keep animation, sounds, and digital video synchronized
by starting, stopping, or pausing sound and digital video or by chaning
the movie tempo as needed."
The above statement is highly misleading. Lingo does not provide automatic
synchronization. You need to manually attempt to synrhronize media via
Lingo. The movie tempo is not a reliable method for accomplishing this.
You need to use a timer, and manually advance the playback head via Lingo
to maintain appropriate synch, as described on the subsequent pages.
- Page 90:
In the first example "startTimer" should be one word.
- Page 90 reads:
- "The first on exitFame handler should appear in the frame preceding
the frame that the digital video starts in."
The script shown in the book (which checks the duration of member property)
will fail if the digital video sprite is not present in that frame of the
Score. The digital video sprite must appear in the score when the script
is executed, although the digital video itself may be paused at that time.
- Page 91 reads:
- "Calculate the number of frames the digital video needs by multiplying
the length, in seconds, by the tempo, which is measured in frames per second."
As Director's frame rate is not guaranteed, that method is completely unreliable.
Instead of tweening out digital video sprites in the Score, use Lingo to
wait for a particular point or to synchronize events.
...much more to come...
Home (Spotlight) | Table
of Contents | Links | Contact
Info
Place an Order | Products
for Sale | Licensing | Downloads
TechNotes | FAQs
| E-Mail Zeus | GuestBook
| Glossary
Copyright © 1996-1997. Zeus
Productions. All Rights Reserved.
(This page last revised September 27, 1997)