July 8th, 2010
According to Steve Jobs, Flash is dead. He should know, because he’s the one holding the murder weapon. Flash is dead to Apple because they are not allowing it on the iPad, a device which otherwise would seem ideal for viewing the kind of rich media content the Flash platform excels at.
Obviously, Apple’s decision, and Jobs’ declaration, is not a prescient message from the future, but a company policy intended to protect the profits from their app store. They do not want their sexy device to be able to access all the rich content from the web, they want to be able to charge you for it instead. Even so, when someone like Steve Jobs declares Flash is dead, people take notice. So if the future is no longer Flash, … what is it?
Even before Apple weighed in, I’d noticed the demand for Flash has been on the wane. And even more noticeable has been the wavering interest of my fellow Flash devs. Symptomatic of these times, the Flash Brighton group, the collective home of the finest Flash designers and programmers in Brighton, is in the process of a rebrand, which will very likely include (gasp) dropping the word “Flash” from the group name.
On an individual level, I’ve seen many of Brighton’s finest recently devoting their attention to non-Adobe products. And these are the folks who know. So here are some of the technologies people have been playing with:
Unity – a 3D games engine, also banished from the iPhone via their T&Cs, but capable of some amazing browser based interaction. See http://blurst.com/ for many fine examples. If you want a Unity developer, may I recommend my friend and colleague Iestyn.
OpenFrameworks – a C++ framework, capable of creating multi-platform content. Ideal for interactive art, ambitious installations and audio-reactive work, but also capable of publishing to devices such as the iPad, iPhone and Android. This has been my own favourite toy of late.
Processing – a highly accessible language based on Java. Not so great for the web, but excellent for digital art, video or offline interactive work. For the web there is Processing.js, a JavaScript port, which is probably the best Flash animation alternative currently. I have written an introductory book on the subject of Processing, if you want to get up to speed that might be a good place to start.
HTML5 – this is Jobs’ answer to the lack of Flash on the iPad. Unfortunately, while HTML5 has a huge amount of promise, it is still many years away from Flash’s current power. Even if Adobe were to cease developing Flash/Flex today, by the time HTML5 had caught up the iPad will be a distant memory (because we’ll all have migrated to Android devices long ago).
Objective C – inevitably, many Flash devs don’t like being locked out of the platform-de-jour, so have been awarding their attentions to Objective-C, Apple’s OS language. Again, if you want an iPhone developer, there are people I can recommend.
Flex – while Flash demand is dropping, Flex demand has been on the increase. Flex app are still using the Flash Player, so they’re no more welcome on the iPad than any other breed of Flash, but it still remains the best solution for rich media online.
Personally, I disagree with Apple; there is still a future for the Flash platform. Although Adobe are going to have to pull their socks up to fight back, ignore Apple’s greedy posturing, and focus on all the things that HTML5 can’t do very well. Video for example. Or how about 3D?
Posted in 3D, books, development, flash, flash brighton, flash player, flex, futurism, iPad, iPhone, innovation, javascript, open frameworks, processing, unity, web | 3 Comments »
February 16th, 2010
You may be sick of hearing it, but Apple, and in particular their iPhone/Pod/Pad, are setting the standard for instinctive and usable interaction. And I’m sure the iPhone will influence the next generation of Flex components, but until then I’ve rolled one of my own.
My client was reporting the primary school children their app was aimed at were having trouble entering their (given) passwords, the logs showing some needing 20 or 30 tries. The iPhone way of entering passwords, showing the last letter typed, solves the issue of imprecise keying on a touchscreen. But it also serves as an accessible alternative for any user group who may need it.
I was going to post this as a Flash/Flex component, but it is so simple I may as well just post the code, then it is easily translatable into JavaScript, PHP, Processing or whatever is your flavour.
private var _passwordEntered:String = "";
// this will store the password as it is typed
passwordTI.addEventListener(Event.CHANGE, passwordEntry);
// the TextInput component - make sure "displayAsPassword" is turned OFF
private function passwordEntry(e:Event):void {
// update _passwordEntered with whatever has been typed
var newText:String = passwordTI.text;
if (newText.length < _passwordEntered.length) {
_passwordEntered = _passwordEntered.substr(0, newText.length);
} else if (newText.length > _passwordEntered.length) {
var diff:int = newText.length - _passwordEntered.length;
_passwordEntered += newText.substr(newText.length - diff, diff);
}
// hide the text in the field, apart from the last char
passwordTI.text = "";
for (var x:int = 0; x < _passwordEntered.length-1; x++) {
passwordTI.text += "•";
}
passwordTI.text += _passwordEntered.charAt(_passwordEntered.length-1);
}
Posted in accessibility, as3, development, eLearning, flash, flex, iPhone, javascript, usability | 3 Comments »
August 22nd, 2008
The simplest ideas are always the best. I did a project a few months back with the very talented Paul Lloyd of FourTwo.net. We built a little Flash carousel component in AS3 for a corporate client. And it came out pretty well.
The data that runs it all came from a remotely hosted XML, so rather than use a fixed set of cards, a whole new application could be created just by pointing it at another XML. Which is what I have done here – making some of my blog posts look pretty.

Now here’s the cool bit – if instead of using a fixed URL I tell the swf file to read the path to the XML from the QueryString, it becomes reusable by anyone. Even you. Here’s an example:
This is the url of the carousel: http://actionscripter.co.uk/projects/carousel/
Create a new XML, and upload it somewhere, eg.
http://www.zenbullets.com/portfolio.xml
… then give the URL of the new XML to the carousel …
http://…/carousel/?http://www.zenbullets.com/portfolio.xml
… and, wahay, we have a slick looking carousel showcasing a selection from my portfolio.
The structure of the XML should be self explanatory, so feel free to try it. Except when you try it with your own URL it doesn’t work. Why is that?
There’s one more thing you need: you have to give permission for the Flash file to use data from your domain. Flash Player has very tight security features, and won’t let swfs grab data from other domains, unless that domain has said it’s okay by putting a crossdomain.xml file on the top level. This applies both to the URL of the XML and the URLs of any images specified inside that XML. For more info, see here. The crossdomain.xml I used for the example above is here, if you copy this and put it at the top level of the domain where you placed your XML/images it should do the trick.
Posted in as3, blogging, development, flash, javascript | 2 Comments »
February 19th, 2008
Very easy when you know how.
The Javascript (embedded in the html of the page holding the swf) -
function getQuery() {
retstr = “”;
fullURL = parent.document.URL;
if (fullURL.indexOf(’?') > 0) {
retstr = fullURL.substring(fullURL.indexOf(’?')+1, fullURL.length);
retstr = unescape(retstr);
}
return (retstr);
}
The Actionscript -
import flash.external.ExternalInterface;
var query:String;
if (ExternalInterface.available) {
query = String(ExternalInterface.call(”getQuery”));
}
if ((query) and (query != “null”)) { query = unescape(query);}
Posted in as2, development, flash, javascript, web | 4 Comments »