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
|