WEBVTT
00:00:00.289 --> 00:00:03.797
You've already learned how
to make your own variables and use them.
00:00:03.797 --> 00:00:06.657
Now we're going to learn
about two special variables:
00:00:06.657 --> 00:00:09.353
mouseX and mouseY.
00:00:10.222 --> 00:00:12.671
You never have to make
these variables yourself,
00:00:12.671 --> 00:00:15.980
and in fact you shouldn't,
because they already exist.
00:00:15.980 --> 00:00:19.599
You see, the program sets the values
of these variables behind the scenes,
00:00:19.599 --> 00:00:23.758
making sure that the value of mouseX
is always the x position of your mouse,
00:00:23.758 --> 00:00:27.548
and the value of mouseY
is always the y position of your mouse.
00:00:27.548 --> 00:00:30.864
This makes it really easy to do
cool, interactive things
00:00:30.864 --> 00:00:32.559
based on the user's mouse position.
00:00:33.430 --> 00:00:35.868
Let's look at this ellipse
that I'm drawing here.
00:00:35.868 --> 00:00:39.366
So, right now,
I'm always drawing it at 200, 200.
00:00:40.612 --> 00:00:43.827
If I use mouseX and mouseY,
these special variables,
00:00:44.439 --> 00:00:48.286
then I can actually draw it
at mouseX and mouseY.
00:00:49.337 --> 00:00:52.359
Now, if I move my mouse
over the canvas, you can see
00:00:52.359 --> 00:00:55.291
the ellipse is always being drawn
where my mouse is --
00:00:55.291 --> 00:00:57.193
so it follows my mouse around.
00:00:57.193 --> 00:01:00.000
That's pretty cool; can you tell
what I'm drawing? Whee!
00:01:00.468 --> 00:01:04.125
If you're going to use mouseX and mouseY,
you've got to make sure
00:01:04.125 --> 00:01:06.365
that you use them inside
the draw = function ()
00:01:06.365 --> 00:01:08.135
because look what happens
00:01:09.575 --> 00:01:12.700
if we move these two lines of code
outside the draw = function ().
00:01:13.289 --> 00:01:14.436
You see?
00:01:14.871 --> 00:01:19.206
Now this code here only gets run once,
00:01:19.206 --> 00:01:21.811
so this ellipse is only drawn once,
00:01:21.811 --> 00:01:24.036
and it's drawn wherever my mouse
happened to be
00:01:24.036 --> 00:01:26.140
at the very, very beginning
of the program.
00:01:26.725 --> 00:01:30.337
That's why we need to have it
inside the draw = function (),
00:01:30.337 --> 00:01:32.459
because the draw = function ()
is this function
00:01:32.459 --> 00:01:35.784
that's called repeatedly over
and over while our program is running.
00:01:35.784 --> 00:01:39.149
So we want that when it gets called,
it looks at what the current value
00:01:39.149 --> 00:01:43.246
of mouseX and mouseY is, and then
it draws the ellipse at that position.
00:01:43.246 --> 00:01:46.063
If you think about it, it's
actually very similar to an animation --
00:01:46.063 --> 00:01:48.561
it's changing over time,
just in a different way.
00:01:49.191 --> 00:01:52.065
Okay, now we can do
all sorts of fun things.
00:01:52.567 --> 00:01:55.724
What if, instead of drawing it
at mouseX and mouseY,
00:01:56.353 --> 00:02:02.591
I drew it at mouseX still but I fixed
mouseY at something like 300?
00:02:03.231 --> 00:02:07.369
Now you can see that the ellipse
only follows my x coordinate,
00:02:07.369 --> 00:02:09.204
ignoring whatever I do in the y.
00:02:10.991 --> 00:02:16.873
Then, what if I now draw it at mouseX
and mouseY, bringing that back,
00:02:16.873 --> 00:02:19.756
but I get rid of the background,
just commenting that out?
00:02:20.547 --> 00:02:25.234
Woo! Now look, I've got
this funky paintbrush thing.
00:02:25.234 --> 00:02:27.031
That's pretty awesome.
00:02:27.031 --> 00:02:30.470
Or, or, I could even switch
these variables.
00:02:31.029 --> 00:02:32.894
Let me bring back our background.
00:02:32.894 --> 00:02:37.703
I'll switch these variables here,
mouseY and mouseX,
00:02:37.703 --> 00:02:39.202
and then see what happens.
00:02:39.202 --> 00:02:41.232
Now it just feels really, really weird.
00:02:41.232 --> 00:02:43.853
I've got these mouse controls
that are doing opposite
00:02:43.854 --> 00:02:45.576
of what I would expect them to.
00:02:45.576 --> 00:02:48.321
But that's cool, you could imagine
making a whole game
00:02:48.321 --> 00:02:50.950
which is about trying to draw something
or do something
00:02:50.950 --> 00:02:52.940
while using inverted mouse controls.
00:02:53.040 --> 00:02:58.908
That's it for mouseX and mouseY --
really, pretty fun. Enjoy!