Posted by & filed under books, JavaScript.

Book cover of Supercharged JavaScript Graphics
  • Author: Raffaele Cecco
  • publisher: O’Reilly Media
  • pages: 280

Introduction

A pleasant book written by an author with lots of experience. The examples are fun, and realistic. The tempo of the book is easy to follow for intermediate JavaScript developers.

Review

I like that the book begins with a DHTML example, this makes the reader really understand the fact that building the web is possible with many tools and that each tool has its cons and pros. The newest toys ( canvas, webgl etc ) aren’t necessarily the best or the fastest to build a proper user experience. In the beginning of the book the reader get acquainted with; the browser landscape, sprites, framerates and best practices for working with the DOM which is a pain for performance. The code examples are clear and luckily without excessive comments, which makes the example easy to read for the more experienced developers which are books target group.

The next chapters concern page enhancing techniques like scrolling effects, ui-libraries and shows the best way to create user interface elements form scratch. Al these chapters are a fine introduction for the more performance hungry subjects of games.

The second part of the book dicusses games, staring with a DHTML version of space invaders. This game example incorporates a lot previeous learned techniques en demonstrates the power and performance of well used DHTML.

Of course the power of the newer toys are easy to see with the examples in the book for example the ( recursive ) tree example is a brilliant example of the performance of the canvas element. The bigger part of this book emphasizes on the canvas element. The book clearly demonstrates the posibillities and raw power of the element.

The following chapters cover mobile javascript graphics, phonegap and the Google Charts API.
At first the mix of topics seemed strange to me, however the chapter were really fun to read and I will definitilly use Google Charts in upcoming projects if needed. jQuery Mobile is equally interesting, though personally I would probably take a more responsive way in the future with embedding the touch events into a global library for websites.

Bottom line

this book definitely is a fun read supported by excellent examples for medior to advanced javascript developers who develop applications at his moment, the author makes use of contemporary, but proven libraries and API’s . Which is a plus these days with swift innovation cycles.

The books product page

Posted by & filed under books, JavaScript.

Book cover of HTML5 CANVAS
  • Author: Steve Fulton, Jeff Fulton
  • publisher: O’Reilly Media
  • pages: 652

Summary

Finally one extensive book over the Canvas element. This should attract the more creative ( Javascript ) programmers. I find it hard to describe the entry level of this book, however I get the feeling that novice to medior (JavaScript) developers should get along with the book.

Review

I like the introduction of the all the canvas properties, the authors filled the book with easy to follow comprehensive examples. The examples let the reader experiment with the features of Canvas. Most of the examples have some minor cross-browser issues since the canvas element is not stable yet, but the book describes these issues open and sincere which I liked. After the reader gets acquainted with the canvas element the books start with game programming and animation mathematics. The animations and math reminds me of former actionscript book, but still I learned a lot from these chapters. Flash cannot be compared one-on-one with canvas regarding; performance, animation, collision detection and resource management.

After the game sections the book briefly touches mobile applications with phoneGap and 3d with webGL. I liked these sections but I am not sure if these sections are relevant for this book.

But still the canvas is an amazing element and this books opens up a new world in html, for example chapter 5 shows some impressive examples of how easy it is to combine video with canvas; transformations, bitmap filtering its all possible. It is exiting to see that every new browser generation will be faster and will open new possibilities.

It would be nice to see some additional information in the next edition regarding business applications, for example how to overcome sandbox issues when uploading images to canvas.

Conclusion

But overall I can recommend this book to every developer who wants to be creative with the web. This book provides a solid path for developing Canvas games/ applications with a solid performance. The books product page

Posted by & filed under JavaScript, JQuery.

Get the source at Github

For a larger project of mine i needed to find a way to rotate cavas elements on mousedrag. So here’s my attempt to create this user interface functionality.

Source and example

Watch the demo

rotate canvas demo

Seperate steps

First I divided the script into logical steps to simplify the problem.

  1. create a update function for the canvas.
  2. setup the mousehandlers to register the “drag” event
  3. create a helper function to calculate the angle between 2 coordinates

The key for this functionality is that the starting angle of the drag always differs. This causes the canvas drawing to jump to unwanted angles if the script does not compensate for this.

$( model.cnv ).mousedown(function(event){
    // calculate click angle minus the last angle
    var clickAngle = getAngle(cX + offX, cY + offY, event.clientX, event.clientY ) 
       - model.angle;
    $( model.cnv ).bind("mousemove", clickAngle, function(event){
      // calculate move angle minus the angle onclick
      model.angle =  ( getAngle( cX + offX, cY + offY, event.clientX, event.clientY  )
       - clickAngle);
      updateRectangle(model.angle);
    });
});

I have not tested the script with other shapes than rectangles and squares, but the script should work fine as long as the canvas elements have ‘bounding box’ with a width and height. Of course this example is a starting point and the interface could use some custom cursors or icons.

Posted by & filed under books, JavaScript, JQuery.

Javascript the definitive guide: book cover
  • Author: David Flanagan
  • publisher: O’Reilly Media
  • pages: 1100

Summary

Novice to advanced this book will open the web as your playground, a full course on JavaScript including the new features and API’s of HTML5. It will be hard to find any topic about JavaScript which not discussed in this book.

Review

First a short introduction about me as the reviewer of this extensive Javascript book. I have worked with JavaScript for about 6 years, the last 2 years I dived more deeply into JavaScript, the main reason for this is freedom. I was mentally unrestricted in Flash and Actionscript 3, and I needed to free my mind for javascript as well.

Before this book I have read two other O’Reilly JavaScript publications; JavaScript the good parts and Javascript Patterns. Both excellent books to get a firm grasp of : structure, development and best practices of JavaScript.

For me the timing was right to dig deeper into the “framework” of JavaScript.

It immediately became clear that a lot of research has been packed into this book. The first sections explains the core features of Javascript this should get the reader quickly programming JavaScript in a right way. It is nice to see that the code examples in this section are short and self explanatory.

I read the second part with a lot of fun, this section fully prepares developers for ECMAScript 5 and HTLM 5. I learned a lot of new stuff and browser specific details. Possible pitfalls implementing new standards are clearly described. Some of the chapters I really liked were: Handling Events (17), Scripted Media and Graphics ( 21 ) and HTML5 API’s (22).

The reference is very handy, I already have used it a lot of times. It is nice to have good reference, it’s a fast, reliable and up-to-date way to look things up once familliair with the reference layout. Most times faster than a google request. With the confidence of getting clear and concise code examples.

To conclude this review I can say that this book is a must have for every “future-eager” front-end developer. This book reminds me of my worn “Essential Actionscript 3.0” book. “Essential Javascript” a.k.a Javascript the definitive guide 6th Edition can be bought O’Reilly .

Posted by & filed under JavaScript, JQuery.

Get the source at Github
A few years ago a lot of websites used an animated flash menu for their navigation. The smarter ones were build progressive above the html list. This is a canvas implementation of the same principle.

Source and example

Watch the demo

canvas menu

Thinking about the menu I had several strategies.

  • Create a canvas for each menu item
  • Create one canvas which contains the menu items and one moving canvas for the hover animation

I chose for the latter one because i had the feeling that the performance would be better with large menu’s. Of course more creative menu’s can be be created with separate canvas elements for each menu item.

The script consist of three parts.

  • Reading out the html and building the menu and creating the animation canvas.
  • Event handling.
  • Tracking the mouse position for button clicks and hover states.

This way it is possible again to create irritating accessible menu’s 😉 . Luckily most clients nowadays avoids animating menu. But trends are known to die end come back again. I still need to find a proper way to position canvas elements and offsetting the origin for mouse calculations.