An Adobe Flash developer on why the iPad can’t use Flash
roughlydrafted.com
roughlydrafted.com
Half of the brilliance of computing moving in the way of touch is that you start to interact with digital things the way you would handle actual physical objects. People have been training themselves to use a mouse to move a cursor around a screen for the past 25 years, which is really awkward when you think about it.
With touch things work exactly how you expect them to. There have been dozens of studies with very young children who have had 0 experience with traditional computers who simply "get" touch devices, because its human nature.
I believe Apple understands this and they are not going to spend significant time solving problems that do not need to be solved, especially when said problems really just need to be unsolved and forgotten.
There have been dozens of studies with very young children who have had 0 experience with traditional computers who simply "get" touch devices, because its human nature.
Case in point: my 2 year old. He can use my iPhone with no problems. He can swipe the main screen left and right to find the icon he's looking for. Start the program, and be on his way. He can also start up iTunes on it, and play his music videos that I've loaded onto it. He also completely "gets" how to use the picture viewer. Now, if iTunes is playing my music and doesn't come up with the video screen, he's lost, but for the most part, it works well. The touch interface makes so much sense that he figured out how to get around in 2 minutes.
Just because a platform allows for multi touch does not mean that the underlying functionality changes.
Multi Touch primarily gives you an ability to interact with the platform differently but the functionality it gives you access to is by and large the same.
Zoom, rotate etc.
Or what am I missing?
Tooltips, Alt Tags, slideshows and so on.
Of course it is. Quite a few online services and applications use it to hide complexity.
For instance I am currently working on redesign of a netbank which involves introducing visual overview of your spending. Flash is perfect for that.
But for some reason because many games of mouseover event's it's is an argument for why apple shouldn't allow it?
Sorry that's not an argument, that's poor reasoning.
Please don't make your site in Flash.
Most web apps, on the other hand, are fully useable without the user ever seeing any tooltip. That's what I mean by crucial. To be honest, I thought it was pretty clear already.
Flash and its event model are quite flexible, and there's no reason why you shouldn't be able write games for a touch based system in Flash. But you'd have to write them first, and ideally there'd be an event interface specifically for touch, or it would be overly complex.
But that applies to everything out there that relies on mouseover.
When the iPad comes along and people will be using it for more complex webbrowsing a lot of web applications/services will have to be rewritten because they rely on mouseover states.
Good point. Funny too.
But what i really dislike is the notion of "it is not possible, never ever, it just won't work" without objective proof why something wouldn't work.. just stating that a problem is there and based on that "fact" he goes on and on.. How many websites would be unusable with a touchpad like interace? None.
It makes me sad that this guy obviously tries to make sense of steve jobs most stupid decission of the last years, because it is clear that Apple doesn't want flash/air on the iphone not because of the interface (clearly apple would be probably the best company to resolve this issue!) but because of the threat of mobile apps and games to the appstore. First it will be games, but if i can develop my apps for adobe air for all major operating systems and smartphones.. this is bigger than most people think.
I still hope that the apple community will eventually start to revolt when flash and air applications are available for all other platforms instead of just following apples stupid business decisions with such excuses.
Right, that worked great for Java.
If you want to make pretty much anything else work you will have to put serious work in. Just making an iPhone run Flash won’t it a pleasant experience. Some people might prefer that but there is probably nothing Apple hates more than those kinds of trade offs.
Comparing that situation to Flash seems odd.
(If you prefer features to execution as your comment seems to suggest don’t ever – ever – buy any Apple products. Apple doesn’t think like you do.)
And it doesn't necessarily have to be a browser. There are apps that sell well and there are apps that don't, so should they just close the app store? Of course not.
e.g. Sketchpad: http://mugtug.com/sketchpad/
From the second video here: http://androidandme.com/2010/02/news/adobe-teases-us-with-fl...
"From a developer perspective, there's nothing that I needed to do to ensure that my game is functioning on this [touchscreen] tablet device. It operates the same as it does on the desktop or on this tablet device. Obviously the inputs are mapped, and that's taken care of automatically by Flash player. So Flash Player is able to bring hundreds and thousands of casual games that [are] online from day one." (Emphasis mine.)
He can get away with saying "inputs are mapped" because the only inputs that can be made - touch ones - are mapped, x,y co-ordinates from screen to player. Inputs which don't exist at all - hover, keyboard - don't exist, so don't need mapped.
http://gizmodo.com/5476500/htc-desire-rom-puts-flash-on-your...
The model just doesn't make sense unless Flash developers program most games' input in two completely different ways. I can't imagine that'll ever happen, but even if it did, it'd be years until then. In the meantime, every alternate-universe, Flash-having iPad user who could see an app but inexplicably could only partially operate it would blame Apple.
* Combo boxes that only expose the drop handle of hover. * Controls (video) that only appear when you move the pointer * Camera controls where the mouse motion is used to anchor view. * Animated buttons, flyouts etc.
As an example I did a google search for "flash examples" which led me to http://ziggystudio.com/v1/main.html
This app has an "AUDIO" link in the upper right that scrolls out on mouse over to expose the actual controls. This app simply will not work in a finger environment and would have to be re-written. I would argue virtually 100% of the flash applications written will have broken functionality in a click+drag only environment.
Most of these apps will "work" but in a massively degraded state. Many of them will simply be incapable of being used.
You cannot gracefully degrade to a click/drag system from a hover/click/drag system. They are too different. Flash was developed to maximize the mouse paradigm. It will never work well with a finger interface.
That is a problem with mouseover NOT with Flash.
The same thing can then be said about any website out there running on jQuery or Ruby that uses the mouse over for tooltip or menu pulldowns.
Just because the input is different does by no means suggest that flash couldn't be used.
The argument of performance is the only one I can see right now that have any merit.
Doing that took about 2 weeks of serious dev time. Meanwhile, the native apps we're writing for each platform have taken 6 months each and still need a fair amount of work. HTML 5 is out of the question because it is missing some critical features (mainly content protection of any kind), so mobile flash is great for us.
Having had the chance to use flash enabled mobile devices on various websites, the complaints listed in this article are valid; I wouldn't use it to play flash games, but it is usable for media consumption, even YouTube's. Normal, non-mobile YouTube videos play just fine in mobile flash, for example.
In pseudocode:
on touch:
# do nothing yet
if drag:
scroll page
else: # was just a tap
send click to page
Granted, this is just how Mobile Safari is handling things, but how else could Mobile Safari handle things?It isn't that difficult to do a reasonable mapping from touch sequences to mouse sequences.
Don't get me wrong; I'm not saying that the problem can't be solved. I'm just questioning the wisdom of solving it, in the first place. Or maybe how well the solution will work. But, not the solvability of the problem itself - especially if a few smart people are thrown at the problem.
This might be the part of me that likes my nice and pretty Mac-specific software, but, I don't see anything wrong with software that targets one specific platform. And for Adobe, with Flash, that platform looks like it should be the desktop, not the mobile web.
In contrast, the usage of hover in HTML pages is almost always just to highlight something to show that it can be interacted with.
If my laptop's trackpad can do it, I see no reason why a touchscreen can't do it.
The other thing to think about is that if you do have a mouseover event, you are likely going to try and display something (like a tooltip). On a phone, this would be covered by your finger.
What's the disadvantage to having an invisible cursor so that mouseovers work? Couldn't the cursor "appear" to the system when your finger is on the screen, similar to how the cursor shows for restaurant POS terminals when your finger is on the screen and then disappears when your finger is off it. Clearly I'm missing something.
As a long time member this is very frustrating. I'm sure I'll get even more downvotes for pointing this out.
As for existing code, yes that will be a problem. But most Flash developers think of projects as evolving and/or disposable. Most of us aren't locked into stuff we did 3, 5, or even 10 years ago. We move forward and enjoy finding solutions to new challenges.
Therefore, moving your finger around the screen or tapping in a new position would only move the "mouse" pointer and not generate mouse clicks.
The mouse buttons could be mapped to some physical buttons on the device or to virtual buttons on the bottom or corners of the screen (think of your typical laptop touchpad layout).
Even better, the software could support a touchpad mode where the finger coordinates on the screen aren't mapped 1:1 to where the "mouse" pointer moves but as deltas similarly to how a touchpad works. This would allow for a fine-grained mouse movement even with the touchscreen and this would naturally limit the mouse clicking to specific locations / buttons only.
Touchscreen UI is all good but there will always be a class of applications that want both more precision and mousemove events.
As a personal note, touchscreens are painful to use unless you only have functionality behind big baby-size buttons. I wish I could always switch to such a touchpad mode if I wanted to.
It seems to me that most of the 'mouseover' problems described can be handled with click-and-hold.
Nope; the "Tap and hold" gesture is used by the Safari (and the iPhone OS, for that matter) for other tasks already, namely to bring up the cut/copy/paste element.
Alternate, Occams Razor take: Apple just hardcodes the options, based on the type of object that is selected.
Most likely it would be a crap shoot between pages that took the iPhone/iPad into account, and those that would confusingly not work.
And in Safari, doing this would raise even more confusion; the default behavior works in other parts of the app (the next tab over, for example) but not the tab for your site. It is easy to see a user getting confused as to why something isn't working for one particular site. Maybe they want to copy text from a flash element, but it ends up doing something completely different.
I can think of a few easy fixes. A toggle button that makes touches count as hovers rather than clicks (easy). Hardware that detects a finger hovered near the screen (probably hard). Nobody caring because most things that occur on hover you can do without, and websurfing on even the best phone is so fraught with compromises and frustrating relative to a desktop that you really don't care (free).
I don't think that's at all true. Yes, the concept of mouseovers could be done without (if it had been done without from the very beginning), but since so many Flash apps rely on it now, you can't have a decent Flash experience on a device that doesn't have it. Try using many Flash video sites without an ability to mouseover: the controls hide until their moused-over. A click on anything but the controls means "pause".
"and websurfing on even the best phone is so fraught with compromises and frustrating relative to a desktop that you really don't care (free)."
I strongly disagree. The web on phones before iPhone was indeed compromised and frustrating. But iPhone and some other recent phones have such good browsers that one often hears of people saying they reach for their phone more often than their laptop.
My guess (just a wild one for not being a thinker of touch interface design), would be to solve the solution by first detecting what kind of flash app it is and how much area it takes up, then anytime the finger scrolls over that particular area, there would be a cursor (the user could turn this off, but this is what would happen by default). As the cursor is led by your one finger which never lets up, meanwhile 1,2, 3 or 4 taps with another finger along with other more complex combinations eventually could perform various flash actions. Contrary to Dilger's primary thesis, I believe it's pretty straight forward that Apple is not as limited in thinking to make it happen if they want to, and that even the general audience is ready to take another small step in the gestures department.
Why should Apple think hard and work hard in order to solve a really hard problem they have no particular interest in solving?
Maybe there is an elegant solution out there to make all or nearly all existing Flash apps work, but it won’t be easy and I don’t see Apple investing much in technology they clearly think is dying. They normally never do.
My point was that now that Flash does support multitouch and gestures, it's possible to add those features to existing content (yes, this will happen). Naturally it won't apply to all projects but it's far from the sinking ship that the author suggests and rabid HTML5 supporters are praying for.
"A) The best case: every Flash app on every site is re-thought by its designers and re-coded by its programmers (if they’re even still available), just for touchscreens. They wouldn’t use mouseovers any more—or else they’d have dual versions of all Flash content, so that mouse users could still benefit from the mouseovers they are used to. That’s a ton of work across the Web, for thousands of parties, and just isn’t going to happen. Plus, with many sites, mouseovers are so fundamental that the very concept of the site would be altered, creating a whole different experience that would annoy and confuse the site’s existing users. (And would this be any easier than simply re-designing without Flash at all? Not always.)"
If a user touches a Flash zone, show a cursor, and have the cursor moved by the iPhone's accelerometer. Tap to click.
For elements such as the video player example, the cursor (just as on PC) can fade after time, and a tap or shake would re-show it.
For most of the scenarios he mentions, using accelerometer to drive a hovered cursor would be a particularly intuitive solution.
Flash also tends to have playback and interaction issues.