Interaction
NodeBox is designed to output PDF documents, when you want to do all sorts of moving and interactive things you're probably better off with a tool like Processing.
However, if you do want to experiment with interactivity in NodeBox, there's some built-in support that might be of help to you. This assumes you already know how to make an animation in NodeBox.
Interacting with the mouse
In a NodeBox animation, there are three predefined variables that store the current position of the mouse cursor and the state of the mouse button:
- MOUSEX: the horizontal location of the mouse cursor
- MOUSEY: the vertical location of the mouse cursor
- mousedown: is True when the mouse button is pressed, False otherwise
You would typically use the mousedown variable in an if-statement:
if mousedown:
.html# do stuff when the mouse is pressed
else:
# do stuff when the mouse isn't pressed
Interacting with the keyboard
Three predefined variables store the keys a user is pressing during a NodeBox animation:
- key: the last key pressed
- keycode: the integer keycode of the last key pressed
- keydown: is True when a key is being pressed, False otherwise
The key and keycode variables are updated as long as any key is being pressed.
Example
A fun example is this little sketch application. Simply run the code and draw some stuff on the canvas! 
size(400 ,400)
speed(30)
def setup():
global path, d
path = []
def draw():
global path
nofill()
stroke(0)
autoclosepath(False)
if mousedown:
pt = Point(MOUSEX, MOUSEY)
path.append(pt)
if len(path) > 0:
first = True
for pt in path:
if first:
beginpath(pt.x, pt.y)
first = False
else:
lineto(pt.x, pt.y)
endpath()