EdgeRotater – A 3D Interface For Edge Animate

EdgeRotater - a 3D Interface for Edge Animate

Flat is boring!

There. I said it. We were all thinking it.

Well, maybe we weren’t and sometimes flat is super nice. But not always.

With that in mind allow me to present a modern, slick 3D interface for Edge Animate called EdgeRotater. It’s my latest Edge Animate template up on CodeCanyon and you can purchase days of my blood, sweat and tears for the horrifically low price of $12. I know – this Internet pricing thing is crazy paving.

Features:

  • Slick performance on desktop and mobile
  • Supports dragging, clicking and mouse wheel inputs
  • Fully editable text, colors and images
  • Responsive scaling
  • Beautiful editable animation
  • Runs on the fantastic Greensock engine (GSAP)
  • Supports practically unlimited menus
  • Can be flat or 3D
  • Can either jump or animate to a page on click or wheel
  • Rotates continuously

EdgeRotater is designed for Edge Animate and, as always, it’s powered by the super fine Greensock.

So I hope you have fun with it – I had fun making it!

Check out EdgeRotater on CodeCanyon

Loading JSON into Edge Animate with JavaScript or jQuery

Loading JSON into JavaScript and jQuery

A few people have been commenting recently on a 3 year old post on loading XML into Edge Animate so I thought it was time to update things and make a quick post on a data format that’s much more flexible, readable and simple than XML and that’s JSON (JavaScript Object Notation).

I won’t mess around. Here’s a snippet of JSON that has several top level properties (carouselButton, gradientMask, imagePath etc) and then two objects in an array each containing body, image, title, subtitle and backgroundImage properties:


{
 "carouselButton": "button.png",
 "gradientMask": "gradient.png",
 "imagePath": "images/",
 "itemHeight": 360,
 "itemWidth": 640,
 "items": [
 {
 "body": "Ham hock flank tail, chicken short loin turkey sausage porchetta kielbasa brisket spare ribs turducken ham. Ground round leberkas salami turducken turkey ham hock frankfurter chuck tri-tip beef capicola sausage kevin short loin. Ground round pork leberkas, swine strip steak kevin ham hock drumstick capicola ball tip t-bone pastrami pig meatloaf shankle. Landjaeger bresaola strip steak filet mignon, frankfurter tri-tip hamburger meatball spare ribs beef ribs tail. ",
 "image": "blueGradientBg.png",
 "subtitle": "Hello subtitle0 nice to meet you",
 "title": "This is my title0",
 "backgroundImage" : "backgroundPhone.png"
 },
 {
 "body": "Ham hock flank tail, chicken short loin turkey sausage porchetta kielbasa brisket spare ribs turducken ham. Ground round leberkas salami turducken turkey ham hock frankfurter chuck tri-tip beef capicola sausage kevin short loin. Ground round pork leberkas, swine strip steak kevin ham hock drumstick capicola ball tip t-bone pastrami pig meatloaf shankle. Landjaeger bresaola strip steak filet mignon, frankfurter tri-tip hamburger meatball spare ribs beef ribs tail. ",
 "image": "dawnGradientBg.png",
 "subtitle": "Hello subtitle1 nice to meet you",
 "title": "This is my title1",
 "backgroundImage" : "backgroundPhone.png"
 }
 ]
}

This is how we load the JSON using pure JavaScript – the browser has a built-in parser so you don’t need to load any special libraries in most cases:


function loadJSON(){
//new XMLHttpRequest
var xhr = new XMLHttpRequest();
//assign its onreadystatechange event handler to anonymous function
xhr.onreadystatechange = function(){
//4 means request finished and response is ready
if(xhr.readyState === 4 ){
//200 means 'OK' - 404 means page not found
if(xhr.status === 200){
//responseText is the built-in result string
//ref to the the parsed JSON object
jsonData = JSON.parse(xhr.responseText);
//do stuff here
//alert('My gradientMask is: ' + jsonData.gradientMask); //gradient.png
//alert('My first item title is: ' + jsonData.items[0].title); //This is my title1

)
} else {
alert('JSON loading error');
}
}
};
//open an aysnchronous stream to the file
xhr.open("GET", 'carousel_data.json', true);
//send the arguments to the XMLHttpRequest instance//(basically it loads it)
xhr.send();
};

And now loading JSON using jQuery/AJAX.


function loadJSON(){

$.ajax({
dataType: "json",
url: 'carousel_data.json',
success: function(data){

jsonData = data;

//do stuff here
//alert('My gradientMask is: ' + jsonData.gradientMask); //gradient.png
//alert('My first item title is: ' + jsonData.items[0].title); //This is my title1

},
error:function(e){

alert('JSON load error')
}
});
};

Hopefully that’s all pretty self-explanatory. If you understand simple JavaScript objects then, by default, you understand JSON.

EdgeTubes – 7 Animated Mulit-Coloured SVG Test-Tubes for Edge Animate

EdgeTubes

I had so much fun making these SVG animations – you can set the amount of bubbles and the colours and even assign them as a preloader so what’s not to love?!

I spend a fair bit of time designing complex UIs and ensuring fluid interactivity so this project was a bit of a break from that – ok I spent a fair bit of time making sure it performs well but at the end of the day they’re nothing more than just lovely-looking, fun, animating test-tubes 🙂

Check out EdgeTubes on CodeCanyon

Star Wars GUI/MultiTouch UI Controls (again)

MultiTouch UIIf you follow this blog you may remember I posted this along with a Vine of some UI controls I was working on about a year ago. I was inspired to build them after seeing this real-time rendering demo for Star Wars by LucasFilm (check it at 01:19).

I’m revisiting this project at the moment which has been really well received and has had lots of interest from UI people to interactive infographics designers and I thought I would share the actual demo rather than a Vine. Currently the UI controls are built, controlled and animated with CSS using Greensock GSAP (they happen to be in Adobe Edge Animate but because they are JavaScript ‘classes’ they can be used anywhere) and they’re making full use of the ThrowProps plugin and the Draggable utility. I was fairly sure I had already posted the actual JS demo but it turns out I hadn’t which means I’ve gone mad.

The reason I am revisiting this project, apart from being really fun to work on, is that I want to build them all in a slightly different way and I want to build build using SVG. The current components are OK (one or two of them might be a bit buggy) but I wanted to post them so that you can have a go.

Over the next few months I will pick one, release the code for that component and do a breakdown of how it works and how I built it. I intend to have built the new version of that component in SVG by then which I will also share in terms of how I built that.

I heartily recommend you give it a whirl on an iPad as it’s multitouch (this was designed to run on a tablet and is fixed at iPad dimensions) but it does a fine job on desktop too.

All the components are can be instantiated in a dynamic way (the sliders can be horizontal or vertical, you can define their dimensions, ranges, assign their outputs to whatever you like and even define their color):

UIRange.js

UISlider.js

UIDial.js

UIIncrement.js

UITimeline.js (not shown here because it has a stinky bug in it.)

UINotch.js

UIPlane.js (again not shown and I can’t remember why – probably another bug.)

SimpleCube.js

If any of these are of particular interest then leave a comment or send me a message and I’ll deconstruct the most popular one first.

Check out the MultiTouch UI Controls Demo