New Feature: Playlist Center! Pick a topic and let our playlists guide the way.

Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member

Creating a basic animation

From: HTML5: Graphics and Animation with Canvas

Video: Creating a basic animation

Part of the fun of working with HTML5 canvas is that you can learn how to do things like animation. So in this movie, we are going to see how to use the canvas and some JavaScript logic to make a basic animation sequence. So let me show you what it looks like. So here, I have a canvas that's light blue with a rectangle, in this case a square, that has a yellow interior and a red stroke that's just moving from left to right across the canvas, and when it disappears from view over here, it reappears over here.

Creating a basic animation

Part of the fun of working with HTML5 canvas is that you can learn how to do things like animation. So in this movie, we are going to see how to use the canvas and some JavaScript logic to make a basic animation sequence. So let me show you what it looks like. So here, I have a canvas that's light blue with a rectangle, in this case a square, that has a yellow interior and a red stroke that's just moving from left to right across the canvas, and when it disappears from view over here, it reappears over here.

So let's see how we built this. So I am going to open up my start version of the file, and what we are going to do is we are going to take a look at the snippets code. So for the simple animation, let's go ahead and copy over the first few lines which initialize everything, and we will paste that in there. So I have got some initialization logic here. I have got some variables for the rectangle. The Y value is 200, the width is 40, and then I've got an X position which is equal to the initial value of the rectWidth, but I negate that so it's -40.

And that so the rect appears completely off the screen when it first gets drawn. So let's go back to the snippets. So let's copy the initialization function over. We will copy this here. So in the initialization function, we get a reference to the canvas and then the context, and then we call a function called blank. Blank draws the background which we will copy over in a moment. Then we have the logic which draws the rectangle. So we have a fillStyle of yellow, and then we fill the rect with the yellow content right here.

Let's go ahead and copy that over. So I am going to copy over the blank function. So you can see that the blank function simply fills the canvas. I have got a nice light blue color right here, and it fills the rectangle which is from the upper left to the width and height of the canvas. And notice, by the way, that I am using the built-in canvas properties, like width and height, rather than hard-coding the values which are down here in the document.

That way if I ever want to change the height of the canvas or make any other changes, I can just change it in one place and then my code automatically picks up the difference; I don't have to worry about changing numbers in more than one spot. So that draws the blank canvas background, and then we've got drawing the rectangle. Let's go back and copy some more code over. This is the function where the animation happens. So let's go ahead and copy that.

So the animation function, you can see up here, we set an interval every 30 milliseconds, which is about 30-ish or so frames per second, to call the function labeled anim, which is down here. So every 30 milliseconds this function will be called, and we check to see if the X position of the rectangle is less than the width of the canvas, and if it is, we then draw the blank background, we move the rectangle by five pixels, and then fill it again.

So we fill it with yellow, we stroke it with red and a lineWidth of 3, and then we fill and stroke the rectangle. Now if the rectangle has moved beyond the canvas width, if the X and Y position is greater than the width--in this case, it is just the X position-- we then reset it back to being a negative value of the rectWidth, which will place the rectangle, again, back off the screen. And the reason we do negative width is because we want the X position to be far enough to the left that none of the rectangle peeks through on the left side of the canvas.

So to recap, we've got some initialization logic. The first thing we do in the initialization function is draw the blank background, set up the initial rectangle, and then start the animation. The blank function just fills in the background, and then every time through the loop, we draw the background, draw the rectangle. And each time we were drawing the rectangle, we are moving in over by five pixels. So the effect that the user sees, because this is happening so quickly, is the blank background gets drawn, which paints over the rect. We move the rect by five pixels and then we fill it again.

Now the example of animation that I am showing here is called single buffering, and the reason it is called that is because all the animation is taking place directly on the canvas that's in the page. There's no buffer where we are drawing everything and copying it onto the canvas. So let's run this in the browser, save, and we'll go to start. And you can see that what's happening is the rectangle is moving across the screen. So it's happening too fast for you to see it, but the blank background is being drawn each time. The rectangle is moved and then painted in its new location.

Now this looks pretty smooth because there's only one moving object, but if this animation contained a lot of moving objects, we might start seeing things like flicker, because all of the objects are being erased, the background is being drawn each time, and then everything is being drawn on the canvas right here directly in the page where the user can see it. So what we see in this movie is an example of creating simple animation with what's called single buffering. But later on in this chapter, we will see an example of double buffering, which makes it easier to draw multiple objects on a canvas, and makes the animation appear much smoother to the user.

Show transcript

This video is part of

Image for HTML5: Graphics and Animation with Canvas
HTML5: Graphics and Animation with Canvas

37 video lessons · 18148 viewers

Joe Marini
Author

 
Expand all | Collapse all
  1. 4m 54s
    1. Welcome
      1m 3s
    2. Using the exercise files
      2m 3s
    3. Using the HTML5 Canvas element in the real world
      1m 48s
  2. 10m 31s
    1. Real-world example: CanvasMol
      2m 9s
    2. Real-world example: Raphaël-JavaScript Library
      1m 47s
    3. Real-world example: The Wilderness Downtown
      4m 1s
    4. Real-world example: Sketchpad
      1m 10s
    5. Real-world example: Pirates Love Daisies
      1m 24s
  3. 3m 28s
    1. Installing the tools
      1m 29s
    2. Exploring the Canvas examples used in this course
      1m 59s
  4. 8m 58s
    1. Introducing the Canvas tag
      6m 30s
    2. Understanding the differences between Canvas and SVG
      2m 28s
  5. 5m 36s
    1. Identifying the Canvas element's methods and properties
      1m 40s
    2. Using the Canvas drawing context
      3m 56s
  6. 43m 14s
    1. Setting and using colors and styles
      3m 19s
    2. Drawing basic shapes: Rectangles and lines
      10m 21s
    3. Understanding the Canvas state
      5m 15s
    4. Drawing complex shapes: Arcs and paths
      9m 15s
    5. Drawing complex shapes: Bézier and quadratic curves
      5m 46s
    6. Rendering text
      9m 18s
  7. 32m 35s
    1. Creating shadows
      6m 41s
    2. Drawing with patterns
      7m 20s
    3. Drawing with gradients
      6m 18s
    4. Using clipping paths
      4m 46s
    5. Drawing images and video
      7m 30s
  8. 35m 42s
    1. Transforming objects using the translate tag
      4m 18s
    2. Scaling objects with the scale transformation
      4m 7s
    3. Rotating objects with the rotate transformation
      4m 33s
    4. Applying a custom transformation
      6m 58s
    5. Compositing in Canvas using globalAlpha
      6m 36s
    6. Manipulating raw pixels
      9m 10s
  9. 41m 23s
    1. Building an image slideshow control
      4m 24s
    2. Using smooth transitions in a slideshow
      4m 28s
    3. Creating a basic animation
      5m 42s
    4. Creating animation with double buffering
      13m 13s
    5. Incorporating Canvas into a real page
      13m 36s
  10. 48s
    1. Goodbye
      48s

Start learning today

Get unlimited access to all courses for just $25/month.

Become a member
Sometimes @lynda teaches me how to use a program and sometimes Lynda.com changes my life forever. @JosefShutter
@lynda lynda.com is an absolute life saver when it comes to learning todays software. Definitely recommend it! #higherlearning @Michael_Caraway
@lynda The best thing online! Your database of courses is great! To the mark and very helpful. Thanks! @ru22more
Got to create something yesterday I never thought I could do. #thanks @lynda @Ngventurella
I really do love @lynda as a learning platform. Never stop learning and developing, it’s probably our greatest gift as a species! @soundslikedavid
@lynda just subscribed to lynda.com all I can say its brilliant join now trust me @ButchSamurai
@lynda is an awesome resource. The membership is priceless if you take advantage of it. @diabetic_techie
One of the best decision I made this year. Buy a 1yr subscription to @lynda @cybercaptive
guys lynda.com (@lynda) is the best. So far I’ve learned Java, principles of OO programming, and now learning about MS project @lucasmitchell
Signed back up to @lynda dot com. I’ve missed it!! Proper geeking out right now! #timetolearn #geek @JayGodbold

Are you sure you want to delete this note?

No

Thanks for signing up.

We’ll send you a confirmation email shortly.


Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

Keep up with news, tips, and latest courses with emails from lynda.com.

Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

   
submit Lightbox submit clicked
Terms and conditions of use

We've updated our terms and conditions (now called terms of service).Go
Review and accept our updated terms of service.