The Pen Extension is a Scratch 3.0 extension allowing sprites to control their pens, as well as stamp themselves onto the stage and remove all pen marks. Before Scratch 3.0, these blocks were in a category called Pen Blocks. To use them, they must be enabled in the "Extensions" section of the editor. Older blocks are kept but hidden. There are 9 blocks. Pen blocks are useful when creating a one sprite one script project, allowing one to take various actions:
- Stamp the sprite
- Put the pen down
- Release the pen
One example of a one sprite one script project is a simple drawing program. Pen Blocks can also used to make Games and Simulations, as well as other things.
Prior to Scratch 3.0, the pen blocks were located in their own category outside the extensions.
|Note:||Click on a block to learn more about it.|
Scratch 3.0 has the following 9 Pen Stack blocks:
set pen color to [#F3A533] // the color can be changed
set pen (color v) to (50)
change pen (color v) by (10)
set pen size to (1)
change pen size by (1)
Suggested Pen Blocks
<pen down?:: pen> (pen color:: pen) (pen shade:: pen) (pen size:: pen) switch to canvas: [canvas1 v] ::pen //allows switching to a particular canvas for editing clear [canvas1 v] ::pen //clears selected canvas (also includes options all and current) show canvas [canvas1 v] ::pen //would display selected canvas (also includes options all and current) hide canvas [canvas1 v] ::pen //would stop displaying selected canvas (also includes options all and current) bring [canvas1 v] to front ::pen //would shift the selected canvas to the front(also includes options current) move [canvas1 v] to layer (1 v) ::pen //would reorder the canvases (also includes options current)
These are wanted by many Scratchers, as they would make programming much easier. The first would return the Boolean value of true if the pen is down. The second would return the pen color value; the third, the pen shade value; the last, the pen size value. Some Scratch Modifications have at least one of these. Workarounds are possible by maintaining variables to that keep up with these values and updating them whenever the pen state/color/size/shade are changed, possibly by leaving a separate script running that alters the pen when the variables are changed, and only modify the variables in other scripts instead of changing the pen attributes directly. Pen canvases would be independent from each other allowing them to be modified without affecting the others.
- ericrosenbaum. (3/10/2017). "We are moving the pen blocks to an extension." https://github.com/LLK/scratch-gui/issues/725
- ericrosenbaum. (31/10/2017). "Part of this support involves the ability to define 2.0-compatible blocks that do not show up in the palette, but which can load in a project that uses them." https://github.com/LLK/scratch-vm/issues/735