A while back Steve Jobs wrote a blog about why he doesn't like Flash and will never allow it on his products. I have been meaningto respond to it but have been busy with a number of projects. Actually a number of them were Flash developed apps for touch screens, which was one point Jobs said Flash was bad for. Obviously Jobs' statement below is just wrong.
"Flash was designed for PCs using mice, not for touch screens using fingers. For example, many Flash websites rely on “rollovers”, which pop up menus or other elements when the mouse arrow hovers over a specific spot." ~ Jobs
Flash works exceptionally well for touch screens and kiosks. A lot of clients want their kiosk created in Flash. Of course rollovers will not work on a touch screen, but all websites developed in any language in today's world have rollovers. The majority of DHTML and JavaScript navigation would have the same difficulty if a pop up menu could only be displayed via rollover. It has nothing to do with Flash. It is the way the site was designed and can be a hurdle for any language. Jobs is reaching with this point.
Another comment Jobs mentioned that isn't fully true is that Flash does not perform well on mobile devices.
"In addition, Flash has not performed well on mobile devices. We have routinely asked Adobe to show us Flash performing well on a mobile device, any mobile device, for a few years now." ~ Jobs
Below is a video from Adrian Ludwig, who works on the Flash team at Adobe. Adrian demos the HTC Hero and its capabilities with the Flash player. Flash performed well on the HTC Hero. I wonder why HTC was able to have Flash performing well on their device and Apple wasn't. Is it Flash's fault? I think not.
The topic that has been driving me crazy, is Jobs big push of HTML5 and how it is the future of the web. If HTML5 becomes the future of the web, it'll be a far future. Currently HTML5 is about as strong as Flash was 10 years ago. HTML5 may have a future but Flash has been here longer, is proven and will continue to evolve while HTML5 is playing catch up.
Flash's ability to allow graphic designers to easily import their Illustrator and PhotoShop assets into the IDE is something HTML5 cannot compete with. The backbone of rich media on the web is the creative. Creative will never stop using Illustrator and Photoshop. I do not care how much money Apple invests in creating a graphics suite it will never out duel Adobe's creative suite.
In the video below a Flash developer named Michael explains the major differences between Flash and HTML5. The most interesting part of Michael's video was when he was demonstrating the performances between HTML5 and Flash. Jobs claimed that Flash couldn't perform well and can kill a processor. Yes, this can be true if the Flash experience was developed poorly and had memory leaks in the code. That could happen with any language though. It has nothing to do with the language but all with the developer.
Anyways, Michael shows how HTML5 was always using more CPU usage than his Flash examples. While the Flash examples were also a better experience, richer graphics, better performance, etc.
Take a look at the video yourself and draw your own conclusion.
I recently developed a shooting game featuring Atlanta based rapper Gucci Mane. Gucci Mane has recently been sent to jail and his fans want him out. The games objective is to help free Gucci Mane from jail. Try and freeze the guards with the ice gun (burrrrr) allowing enough time for Gucci to make his escape. There is a helicopter waiting for the rapper at the end of the game to bring him to freedom.
This game is an example on how you can use Flash and other online tools to market and promote music artists on the internet in a new hip way. Simply add a sound track to the game and have their fans rock out while saving Gucci Mane.
Why isn't my text showing up when I enter it in an input textfield? That was the question I was asking myself. Usually when I have an input text field the text shows up perfectly when keying inside it. The reason I was having this issue was because my textbox was under a mask.
The solution: Embed the characters needed like you would a dynamic text field. That's it.
I finally did it. I made the jump from PC to MAC. I have been PC my entire life and figured it was about time to try out the MAC after all those commercials. I got a new MacBook Pro and it looks cool. The keyboard lights up and everything.
I have been developing Flash on it for the past month and came to some conclusions. The Apple learning curve will take me longer than I thought. I guess this is because I lived and died by the shortcuts on my PC. I adjusted to the basic Apple differences quite easily, like using the command instead of the control key. The Flash shortcuts are what have been killing me. F5 and F6 were not creating new keyframes or blank keyframes for me. It took me a while to realize this was because you have to hit fn and F5 or F6. So I had to do it the long way insert > timeline > Frame.
I guess part of my struggles is because I have a laptop with limited keys. Not having a home and end key has also slowed me down.
The positive thing about the switch has defiantly been dealing with my creative partners. This was the main reason I made the switch. Since the creative assets I get were designed by people using MACs a lot of time I would have missing fonts or fonts that were not compatible. This doesn't happen anymore.
All in all I have mixed emotions on the switch from PC to MAC dealing with Flash development. I have to say I miss my PC, like it more and much much faster with it, but time will tell. Maybe in 3 months I will be singing a different tune when I know my MAC inside and out but until then I have to say, "I am still a PC guy!".
Omniture tracking can be very tricky inside of Flash. Omniture's introduction of ActionSource has made it easier to implement the tracking calls but there is still a number of issues that happens if not explained correctly. One common mistake is extra tracking calls. A lot of times when users click on different trackable components inside Flash the Omniture call gets triggered more than once. This is becasue the Omniture call variables are not being nulled out after it is being fired.
When implementing Omniture on normal web pages each link click usually sends the user to a new http page. Since the user is being sent to a new http page the Omniture variables are automatically refreshed because of the new http headers. In Flash you have to refresh them on your own.
The example below shows an Omniture call in Flash via ActionSource that is not getting refreshed after the call is executed. Since the variables are not being reset after the call, it is being saved in the ActionSource object and is being sent again on each of the next calls.
Since campaign, pageName and eVar17 have not been nulled out after s.track() was called, everytime s.track() gets called in the future it will continue to pass campaign, pageName and eVar17. This will give you incorrect stats. You may think you have gotten more hits related to that campaign or eVar than you really did.
I figured it was time to dive into Flex and see how different it is than Flash. There are some differences but not too many. For my first Flex project I decided to make an app to look up stock quotes. I figured this would be a good place to start because communicating with web services is a common task for ActionScript projects.
In this example I used WebserviceX.NET Stock Quote free web service. To connect to the webservice you have to instantiate a Web Service instance in your MXML file. Below is example syntax to instantiate a WebService in your MXML.
id : name to identify your web service wsdl : web service address fault : function to handle faults when connecting to your web service result : function that will be called after connecting to your web service
Now it is time to make the call to your web service. The following code gets executed after the user clicks the search button. This code lives inside the same MXML page inside an <mx:Script> tag.
We are almost done. All we need to do now is display the results. This code also lives inside the same MXML page inside an <mx:Script> tag.
Take a look at the demo below. Currently we are getting a security issue because this demo is trying to access data from another domain. The solution is to add a crossdomain.xml in the root directory of the server but I do not have access to the blog's server root directory. Please download the source MXML file and add it to your Flex project to see it running.
Everyone is tweeting! Time to tweet in style. Below is an example I made that reads in an RSS or Twitter feed and displays the entries inside a Flash component.
Try out this Flash RSS Feed Reader by entering your blog or Twitter's RSS feed below then clicking go.
How it works?
It is pretty simple to create your own Flash Twitter reader with ActionScript 3. RSS feeds are read in similiar to XML. After you read in the RSS feed loop through the RSS' channel items to display each entry.
Let me know your thoughts or if you need to see any code.
The above code uses a for loop, to loop through the total number of children in mcMain. mcMain.getChildAt(i) will get the reference to the child instance. By tacking .name to the end of mcMain.getChildAt(i) you can get the name of the child object.
My name is Mike. I am skilled at many computer technologies. I enjoy studing and staying current with the latest technologies.
My expertise is in ActionScript. I have been developing in Flash/ActionScript since high school. I think ActionScript is like no other language. ActionScript deals with different complex issues that other languages will never have. Finding solutions for the complex issues is why I love ActionScript so much.