Profile cover photo
Profile photo
Grant Skinner
5,212 followers
5,212 followers
About
Grant's posts

Post has attachment
Hi everyone, just a quick note that I just published a white paper on creating HTML5 Ads With CreateJS, along with an AdHelper class that makes it easy to implement things like high-dpi support, sleep scheduling, background tab detection, and performance monitoring.

I wrote the article with Cory Hudson, the Sr. Director of Creative Technology at AOL, who has used CreateJS to successfully deliver numerous interactive advertising experiences, and it was reviewed by folk from Adobe and CoFactor/PointRoll.

Post has attachment
Holy crap, I wrote a blog post! It's been a long time since that happened.

Post has attachment

Post has attachment
Very happy to announce that we have officially launched our new website, alongside shiny new versions of the libraries, and new logos. We'd love to hear what you think!

Post has attachment
The new CreateJS class & inheritance model. Testing and feedback welcome!

Quick highlights: utility methods to handle prototype inheritance and promoting overridden superclass methods, removal of the `initialize` methods, instance-level property definitions, and a >2x faster display list.

We're mulling over some changes to how we manage our community. The two things we'd like to solve are:

1. encourage the community to help answer technical questions
2. facilitate more casual communication in the community (sharing, ideas, general discussion).

Currently we have the mostly dead mailing lists, this fairly quiet G+ community, and the fairly busy but somewhat neglected community.createjs.com.

The latter is doing ok, but isn't in a format that encourages either of the points above, so it mostly winds up with my team trying to answer questions when they have time. With the continuing growth of the community, this means that questions are being neglected, and we're spending more time on support instead of ongoing dev.

We're considering moving all technical questions to StackOverflow, where we've already seen a lot more community involvement, thanks to their karma system. It also does a better job of exposing previously asked questions, both on the site, and via search engines.

In parallel, we're considering setting up a sub on Reddit for general discussion and community interaction.

Issues would continue to be tracked on GitHub, and of course this G+ community would live on.

Thoughts?

Post has attachment
I've been working quietly on SVG export for EaselJS, and it's looking pretty solid. See the attached programmer art demo, which shows all the working features.

In brief, it will dump out an entire EaselJS stage (or Container), including all Bitmaps, Sprites, Containers, Shapes, Text, and masks.

There are a few limitations, and a few features I'm still working on (any arcTo experts want to help?), but it's in a decent beta state now.

I'd love to get feedback on how you'd use this, and whether it should be part of the core distro. It's ~8kb minified, so I'm hesitant to roll it into the main library, but I'm open to feedback.

Post has attachment
Hi everyone,

I wanted to give you a heads up on some significant updates I've made to Graphics, in the hopes that you can test against your projects and confirm that nothing is broken.

Graphics consists of a queue of instructions: command objects that expose an "exec()" method. Drawing is simply iterating through that queue, and executing each instruction in turn.

Previously, these instructions were generic command objects that used function.apply to get their work done. I have now updated the implementation so that all instructions have dedicated command objects (Ex. Graphics.LineTo).

This has a performance benefit (it facilitates type detection & avoids function.apply), allows introspection of the queue via Graphics.getInstructions(), but perhaps most importantly enables dynamic updating of commands.

For example:
// create and save a fill command object:
var fill = myShape.graphics.beginFill("red").command;
// ditto for a rect:
var rect = myShape.graphics.drawRect(0, 0, 100, 100).command;
// ... then later, we can update them, w/o rebuilding the whole queue:
fill.style = "green";
rect.width *= 2;

It also makes it really easy to create your own custom command objects, and inject them using .append():
myShape.graphics.append({exec:function(ctx2d, shape) {
   // do some custom context2D drawing here.
});

While working on this, I encountered some bottlenecks on Graphics performance when working with large instruction queues (thousands of commands). I've been able to optimize things significantly, so that the overhead in worst case scenarios (drawing LOTS of shapes with different fills/strokes in one Graphics instance) has been reduced by 100x or more. Memory churn has also been reduced in these cases.

In my test case (add 50k rects with different fill colors to a single Graphics instance), it went from ~10s to <20ms.

These changes are up in the NEXT build. Please take a look and let me know ASAP if they break anything for you. They've passed all my base-level tests, but are quite extensive and could use testing.

Post has attachment
Check out the CreateJS Developers community.

Post has attachment
RegExr is now open source under the MIT license.
Wait while more posts are being loaded