Main Page About Ldoc+ Error Lists Main Index Index Groups



'Learning Lingo' 6.0 Fixes, part 2

PageSize = 50K

150 corrections & additions for the
"Learning Lingo" handbook
of Macromedia Director 6.0

See my Lingo Groups with sorted Lingo Elements.

See my Ldoc+ Index for Lingo Tips 501 + 601.

See also my Lingo Dictionary 601 Fixes.



Macromedia Director and Lingo are registered trademarks of Macromedia, Inc.
"Learning Lingo 6.0 Fixes 2"

150 corrections + additions
to errors / mistakes in the
'Learning Lingo' handbook
of Macromedia Director 6.0

Denis Wieger, 971224
A3W Multimedia, Germany
http://www.a3w.de/Lingo/

--

See my revised D5/601 "Lingo Doc+" at:
http://www.a3w.de/Lingo/
http://www.a3w.de/Lingo/Ldoc_Groups.html

See part 1 of '6.0 Learning Lingo Fixes' by mikeS:
http://www.dreamlight.com/insights/07/llmfixes.htm

See Macromedia Director 6.0 Corrections (March 97):
http://www.macromedia.com/support/director/docstuff/errata

Search Macromedia Director Tech Notes:
http://www.macromedia.com/support/search/

Search the DIRECT-L mailing list archives:
http://www.mcli.dist.maricopa.edu/director/digest/

See Gretchen's 501 and 601 Director Quirks:
http://www.updatestage.com/buglist.html

--

Well, let's jump back in...

--

Page 2, column 1, bottom, table:

"Use cue points in SoundEdit 16 and QuickTime files..."
= Misses SWA sounds:
"Use cue points in AIFF, QuickTime, and Shockwave Audio (SWA) files...".

...the '6.0 ReadMe':
  "Director will read cue points in Quicktime, AIFF, and SWA files
   on both Macintosh and Windows."

--

Page 2, column 2, bottom, table:

"Instances of Xtras..."
= Non-existing in the 6.0 'Learning Lingo' handbook; delete it!

--

Page 3, column 1, middle:

"...cue points in a SoundEdit or QuickTime file..."
= Misses SWA sounds:
"...cue points in an AIFF, QuickTime, or Shockwave Audio (SWA) file..."

--

Page 4, column 1, top:

"Using outdated Lingo"
= Misses important info:
  castNum of sprite = member/memberNum of sprite (Dictionary: "castNum")
              field = member                    (Dictionary: "field")
        pausedState = none                     (Dictionary: "pause")
put...into variable = set variable to...      (Dictionary: "put...into")
          spriteBox = the rect of sprite     (Dictionary: "spriteBox")
        sound close = sound stop / puppetSound (Dict.: "sound close")
          
"TIP: The 'member of sprite' property has the format '(member 57 of
 castLib 2)', or '(member 0 of castLib 0)' for an empty sprite channel.
 The outdated 'castNum of sprite' property returned the overall
 'number of member', or 0 for an empty sprite channel."

"TIP: The 'mouseMember' function returns the member of the HIGHEST
 sprite under the cursor, in the format '(member 57 of castLib 2)', or
 'Void' if there is NO sprite under the cursor. The outdated function
 'the mouseCast' returned the overall 'number of member', or '-1' for
 the background (in Director 5.00, 'the mouseCast' temporarily returned
 FALSE (0) with no sprite under it)."

--

Page 5, column 1, middle:

"Director Help offers the same details...Lingo Dictionary."
= Misses a distinct difference:
"Director Help offers MORE details plus late changes..Lingo Dictionary."

--

Page 12, column 1, middle:

"Writing a script for a frame"
= This section misses important info:
"TIP: Avoid (frame) scripts on the first and on the very last frame
 in a movie; use the second and the forelast frame instead."

--

Page 13, column 1, middle, example::

"on mouseUp"
= This handler is meant to be:
"on mouseDOWN"

...as is explained in the next column:
"...you wrote a script...mouseDown event..."

--

Page 13, column 1, bottom:

"The continuation symbol...the statement continues on the next line."
= Misses important info:

"TIP: One complete Lingo statement can have NOT more than 256
 characters." (Lingo Dictionary, page 9, 'continuation symbol')

--

Page 13, column 2, bottom:

"...when the user clicks the button ... releases the button."
= Should read:
"...when the user clicks the MOUSE ... releases the MOUSE OVER
    THE SPRITE."

...there's no 'button' to be clicked on the stage.

--

Page 14, column 1, bottom, table:

"activateWindow - A window became active"
= Misses important info:
"activateWindow - A window became active (except the Stage)".

"TIP: All 7 window events are NOT sent to the main Stage window (except
 'closeWindow' when using 'close the Stage', and 'openWindow' when using
 'open the Stage')."

"TIP: Movies in a window cannot play in a browser."

--

Page 15, column 1, top:

"rightMouseDown/rightMouseUp...Lingo treats clicking...the Control key"
= Should read:
"rightMouseDown/rightMouseUp...Lingo treats PRESSING...the Control key"

...or would you move your mouse over the keybord and then click it? ;-)

--

Page 15, column 1, middle, table:

"startMovie - The first frame of the movie started playing."
= Misses jumping to a specified frame of a movie:
"startMovie - The first OR THE TARGETED frame of the movie
 started playing."

--

Page 15, column 2, top, p1:

"...you wrote the handler: on mouseUp..."
= Should read:
"...you wrote the GLOBAL handler: on mouseDOWN..."

...the handler was intended to react on a mouseDown event, see page 13.

--

Page 15, column 2, middle:

"Any handler...runs."
= Misses important info:
"Any handler...runs AND stops the message, if not using the 'pass'
 command, which also exits the current handler."

--

Page 16, column 1, middle, bullet 2:

"beginSprite...if any behaviors are attached to the sprite."
= Should read:
"beginSprite...if any behaviors are attached to A sprite or to this
 (first) FRAME of the movie."

"TIP: Avoid (frame) scripts on the first and on the very last frame in
 a movie; use the second and the forelast frame instead."

--

Page 17, column 1, middle, bullet:

"Drag a script from a cast to a sprite or frame."
= Should read:
"Drag a script from a CASTLIB to a sprite or frame."

...I'd suggest using the valid Lingo term 'castLib' instead of 'cast'
 throughout the docs, because 'cast' was the term used for 'member' in
 earlier versions of Director, and 'castLib' is much clearer anyway...
 ;-)

--

Page 18, column 1, top:

"...cast members that appearS..."
= Small typo; should read:
"...castMembers that appear..."

...I'd suggest using the term 'castMember' instead of 'cast member'
   throughout the docs...

--

Page 19, column 1, bottom:

"Lingo in primary event handlers"
= Misses important info:

"TIP: Director's 5 primary event handlers can only contain ONE single
 handler name or Lingo command in their string expression."

"TIP: Setting up Director's 5 primary event handlers from a script
 residing in an external castLib doesn't always work properly.
 Workaround: From that script, call a handler that resides in a movie
 script inside the first internal castLib, and have that handler then
 set up the primary event script."

--

Page 19, column 2, bottom, example:

'set the mouseDownScript to "mouseCommand" '
= Should read:
'set the mouseDownScript to "mouseCommand()" '

...I'd suggest using parenthesis after handler names throughout the
   docs, because that makes them easier to read and to understand.
   In the Message window, handler names definitely need trailing
   parenthesis to be identified and executed; without parenthesis
   they will be mistaken as a (global) variable.

--

Page 20, column 1, middle:

"Lingo has four messages related to mouse clicks..."
= Should read:
"Lingo has FIVE messages related to mouse clicks... mouseUpOutside
 (plus the doubleClick, the lastClick, and the stillDown properties)"

"TIP: All mouse events pass a 'me' parameter to behaviors."

...from the '6.0 ReadMe' (see more mouse info there!):
"TIP: 'mouseEnter', 'mouseLeave', 'mouseWithin', and 'mouseUpOutside'
 messages are NOT passed to castMember, frame or movie scripts."

--

Page 20, column 1, middle:

"The mouseDown...first available to the on mouseDown or on mouseUp
 primary event handlers..."
= Should read:
"The mouseDown...first available to the mouseDownSCRIPT or mouseUpSCRIPT
 primary event handlers..."

...'on mouseDown' etc. handlers in frame scripts and movie scripts
   receive the mouse events last.

--

Page 20, column 1, middle:

"...the handler in the movie script that has the lowest cast member
 number is executed."
= Should read:
"...the handler in the movie script that has the lowest cast member
 number IN THE SAME CASTLIB AS THE MOUSE SCRIPT is executed. If that
 castLib doesn't contain a movie script with such a handler, Lingo
 looks through all castLibs."

...this strange behavior applies as well to some other paragraphs
 containing the above sentence, possibly also to page 22, column 1, top.

--

Page 20, column 2, middle:

"The keyDown...first available to the keyDown or keyUp primary event
 handlers..."
= Should read:
"The keyDown...first available to the keyDownSCRIPT or keyUpSCRIPT
 primary event handlers..."

...'on keyDown' etc. handlers in frame scripts and movie scripts
   receive the key events last.

"TIP: All key events pass a 'me' parameter to behaviors."

--

Page 21, column 1, middle:

"The 'beginSprite' and 'endSprite' messages are available to sprites
 only."
= Should read:
"The 'beginSprite' and 'endSprite' messages are available to sprite,
 CASTMEMBER AND FRAME SCRIPTS, and include the 'me' parameter."
...see the Dictionary "on beginSprite" and "on endSprite".

"TIP: The 'updateStage', 'go' and 'play' commands are disabled when
 called from any of the following handlers: 'on prepareMovie', 'on
 prepareFrame', 'on beginSprite', 'on endSprite', 'on stepFrame'."
...I guess this applies to some kind of puppetting as well.

...from Macromedia's Director Corrections:
"Director ignores a 'puppetPalette' command in an 'on prepareFrame'
 handler" (and I guess in an 'on prepareMovie' handler as well).

--

Page 21, column 2, top:

"The timeOut...is available to the timeOut primary event handler..."
= Should read:
"The timeOut...is available to the timeoutSCRIPT primary event
 handler..."

...'on timeOut' etc. handlers in frame scripts and movie scripts
   receive the timeout event last.

--

Page 21, column 2, middle, table:

"Using movie windows"
= Misses one event:
"moveWindow"

"TIP: Movies in a window cannot play in a browser."

"TIP: All 7 window events are NOT sent to the main Stage window (except
 'closeWindow' when using 'close the Stage', and 'openWindow' when using
 'open the Stage')."

--

Page 24, column 1, bottom, example:

'put x into member "The Answer" '
= Misses important info:
"TIP: In Director 6.0, the Lingo term 'field' for field castMembers
 is replaced by 'member', except you CANNOT use 'set x = member y' to
 get the field's text, instead use: 'set x = the text of member y'."

--

Page 25, column 1, middle:

"Parenthesis"
= Misses important info:
"TIP: When using 'the pathName' or 'the moviePath' together with a name
 of a movie file as a parameter for a Lingo command, enclose the
 combined expression in parenthesis, example:
 'open window (the pathName & "MyMovie")'.
 See the Dictionary's entry for '() parenthesis'."

--

Page 26, column 2, middle:

"Create a Score script...the first available location in the current
 Cast window."
= Should read:
"Create a Score script...the first available location in the ACTIVE
 castLib; or the first internal castLib if none is active."

--

Page 30, column 1, top, p1:

"...clicking sprites...no script attached...same as clicking the Stage."
= Should read:
"...clicking sprites...no script attached...same as clicking the Stage,
 and 'the clickOn' function returns 0."

--

Page 30, column 1, middle, p3:

"...Lingo reaches the end...and nothing happens."
= Should read:
"...Lingo reaches the end...and presents the alert message."

...the script on page 29, column 2, bottom, evaluates any 'clickOn'
   value other than 1, 2, or 3 as 'else alert...'.

--

Page 31, column 1, middle, p2:

"...the value of rollOver..."
= Should read:
"...the value of rollOver()..."

...the following sentence:
"...value of the 'rollOver' changing..."
= Should read:
"...value of 'the rollOver' changing..."

And remember Macromedia's Director Corrections for this paragraph:
"The 'on rollOverTEST' handler..."!

--

Page 31, column 1, middle, example:

"case...500000: preload member whichMember"
= Should read:
"case...500*1024: preloadMEMBER whichMember"

And remember Macromedia's Director Corrections for this example:
"...should be deleted"! ;-)

--

Page 31, column 1, bottom, example:

'repeat...beep...'
= Should read:
'repeat...put "Beep!"...'

...on  Macintosh, sound beeps in a repeat loop cue up and can continue
   for a LONG time... :-( Also applies to the next example!

--

Page 31, column 2, top, p1:

"Lingo continues to loop...until one of the instructions sends Lingo
 outside the loop."
= Should read:
"Lingo continues to loop...until one of the instructions tells Lingo TO
 EXIT OR STOP the loop."

...calling a handler during a repeat loop will send Lingo outside the
  loop, but this will not stop the loop, except when an 'abort' occures.

--

Page 32, column 1, middle, box:

"repeat with n = 10 down to 2..."
= Should read:
"repeat with n = 10 down to 1..."
...because that accords to the example above. But why use
"...down to..." anyway?
= Better:
"repeat with n = 1 to 10..."

And remember Macromedia's Director Corrections for this example:
...worth nothing... :-(

--

Page 32, column 2, middle, p4:

"The value assigned to the variable can be..."
= Misses other types of values:
"...or an object (child object, list, point, rect, pointer to
 something)..."

--

Page 33, column 2, top, example:

"...end if"
= Wrong syntax; delete it!

--

Page 34, column 1, bottom:

"The following statements makeS theName a global variable..."
= Should read:
"The following statements make  gNAME a global variable..."

--

Page 35, column 1, bottom:

"...'put findColor()'."
= Misses important info:
"You can also set a variable to the return value of such a function:
 'set x = findColor()', or test 'the result' after calling the handler."

--

Page 36, column 2, middle, example:

' put "Hello" into member "Greeting" '
= Misses important info:
"TIP: In Director 6.0, the Lingo term 'field' for field castMembers
 is replaced by 'member', except you CANNOT use 'set x = member y' to
 get the field's text, instead use: 'set x = the text of member y'."

"if...then soundHandler"
...should include the parenthesis after the handler's name:
"if...then soundHandler()"

--

Page 37, column 2, middle, table:

'member ("newFigure" + 10)  OR  castLib ("Buttons" + 4) '
= Won't work; should read:
'member (the number of member "newFigure" + 10)  OR  castLib (the
 number of castLib "Buttons" + 4) '

--

Page 39, column 1, top, p1:

"Use the 'set' command to test and set conditions. Use operators to
 evaluate and manipulate..."
= Should read:
"Use the 'set' command to set and MANIPULATE conditions. Use operators
 to evaluate and TEST..."

--

Page 39, column 1, bottom, last line:

"...the color that assigned to chip number 85..."
= Small typo; should read:
"...the color that IS assigned to chip number 85..."

"TIP: Setting 'backColor', 'foreColor' or 'stageColor' to a 8-bit
 palette entry only works in 8-bit color display!"

--

Page 39, column 2, top, p1:

"For example, the 'timeoutLapsed' property...can only be tested."
= Should read:
"For example, the 'trackCount(member)' video property...can only be
 tested."

...the 'timeoutLapsed' property itself can be tested AND set, which is
   usefull during long timeout animations.

--

Page 40, column 2, bottom, table:

"and - Determines whether both expressions are true or false."
= Should read:
"and - Determines whether both expressions are TRUE."

"TIP: Logical operators can combine more than two expressions:
 'if (x=1) AND (y=1) AND (z=1) then...' "

--

Page 40, column 2, bottom, table:

"or - Determines whether both expressions are True."
= Should read:
"or - Determines whether at least ONE of the given expressions is TRUE."

"TIP: Logical operators can combine more than two expressions:
 'if (x=1) OR (x=2) OR (x=3) then...' "

--

Page 44, column 2, bottom, table:

"To refer to: The marker before the current scene. - Use: The word
'previous'."
= Should read:
"To refer to: The marker before the current MARKER. - Use: The word
'previous'."
"TIP: If there's a marker in the current frame, then 'go previous'
 goes back one marker, otherwise two markers, if they exist.
 This is the same as using 'go marker(-1)'."

--

Page 45, column 1, bottom, table:

"go to next"
= Should read:
"go next"

"TIP: This is the same as using 'go marker(+1)'."

"TIP: The 'updateStage', 'go' and 'play' commands are disabled when
 called from any of the following handlers: 'on prepareMovie', 'on
 prepareFrame', 'on beginSprite', 'on endSprite', 'on stepFrame'."
...I guess this applies to some kind of puppetting as well.

...from Macromedia's Director Corrections:
"Director ignores a 'puppetPalette' command in an 'on prepareFrame'
 handler" (and I guess in an 'on prepareMovie' handler as well).

--

Page 45, column 1, bottom, table:

"go to previous -... the playback head goes back two markers."
= Should read:
"go to previous -... the playback head goes back two markers, if there
 is no marker in the current frame."

"TIP: If there's a marker in the current frame, then 'go previous'
 goes back one marker, otherwise two markers, if they exist.
 This is the same as using 'go marker(-1)'."

--

Summary up to here: 50 errors.

--

Page 45, column 1, bottom, table:

"go to the marker + 1"
= Won't work; should read:
"go to marker(+1)".
...or otherwise:
"go to marker(0)+1"
...which evaluates to "go to frame (marker(0) + 1)".

--

Page 50, column 1, bottom, bullet:

"...Director's debugging tools -- the message, Debugger window, and
 Watcher windows"
= Should read:
"...Director's debugging tools -- the Message, Debugger, and Watcher
 windows"

--

Page 50, column 2, bottom, bullet:

"Use variable names that indicate the variable's purpose."
= Should read:
"Use variable names AND PREFIXES that indicate the variable's purpose,
 like 'gCurrentNumber' for globals, or 'myCurrentNumber' for
properties."

--

Page 52, column 1, top, p1:

'...relates to the string in the line go to Interact '
= Misses the quotes after the word Interact:
'...relates to the string in the line go to Interact" '

...the alert message concerning this string (page 51, right bottom)
   contains a typo: 'go toInteract"?'.

--

Page 52, column 2, top, bullet:

"...try checking the sprite's properties related to the sprite."
= Make sense? Can "sprite properties" relate to anything else than
 their sprite?  8-)

--

Page 54, column 2, top, p2:

"If the statement is valid, the Message window displays the result..."
= Should read:
"If you use the 'PUT' command, the Message window displays the
 result..."

--

Page 54, column 2, top, p3:

"...type the handler name in the Message window..."
= Won't work; should read:
"...type the handler name followed by PARENTHESIS in the Message
 window..."

--

Page 60, column 2, middle, bullet:

"For tempo and palette channels, puppetting keeps...control until...a
 new palette or tempo setting."
= Not exact; should read:
"For tempo and palette channels, puppetting keeps...control until...a
 new palette or tempo setting, or a 'go' command sends the playhead into
 a part of the score that uses a different palette or tempo."

"TIP: The 'updateStage', 'go' and 'play' commands are disabled when
 called from any of the following handlers: 'on prepareMovie', 'on
 prepareFrame', 'on beginSprite', 'on endSprite', 'on stepFrame'."
...I guess this applies to some kind of puppetting as well.

...from Macromedia's Director Corrections:
"Director ignores a 'puppetPalette' command in an 'on prepareFrame'
 handler" (and I guess in an 'on prepareMovie' handler as well).

--

Page 61, column 1, bottom, bullet:

"If Lingo controls a channel's editability...is editable.)"
= Misses the left parenthesis:
"(If Lingo controls a channel's editability...is editable.)"

--

Page 61, column 2, middle, bullet:

"For example, the statement 'puppetSprite 9, FALSE' turns off Lingo's
 control of sprite 9."
= Won't work; should read:
"For example, the statement 'puppetSprite 9, FALSE...go to the frame'
 turns off Lingo's control of sprite 9."

"TIP: Turning off a sprite's 'puppet' needs a 'go to someFrame' command
 to become visible; issuing 'updateStage' or the advancing of the
 playhead will not reset the sprite's properties to the Score settings."
 This note from the '6.0 ReadMe' file also applies to the following
 sentences...

--

Page 62, column 1, bottom, p7:

"The following sprite properties require the channel to be under Lingo's
 control..."
= Should read:
"To last beyond the life span of the current sprite, the following
 sprite properties require the channel to be under Lingo's control..."

...New auto-puppet concept needs more info... ;-)
   Some is in the '6.0 ReadMe'!
...Also many button, shape, sound, and video sprite properties are
   missing from the list. :-(

"TIP: The two properties 'cursor of sprite' and 'visible of sprite' are
 the ONLY sprite properties that never need a puppet! Setting any kind
 of sprite property (except 'cursor of sprite') needs the stage updated
 to take effect, changing properties of members (including fields) take
 effect immediately"

"TIP: The 'updateStage', 'go' and 'play' commands are disabled when
 called from any of the following handlers: 'on prepareMovie', 'on
 prepareFrame', 'on beginSprite', 'on endSprite', 'on stepFrame'."
...I guess this applies to some kind of puppetting as well.

...from Macromedia's Director Corrections:
"Director ignores a 'puppetPalette' command in an 'on prepareFrame'
 handler" (and I guess in an 'on prepareMovie' handler as well).

--

Page 63, column 1, top, p1:

"After you put a sound channel under Lingo's control, no sounds play in
 that channel...the Score."
= Should read:
"After you put the THE FIRST OR SECOND sound channel under Lingo's
 control, no sounds play in that channel...the Score."

--

Page 64, column 1, top, bullet 1:

"Replace the optional parameter 'time' with a value for the length of
 time you want the transition to start."
= Misses important info:
"The units for the 'time' value are are quarter seconds, i.e. a value of
 4 specifies a transiton of 1 second length. This differs from
 Director's Frame Properties: Transition dialog box which counts
 time units in 0.05 Seconds."

--

Page 64, column 2, middle, example and bullet:

"Replace 'palette-name' with the name of the palette."
= Should read:
"Replace 'WHICHPALETTE' with the name OR NUMBER of Director's built-in
 palette or your custom palette castMember."

--

Page 64, column 2, middle, 2. bullet:

"...'speed' with an integer from 1 to 120..."
= Not quite; as in earlier versions, the 6.0 'Lingo Dictionary' states:
"...with 1 being slowest and 60 being fastest..."

And remember Macromedia's Director Corrections for this paragraph:
"...depending on the specific computer..."!

--

Page 64, column 2, bottom, p7:

"After...issued, Director ignores any subsequent palette changes..."
= Should read:
"After...issued, Director ignores any subsequent palette changes...
 or until a 'go' command occurs."

And remember Macromedia's Director Corrections for this paragraph:
"...until...a new palette is set in the palette channel, or a new movie
 starts"; and:
"Director ignores a 'puppetPalette' command in an 'on prepareFrame'
 handler" (and I guess in an 'on prepareMovie' handler as well); and:
 The first 3 sections on page 65 "...are incorrect and should be
 deleted."

--

Page 70, column 2, middle, p3:

"...'sprite...intersects' tells you whether the bounding rectangle of
 one sprite..."
= Should read:
"...'sprite...intersects' tells you whether the bounding rectangle (with
 'matte' ink: the pixel area) of one sprite..."

--

Page 72, column 1, middle, example:

"on mouseDown...set the constraint of sprite 2 to 1"
= Won't work; should read:
"on mouseDown...set the constraint of sprite 2 to 1 ..updateStage"

...also the 'constrainH()' and 'constrainV()' functions should be
   mentioned here.

--

Page 74, column 1, middle, 1. bullet:

"Text cast members have several advantages."
= Should read:
"Text castMembers have several advantages, but are quite BIG in MEMORY."

--

Page 74, column 1, middle, 2. bullet:

"However, the font specified for a field must be available on the
 playback computer."
= Misses important info:
"TIP: Use Director's FONTMAP.TXT to map fonts between platforms."

--

Page 77, column 2, bottom, table:

"Checking what a user clicks in a field"
= Misses important info:
"mouseItem   - Item"
"mouseMember - Member of sprite under the cursor."

"TIP: The mouse chunk functions return the integer position number of
 the component in the field, or '-1' if none; they never return FALSE
 (0)."

"TIP: The 'mouseMember' function returns the member of the HIGHEST
 sprite under the cursor, in the format '(member 57 of castLib 2)', or
 'Void' if there is NO sprite under the cursor. The outdated function
 'the mouseCast' returned the overall number of the member, or '-1' for
 the background (in Director 5.00, 'the mouseCast' temporarily returned
 FALSE (0) with no sprite under it)."

--

Page 78, column 1, bottom:

"Use 'put...after' and 'put...before to' insert a string..."
= Should read:
"Use 'put...after', 'put...into chunkExpression', and 'put...before' TO
 insert a string..."

--

Page 78, column 2, bottom:

"...you can insert the word 'cedar' in the middle..."
= Should read:
"...you can insert the word 'cedar' WITH AN ADDITIONAL BLANK in the
 middle..."

"TIP: Putting a 'word' into a string adds a single white blank after
 it; putting a 'line' into a string adds a RETURN after it. Remember:
The
 last RETURN in a string creates one additional EMPTY 'line' after it.
 You can put anything at any place in a string: 'put char 1 of line 5 of
 aString1 into char 4 of word 2 of line 3 of item 99 of aString2'."

--

Page 79, column 1, bottom, example:

Besides what Macromedia's Director Corrections say for this paragraph:

"set lastKey = the key"
= Should read:
"set myLastKey = the key"
...the reserved term 'lastKey' is a lingo property: 'the lastKey'!

' "Q": quit '
= Should read:
' "Q": halt '
...the 'halt' command does NOT exit the authoring environment,
   the 'quit' command does!

--

Page 79, column 2, middle, table:

"Equivalent cross-platform keys"
= Misses:
"shiftDown - Shift key pressed"

--

Page 80, column 1, middle, example 1:

' put the charToNum("A") '
= Should read:
' put charToNum("A") '

--

Page 80, column 1, middle, example 2:

' put the charToNum(65) ... -- A '
= Should read:
' put numToChar(65)   ...  -- "A" '

--

Page 81, column 2, middle, table:

"the clickOn - The last active sprite..."
= Should read:
"the clickOn - The CHANNEL NUMBER (0 to 120) of the last CLICKED
 sprite..., 0 if none or the Stage was clicked."

--

Page 81, column 2, middle, table:

"the doubleClick - Whether...were a double-click."
= Should read:
"the doubleClick - Whether...were a double-click, based on the
 computer's double-click setting."

...the listing misses:
  "the lastEvent...the mouseUpOutside...the mouseH, the mouseV...
   the stillDown"

Also: 'the mouseDown' and 'the mouseUp' indicate whether TRUE or FALSE.
The 'mouseUp' defaults to TRUE, unless the mouse is currently pressed.

--

Page 81, column 2, bottom, example:

"if the doubleClick = 1 then openWindow"
= Should read:
"if (the doubleClick) then OpenWindowHandler()"

...the reserved term 'openWindow' is one of Director's
   7 window events (handlers). Also notice the clearer syntax.

--

Page 82, column 1, p2:

"Specifying an 'on timeOut' primary event handler requires..."
= Should read:
"Specifying the 'timeoutSCRIPT' primary event handler requires..."

...because 'on timeOut' etc. handlers in frame scripts or movie scripts
   receive the timeOut event after the primary event handler does.

--

Page 82:

"Checking for timeouts"
= Misses important info:
the lastClick
the lastKey
the lastEvent
the lastRoll
the timeoutKeyDown
the timeoutLapsed
the timeoutMouse
the timeoutPlay

--

Page 84, column 1, top, p1:

"...from the internet..."
= Should read:
"...from the Internet..."

...wasn't 'Internet' the official NAME of the thing?
   Macromedia uses 'internet' throughout the handbook.

--

Page 86, column 2, top, p1:

"SoundEdit and QuickTime files..."
= Misses SWA sounds:
"AIFF, QuickTime, and Shockwave Audio (SWA) files..."

--

Page 86, column 2, middle, p2:

"By treating WAVE and AIFF sounds as audio-only digital video..."
= Should read:
"By CONVERTING WAVE and AIFF sounds TO linked audio-only digital
 QuickTime video files..."

--

Page 87, column 1, bottom:

"...parameter that specifies the transisiton's length..."
= Should read:
"...parameter that specifies the DURATION of the sound fading..."

...repeated in the last sentence on this page.

--

Page 89, column 2, middle, table:

"Pause a movie. - delay"
= Should read:
"Pause a movie. - delay (only works in frame scripts)"

--

Page 89, column 2, middle, table:

"Find out...video's length. - duration of member"
= Should read:
"Find out...video's length. - duration of member, stopTime of sprite"

--

Page 92, column 1, bottom, table:

"Rewind a digital video sprite by 1/60th... - Set...to the movieTime of
 sprite -1"
= Should read:
"Rewind a digital video sprite by 1/60th... - Set...to (the movieTime of
 sprite whichSprite) - 1"

--

Page 93, column 1, top, table:

"Determine the number of tracks in a digital video..."
= Is doubled, delete it!

--

Page 96, column 1, top, p2:

"The 'installMenu' command followed by the number of a field..."
= Should read:
"The 'installMenu' command followed by the NAME, number, or MEMBER
 expression of a field..."

--

Page 96, column 2, top, p2:

"The vertical bar character (|)..."
= Misses info:
"The keys for the vertical bar sign are Option+7 on Macintosh, and ALT+7
 on Windows."

--

Page 97, column 2, middle, bullet 1:

"Don't use the cast member name in the list:"
= Misses info:
"You can use member expressions in the cursor list:
 '[member "myCursor", member "myCursorMask"]'."

--

Page 97, column 2, middle, bullet 1:

"The statement 'cursor [16]' makes the bitmap cast member 16 the
 cursor."
= Should read:
"The statement 'cursor [16]' makes the 1-BIT bitmap cast member 16 the
 cursor."

--

Page 97, column 2, bottom, bullet 1:

"...cursor change only in selected frames..."
= Misses important info:
"TIP: Cursor settings don't need a 'puppet' or a stage update to take
 effect, and will stick to the sprite, unless reset to 0."

--

Page 98, column 2, middle, table:

"Working with the Button Editor"
= Misses important info:
"Remember: Button Editor castMembers (#btned) function only together
 with an active Button Xtra."

...from the '601 ReadMe':
"Behaviors on Button Xtras now get mouseEnter/mouseLeave events."

10 Button Editor elements are incorrect/missing:
  behavesLikeToggle OF MEMBER
  behavesLikeToggle of sprite
            enabled OF MEMBER
            enabled of sprite
 initialToggleState OF MEMBER
           isToggle of sprite
        labelString OF MEMBER
           tracking of sprite
       putImageIntoCastmember()
 setButtonImageFromCastmember()
...Button Editor castMembers are of type #btned.

6 Toolbox button elements:
 the buttonStyle
 the checkBoxAccess
 the checkBoxType
 buttonType OF MEMBER
    enabled of sprite
     hilite OF MEMBER
...Toolbox button castMembers are of type #button.

--

Page 98, column 2, middle, table:

"setButtonImageFrom ¬
 Castmember"
= Should read:
"setButtonImageFromCastmember()"

...CANNOT use linebreaks in the middle of Lingo terms!

--

Page 98, column 2, bottom, table:

"tracking - Test wether a button..."
= Can't understand that; clearer please.

--

Page 100, column 2, middle, p2:

"When it's a value, Lingo treats the entry as void."
= Misses important info:
"When it's a value, Lingo treats the entry as a VARIABLE (or as
 'Void')."

...Example:
   set aVar1 = "Denis"
   set aVar2 =  99
   set aList = [aVar1:aVar1, aVar2:aVar2, aVar3:aVar3]
   put aList
   -- [#aVar1: "Denis", #aVar2: 99, #aVar3: Void]

--

Page 101, column 2, top, p1:

"Sorting lists"
= Misses important info:
"TIP: Except 'setAt()', all list functions work FASTER on sorted
 lists."

--

Summary up to here: 100 errors.

--

Page 102, column 1, middle, table:

"A specific position in a property list - addPropAt"
= Invalid function name; delete it!

--

Page 106, column 1, top, p1:

"Movie in a window basics"
= Misses important info:
"TIP: Movies in a window cannot play in a browser. Window events are
 not sent to the main Stage window."

--

Page 106, column 2, top, example:

"on beginNewMovie theMovie..."
= Strange usage of parameters:
The parameter 'theMovie' is not at all used inside the handler; also the
 parameter's name is badly chosen, better: 'thisMovie', or 'myMovie'.
 The prefix 'the' should stay reserved for Lingo properties: 'the
 someProperty of someThing'. The handler should use common syntax for
 global variables: 'gNewWindow'. The new window's name "pictureWindow"
 is badly chosen, better: "Picture Window", which is also used later
 on page 110, first example in right column.

--

Page 108, column 1, middle, bullet 2:

"open window command...you must later set 'the fileName' to..."
= Should read:
"open window command...you must FIRST set 'the fileName' to...
 Otherwise a System Open File dialog box will ask for the file name."

--

Page 109, column 2, middle, p4:

"set aRect = [0, 0, 200, 300]"
= Should read:
"set aRect = rect(0, 0, 200, 300)"

...Macromedia's Director Corrections just repeat that error!

--

Page 123, column 2, bottom, bullet 1:

"The 'on prepareMovie' handler...and uses the 'puppetSprite' command..."
...wrong concept! The created object should be the one to use that
   command (inside) if needed, instead of the movie script (outside).
   Considering the new auto-puppetting during a sprite's life span,
   'puppetSprite' should NOT be needed at all; see the '6.0 ReadMe'!
   Possibly is doesn't even work in 'on prepareMovie' ??

--

Page 124, column 2, middle, p3:

"The handler first declares 'ball1' and 'whichType' to be global
 variables."
= Should read:
"The handler first declares 'ball1' and 'BALLLIST' to be global
 variables."

...the handler should use common syntax for global variables: 'gBall1'
   and 'gBallList'. The first global variable 'ball1' isn't even used
   in this handler; delete it!

--

Page 128, column 1, bottom:

"Creating a new cast member... The 'new' function..."
= Misses important info:
"Creating a new cast member... The 'new(#memberType)' function..."

"TIP: Using parenthesis for functions (and handlers) makes them
 easier toread and identify."

"TIP: If you create your own 'on new' handler in a global script
 that is of type '#movie' (instead of '#parent'), or in the current
 frame script, Lingo will call that handler of yours instead of
 its own 'new(member)' function, which causes unpredictable results.
 Make sure to set any parents scripts of yours that include
 'on new' birthing handlers to the scriptType '#parent'.

--

Page 128, column 1, bottom, syntax example:

"new(type,...)"
= Misses important info:
"Optionally specify a target for the newly created member by
 adding a member and/or castLib ID after it, separated by comma."
 And remember Macromedia's Director Corrections for this paragraph!

--

Page 128, column 2, top, bullet 1:

"...the cast member's type..."
= The listing misses:
"btned, #ole"
...for Button Editor and Windows OLE members.

"TIP: Find out if a member with a certain name or number exists
 by testing 'NOT (the type of member nameOrNumber = #empty)'.
 By using 'set the type of member x = #empty' you can delete
 existing castMembers, same as using 'erase(member x)'."


--

Page 129, column 2, bottom:

"The variable 'newFile' already has a sound file already..."
= Delete the second 'already'!

--

Page 130, column 2, bottom:

"...script contains is the text in the field..."
= Misses important info:
"TIP: Although you can retrieve 'the scriptText' of script cast
 members during author-time, the 'scriptText' properties of ALL script
 cast members are set to EMPTY ("") during run-time in a projector or
 browser. Place Lingo lines to be used as 'scriptText' in the text of a
 field member and retrieve it from there at run-time: 'do field x'."

--

Page 131 - 132, listing:

"...lists the properties that Lingo can set for cast members:"
= Misses important info:

= Misses Button Editor members (see page 98):
"Button Editor (#btned) settable...
  behavesLikeToggle of member
            enabled of member
 initialToggleState of member"

"Button (#button) settable..."
= Misses 1:
  text of member

"Digital video (#digitalVideo) settable..."
= Misses 1:
  fileName of member (takes URLs, fixed in 601)

"Field (#field) settable..."
= Misses 1:
  rect of member (settable for #field only)

= Misses film loops:
"Film loops (#filmLoop) settable...
  loop  of member
  sound of member"

"Movies (#movie) settable..."
= Misses 1:
  loop of member

= Misses Windows OLE members:
"OLE (#ole) settable..."
  ...(???)

= Misses palette members:
"Palette (#palette) settable..."
  ...(???)
  
"Text (#richText) settable..."
= Misses 1:
  text of member (authoring only)
  
"Sound (#sound) settable..."
= Misses 1:
  loop of member

= Misses Shockwave Audio members:
"Shockwave Audio (#SWA) settable...
  preLoadTime  of member
  soundChannel of member
  streamName   of member
  URL          of member
  volume       of member"

--

Page 133, column 1, top, p1:

"...and then generates 100 frames..."
= Should read:
"...and then generates 101 frames..."

...looping from 0 to 100 creates 101 turns.

--

Page 133, column 1, bottom, example:

'set the member of sprite 1 to member 1...' etc.
= Should read:
'set the member of sprite 1 to member "someName"...' etc.

...using plain member numbers is not recommended because during
   authoring, members might be moved around in the castLib.

--

Page 133, column 2, top, bullet 4:

"The statement...'if counter = 20' checks whether the current frame is
 frame 20..."
= Should read: 
"The statement...'if counter = 20' checks whether the LAST FRAME of the
 recording is reached..."

...testing 'counter' has nothing to do with a specific frame number;
   would only work if the handler started exactly on frame 10.

--

Page 134, column 1, top, p2:

"The 'updateFrame' command...then advances to the new frame."
= Should read:
"The 'updateFrame' command...then advances to the FOLLOWING frame."

--

Page 135, column 1, bottom, bullet 2:

'...makes the cast file Tuesday.cst the content for
    Daily News...set...to "Tuesday.cst" '
= Should read:
'...makes the cast file Tuesday the content for
    Daily News...set...to "Tuesday" '

...and misses important info:
"TIP: Avoid using file extensions like .DIR, .CST with Lingo commands
 that accept file names of Director files, because after protecting a
 Director file its extension will change: .DXR, .DCR, .CXT. Also best to
 include 'the pathName' with any local file name in parenthesis: '(the
 pathName & aMovieName)'."

"TIP: The 'name of castLib' property is the internal name of that
 castLib (in the Movie Casts dialog box), which might be different from
 the external 'fileName of castLib' (which also accepts URLs)."

--

Page 138, column 2, bottom:

"For example, this statement...the netID of 'a getNetText' operation..."
= Small typo; should read:
"For example, this statement...the netID of a 'getNetText' operation..."

...also the variable name 'theNetID' is badly chosen,
   better: 'thisNetId', or 'myNetId'. The prefix 'the' should stay
   reserved for Lingo properties: 'the someProperty of someThing'.

--

Page 138, column 2, bottom, example:

'...getNetText("http//www.thenews.com")'
= Misses file name to get text from; should read:
'...getNetText("http//www.thenews.com/myText.htm")'

...or does calling the domain automatically retrieve
   its "index.htm" or "index.html" file?

--

Page 139, column 2, bottom, table:

"downLoadNetThing - ...to find out when PREloading completes... 
 Shockwave movie playing in a behavior."
= Very funny; corrected in Macromedia's Director Corrections:
"downLoadNetThing - ...to find out when DOWNloading completes...
 Shockwave movie playing in a BROWSER."

...Macromedia's Director Corrections make this passage even worse!

--

Page 140, column 1, top, table:

"netDone - Test whether...operations complete."
= Misses important info:
"netDone() - Test whether...operations complete: returns TRUE when done
 (default), or FALSE if still in progress; accepts an integer netID
 parameter, otherwise tests latest operation."

--

Page 140, column 1, top, table:

"netError - Check whether...operation completes."
= Misses important info:
"netError() - Test whether...operation completes SUCCESSFULLY: returns
 the string "OK" when operation completed without error, EMPTY string if
 still in progress or none started (default), or an integer error number
 if the operation failed; accepts an integer netID parameter, otherwise
 tests latest operation."

--

Page 140, column 2, top, table:

"netTextResult - Return the text... The netID is returned by the net
 operation..."
= Misses important info:
"netTextResult() - Return the text... Use a netID (returned by the net
 operation) to retrieve text from a specific net operation."

--

Page 141, column 2, bottom, table:

"Controlling streaming SWA sound files"
...5 properties are missing:
     percentPlayed OF MEMBER
   percentStreamed OF MEMBER
     preLoadBuffer OF MEMBER
       preLoadTime OF MEMBER
      soundChannel OF MEMBER

--

Page 142, column 2, middle, table:

"Writing to files on a user's computer"
= Misses important info:
"TIP: The 'setPref' and 'getPref' commands also work in author-time and
 in a projector."

--

Page 143, column 1, top, p2:

"These Lingo elements can use URLS..."
= Small typo; should read:
"These Lingo elements can use URLs..."

--

Page 145, column 1, bottom:

"Instead, use a handler such as the following..."
= Should read:
"Instead, use an 'on EvalScript' event handler such as the following..."

...it should mention to see page 147 for more information on
   'EvalScript'.

--

Page 146, column 1, middle, example:

' externalEvent "string" '
= Should read:
' externalEvent("string") '

--

Page 149, column 1, top, bullet 1:

"...returns the nth parameter value..."
= Should read:
"...returns the nth parameter NAME..."

...we're talking about returning parameter names here.

--

Page 149, column 1, top, bullet 2:

"...returns the name associated with the first name...If no parameter
    has the name n..."
= Should read:
"...returns the name associated with the first VALUE...If no parameter
    has the VALUE n..."

...still retreiving parameter names, but VERY confusing!

--

Page 149, column 1, middle, p2:

"For example, this handler assigns the first parameter value from..."
= Should read:
"For example, this handler assigns the first parameter NAME from..."

--

Page 149, column 2, top, example:

"on startMovie .. set theVariable to..."
= Makes no sense; should read:
"on startMovie .. global gVariable .. set gVariable to..."

--

Page 151, column 1, bottom, table:

"swList - Put...Boolean items, such as NoSound."
= Can't understand this; what is 'noSound'?

--

Page 154, column 2, middle, example:

"on mouseUp me .. set the foreColor..."
= Makes no sense; should read:
"on mouseUp me .. set the foreColor...put me..."

"TIP: Setting 'backColor', 'foreColor' or 'stageColor' to a 8-bit
 palette entry only works in 8-bit color display!"
 And remember Macromedia's Director Corrections for this paragraph!

--

Page 155, column 1, top, p2:

"For example, the statement 'property movement' declares
 that 'movement' is a property..."
= Should read:
"For example, the statement 'property myMOVEMENT' declares
 that 'myMOVEMENT' is a property..."

"TIP: For property names in behaviors or child objects, best to use
 a prefix like 'my...', or 'p...' (property variable)."

--

Page 155, column 1, bottom, example:

"on enterFrame me..."
= Misses important info:
"TIP: If you declare 'property spriteNum' at the top of a script
 which uses the 'me' reference, Director automatically assigns
 the value of 'the spriteNum of me' to that 'spriteNum' property."

...see important behavior info in the '6.0 ReadMe'!

--

Page 156, column 1, top, example:

"#movement, [...]"
= Should read:
"#myMovement: [...]"
...or:
"addProp(aPropList, #myMovement, [...])"

And remember Macromedia's Director Corrections for this paragraph!

--

Page 156, column 2, middle, example:

"As another example, this statement defines
 the property 'whichSound':..."
= Should read:
"As another example, this statement defines
 the property 'NOISE' and adds it to a 'description' LIST:..."

...on the next page, this example is repeated, using 'noise'
   instead of 'whichSound'. Better: 'mySound'.

And remember Macromedia's Director Corrections for this paragraph!

--

Page 156, column 2, bottom:

"...the statement 'puppetSound whichSound' plays the sound..."
= Should read:
"...the statement 'puppetSound NOISE' plays the sound...in sound
    channel 1..."

...on the next page, the example uses 'noise', but introduces
   it as 'whichSound' again.

--

Page 159, column 2, top:

"Messages to a set of sprites and then the frame"
= This title should read:
"Messages to a SPECIFIC sprite, then to the frame AND MOVIE SCRIPT"

...talking about 'sendSprite(spriteNumber, #handlerName).

--

Page 159, column 2, middle:

"Messages to all sprites and then the frame"
= This title should read:
"Messages to all sprites, then to the frame AND MOVIE SCRIPT"

--

Page 160, column 1, bottom, example:

"on mouseDown me .. 0   xref = getAt(...)"
= Should read:
"on mouseDown me .. SET xref = getAt(...)"

--

Page 160, column 2, bottom, example:

"on beginSprite me...set the ancestor of me to new(...)"
= Should read:
"PROPERTY ancestor
 on beginSprite me
   set the ancestor of me to new(...)"

...will not work without the 'property' declaration.
   See important behavior info in the '6.0 ReadMe'!

--

Summary up to here: 150 errors.

--

That's it. Happy scripting!

Denis Wieger [A3W]

__



(Top)

The Ldoc+ 'Learning Lingo' 6.0 Fixes, part 2

URL = "http://www.a3w.de/Lingo/Ldoc_Errors_LL.html"  (971224)

 Top [Main Page] [About...] [Error Lists] [Ldoc+ Index] [Lingo Groups]
The Ldoc+ © Copyright 97-98 by Denis Wieger Online since June 1, 1997. All rights reserved.
<mailto:Denis@a3w.de
 Top