| 
	 Lingo Tutorial: Painting Tool READING:Manual pages of the commands described here File "paint2.dir"This is a simple toy: allowing the user to draw with a variety of colors and brushes. I have taken it from an earlier student project and have simplify it a little, yet the set of options available make it easily confusing.  First, let us examine the score's sprites (channels). 
          Here is a description of the important elements they contain:  Now let us examine the scripts that make all these happen. There is a global variable, paint: when "true" then we are in painting mode.  
on startMovie
  global paint
  paint = false
    
  sprite(6).visible = false --make the highlited done button invisible   
  sprite(16).visible = false --make the highited brush button invisible
end
      
         The program proceeds in 3 stages:   There are 4 different brush sizes, controlled by the global brushsize: 
          1-4 going from smallest to biggest.   
-- PREPARATORY FRAME
on enterFrame 
  global paintcolor,brushsize
  brushsize = 3 --default brushsize is 3 = medium
  paintcolor = 42 --default paint brush color is empty (not selected yet)
end
on exitFrame
  _movie.go(_movie.frame)
end
      
        As soon as the user chooses a color, we are entering the Drawing frame.  
-- DRAWING FRAME
on enterFrame
  global paintcolor,brushsize
  
  if brushsize = 1 then
    sprite(35).loc = sprite(26).loc --move the hilite rect to the smallest button
  end if
  if brushsize = 2 then
    sprite(35).loc = sprite(27).loc --move the hilite rect to the small button
  end if
  if brushsize = 3 then
    sprite(35).loc = sprite(28).loc --move the hilite rect to the medium button
  end if
  if brushsize = 4 then
    sprite(35).loc = sprite(29).loc --move the hilite rect to the largest button
  end if
  
  sprite(1).cursor = 2 -- inside the drawing rectangle, the cursor is thin cross 
end
on exitFrame
  _movie.go(_movie.frame)
end
      
        The above is better done with a case statement, on exitframe. Change it to do that. Finally, the congratulatory frame simply writes:  
--CONGRATULATORY FRAME
on enterFrame
  global name
  name = "George"
  member(23).text = name & "!" --set the text in the title to be the user's entered name
  
  sprite(1).cursor = 0 -- no special cursor inside the painting rectangle
end
on exitFrame
  _movie.go(_movie.frame)
end
      
        Now is the interesting thing. When the user selects an ink, say red, we execute this code:  
on mouseUp
  global paint,paintcolor,brushsize
  paint = true
  if brushsize = 1 then
    paintcolor = 54 --smallest red brush
  end if
  if brushsize = 2 then
    paintcolor = 48 --small red brush  
  end if
  if brushsize = 3 then
    paintcolor = 42 --medium red brush
  end if
  if brushsize = 4 then
    paintcolor = 36 --largest red brush
  end if
  
  -- when the user clicks on this button, the red
  -- paint brush of size brushsize is selected
  _movie.go(2
  _movie.updateStage()
  
  sprite(18).loc = sprite(19).loc --move the highlight to the location of the red button
end
on mousewithin
  if the frame = 1 then
    sprite(17).loc = sprite(19).loc
    --move the highlight to the location of the red button
  end if
end
on mouseleave
  sprite(17).locH = -10
  sprite(17).locV = -10
end
      
        Selecting the smallest dot:  
on mouseDown
  global brushsize,paintcolor,paint
  paint = true
  sprite(35).loc = sprite(26).loc
  brushsize = 1 --set the brushsize to 1 = smallest
  
  --next change the brush to the smallest size brush
  --of current paintcolor
  case (paintcolor) of
    36,42,48: paintcolor = 54 --smallest red brush
    37,43,49: paintcolor = 55 --smallest orange brush
    38,44,50: paintcolor = 56 --smallest yellow brush
    39,45,51: paintcolor = 57 --smallest green brush
    40,46,52: paintcolor = 58 --smallest blue brush
    41,47,53: paintcolor = 59 --smallest purple brush
  end case
end
on mouseUp  
  _movie.go(2)
  _movie.updateStage()
end
      
        Drawing within the rectangle:  
on mouseWithin
  global paint,paintcolor
  
  if paint = true then
    sprite(paintcolor).constraint = 1
    -- only allow user to paint within the reinhardt painting
    
    sprite(paintcolor).loc = the mouseloc
    
    if the mouseDown = true then
      sprite(paintcolor).trails = true
    end if
    
    if the mouseDown = false then
      sprite(paintcolor).puppet = false -- paint dot not active anymore
      sprite(paintcolor).trails = false
    end if
  end if
end
      
        Selecting a brush:  
--make the highlited brush button pop up when
--the user rolls over the brush button
on mousewithin
  sprite(16).visible = true
end
on mouseleave 
  sprite(16).visible = false
end
on mouseUp
  global paint,paintcolor
  paint = true
  sprite(paintcolor).visible = true
  --if the brush button is pressed, enable the paint tools
  _movie.go(3)
  _movie.updateStage()
end
      
        And the Done button: on mousewithin sprite(6).visible = true end on mouseleave sprite(6).visible = false end --make the highlited done button pop up when the --user rolls over the done button on mouseup global paint _movie.go(4) --this is so we can change the text up top to --say "It's gorgeous!" paint = false --turn off the paint tools when the user clicks the done button end  | 
  |
| 
		 
 Maintained By: Takis Metaxas 
  | 
  |