1. Paladore - Boopets - Icepets
    Do you want to join our staff team? Check out our seeking staff thread.
    Are you looking for new virtual pet sites or sim games to play?
    VPL's sister site the virtual pets blog
    Your advertisement can be seen here. Visit our advertising on virtualpetlist thread for more information.
    Please follow our Rules
    Help us out by Promoting VPL!

Canvas Cycling in HTML5?

Discussion in 'Programming General' started by CometTheMicroraptor, Jun 30, 2012.

  1. CometTheMicroraptor

    CometTheMicroraptor Approved Artist
    Approved VPL Artist VPL Member

    Reputations:
    110
    Joined:
    Mar 22, 2011
    Messages:
    376
    Likes Received:
    66
    Trophy Points:
    855
    Location:
    Liaoning Province, China. est. 126 mya
    Okay, so I'm curious about something, and this is entirely for future reference, so don't get too excited just yet. I also apologize if I'm not articulating myself very well, since I know very little about how this works.

    Now, I happened upon this site a while ago now, and it remains to be something that absolutely stuns and baffles me every time I look at it.
    The artist says that he and another programmer used HTML5 to make these images, which are like traditional canvas cycling pixelled images seen in older games.

    This is the site in question: http://www.effectgames.com/demos/canvascycle/
    I highly recommend going through it to see what I'm trying to describe here. Basically, though, they are images (with pleasant accompanying sounds, I might add) that have certain pixels cycling in color to create animations (most of which you see is precipitation and moving water).

    Now, out of curiosity... is anybody on here able to do that? I've mentioned before that a friend of mine and myself want to open a site that is slowly turning into something exclusively pixel based and we'd love to have our maps be like this. However, we'd love to have different weather patterns and light cycles happening on them as well (not that these would cycle but I think you get what I mean), and I'd love to know how it works or if anybody can help me do this so that I don't have to make the animations myself, as that is incredibly complicated. It just seems incredibly fascinating.
     
    #1
    support our sponsor and join today
  2. indysolo621

    indysolo621 Elite Member
    VPL Member

    Reputations:
    0
    Joined:
    Feb 27, 2011
    Messages:
    1,397
    Likes Received:
    59
    Trophy Points:
    0
    I'm trying to wrap my head around how they are doing this. I assumed that this was done simply with images, and just cycling through them on the canvas to create the animation. But the way you described it sounds a little bit more complicated. Do you have a link to them describing this method?
     
    #2
  3. CometTheMicroraptor

    CometTheMicroraptor Approved Artist
    Approved VPL Artist VPL Member

    Reputations:
    110
    Joined:
    Mar 22, 2011
    Messages:
    376
    Likes Received:
    66
    Trophy Points:
    855
    Location:
    Liaoning Province, China. est. 126 mya
    #3
  4. Dart

    Dart JRPG Fanatic
    VPL Supporter VPL Member

    Reputations:
    40
    Joined:
    Jan 23, 2011
    Messages:
    1,028
    Likes Received:
    103
    Trophy Points:
    0
    Gender:
    Male
    A better way is array operations on imagedata objects. I'm working on an example.
     
    #4
  5. Dart

    Dart JRPG Fanatic
    VPL Supporter VPL Member

    Reputations:
    40
    Joined:
    Jan 23, 2011
    Messages:
    1,028
    Likes Received:
    103
    Trophy Points:
    0
    Gender:
    Male
    The following example uses imagedata manipulation:

    http://www.brawnpower.com/img/test.html

    Programming this demo reinforced my preference of flash over HTML5 (CanvasPixelArray doesn't support the regular Array methods, meaning I had to use for loops to set each pixel value individually, adding extra code and time)

    On the bright side, it's still more flexible than using images (suppose, for example, that you wanted to slow down the animation. With this method, you can simply change a single number) :)
     
    #5
  6. Lewis

    Lewis Corepets owner
    VPL Supporter Pet Game Owner VPL Member

    Reputations:
    207
    Joined:
    Jan 21, 2011
    Messages:
    1,882
    Likes Received:
    203
    Trophy Points:
    1,175
    Gender:
    Male
    Location:
    UK
    It's done by using one image and changing the colours of the palette and blending them with the original colour. If you click "Show Options »" you can see the colours changing.

    How does that compare to this?
     
    #6
  7. Dart

    Dart JRPG Fanatic
    VPL Supporter VPL Member

    Reputations:
    40
    Joined:
    Jan 23, 2011
    Messages:
    1,028
    Likes Received:
    103
    Trophy Points:
    0
    Gender:
    Male
    And how do you think they show / change the colors?

    Basically you use a loop to check each set of four values (the data of each pixel) to see if it matches the target color, and if it does you set the values to 255, 255, 255, 0.

    ------

    That being said, I will concede that they were actually using images for the animation.
     
    #7
    Last edited: Jul 1, 2012
  8. Hituro

    Hituro Supporter
    VPL Supporter Pet Game Owner VPL Member

    Reputations:
    79
    Joined:
    Feb 1, 2011
    Messages:
    1,429
    Likes Received:
    101
    Trophy Points:
    1,155
    On an 8-bit animation system you achieved these effects by directly manipulating the color palette used to draw an image. This provided very fast color cycling animations, where waves of color moved across an image. I used to have a screensaver that acted just like that. By changing only part of the palette you could make only part of the image animate.

    In the JS implementation you can't change the actual color palette, so the author makes an object representing the palette, with cycles defined for each color, and then updates the canvas image as the colors change. For speed he redraws only the individual pixels whose colors have changed. He doesn't ever test the pixel's current color, just changes the palette.
     
    #8

Share This Page