I want to start developing Flash and Flex applications so that I can put all of the concepts floating around in my head into action. The problem is that I have never done any programming nor dealt with code...ever. I have worked in the graphic design industry and a lot of the storyboarding features in Flash are intuitive to me. Additionally, I've gone through some tutorials on Flex through the Adobe website, and although I pick up on the concepts well and can do the assignments, I'm not fully understanding the language (it's only been a week though).
My question is this: Should I just keep going with the Flex tutorials and work my way through MXML and ActionScript? or should I start by learning a different base language first? I've learned several languages in my life (Spanish, French, Italian) and with those, I didn't really understand the language until I jumped in, went to the country, and just struggled through it. Is it the same with MXML and ActionScript? Should I just struggle through it? Or do I need a base first? If I need a base, what would you suggest?
It depends on where you want to go.
If you're aimed towards making "application"-like content - that is, buttons, pulldown menus, tab and accordion frames and so on, then probably you should keep on with the Flex tutorials. Flex is a framework, remember - it will spare you more of the gritty details if what you want to do is aligned with it.
If you want to make more generally expressive content - games, unique menus, highly interactive experiences and the like, then learning Flex would probably be a sidetrack. You'd be better off focusing on ActionScript itself.
Since you're starting from zero, you should also consider how far you plan on going. If you hope to eventually be able to handle complicated, heavily script-driven content, then you'd be better off learning ActionScript 3 and pretending AS2 doesn't exist. However, if you need to learn "enough" scripting to get the job done, but you don't plan on getting married to it, then you might prefer to do the reverse. AS2 is much more ad-hoc, and less strict. It has more whippituppitude, as they say. But for complex work AS3 is far better.
As for learning other languages, I'd say not so much. AS2 is very similar to JavaScript, and AS3 is very similar to Java, but you'll understand much better how to make good Flash content if you learn the scripting together with the authoring tool, and you'll come away more able to grok Flash's internal structure and the attendant possibilities and limitations.
JavaScript is a good language to look at if you want to learn something similar to ActionScript, but if you are really interested in using Flex and Flash, you might as well just dive into it.
As you get more experience you'll find that you will also be able to read code in other languages and learn from examples of core concepts in most popular languages. Like spoken languages, the rules are pretty consistent, the grammer and vocabulary just change.
I have always found working through a language and researching when I have specific questions makes the process faster, plus I tend to remember the things I struggled on a little better.
Related
i am a hobby programmer with very little experience in web programming, i devote an average f 20-30 hours a week, but with summers coming i have some free time to experiment and learn. could anyone please tell me, whether a framework like (Kohana/cakePHP/CI) should be used or directly a CMS tool like drupal/joomla should be used to make a website something like stackoverflow, on a smaller scale though.
Thanks for your help.
It depends on what you want to learn. Depends on your goal.
Is it webdevelopment you wish to learn? CSS? Webdesign? Programming? Building sites?
If your goal is the site itself, I would suggest to start high up in the stack: use a ready-to-go CMS, such as Drupal, that gets you going fast. And that offers a (production ready) result in a few hours. Your downside will be freedom: sure Drupal can do a lot, so can Wordpress. But unless you move down in the stack (develop addons and such) you will have to do with what you are offered: ready made components that work according to the authors wish. Possibly not your wish.
If your goal is to learn webdevelopment in a more general way, you should start lower down in the stack. Ruby on Rails or Django are probably the best options. Simply because of their vast resource on newbie documentation. You will learn programming along the way there too. Within a few days you will have built a site according to your exact wishes (obviously, your milage may vary, depending on the wishes:)).
If your goal is development of software, Python and Ruby are most probably a good start too: both are cross-platform, have good newbie resources and offer great documentation. Both are really well (opinions may differ on this) abstraction and object orientation. They will form you into a good programmer, simply by their nature.
There's a Stackoverflow clone called Qwench that is free.
(search stackoverflow for open source stackoverflow clones)
and one built on drupal http://drupal.org/project/arrayshift
Wordpress can act very much like Stackoverflow with a proper template. See here: http://p2theme.com/ (demo here: http://p2demo.wordpress.com/). Actually you can than start editing the theme (.php files) and make it behave more and more like Stackoverflow (with reputation system etc. which should be easy to implement). This way you won't be reinventing the wheel and have a good headstart.
I personally use CodeIgniter and love it. I would recommend it to any novice looking to further their knowledge of object oriented programming, and any veterans looking to get their projects off the ground quicker. I am not going to go into great detail here, because I know Kohana and CakePHP are similar, and its mostly opinion. CI does have great documentation though.
I think learning the most common CMS is going to be hugely beneficial to you, tons of sites and companies use WP/Drupal/Joomla/Etc and it really can't hurt to understand them. These projects are very large, so you don't necessarily need to know their internal operations 100%, but you should know enough to be able to install, customize and get a site up and running fairly quickly.
Everyone has their favorites, but I invite you to try them all and see what moves you. It will NEVER hurt to learn something and not use it, especially with some extra time.
There are times to use a packaged CMS and hopefully be able to theme/customize it to what you need quickly...then there are times you will want to code a special case by hand using a framework.
Just understand the depth of the project you want to undertake, because starting from scratch is fun and rewarding, but once you get neck deep in code and get stuck its easy to lose motivation all together.
I would suggest learning the basics of HTML before diving in to using a content management system. The importance of understanding the basic building blocks of websites can't be overstated.
There are loads of resources online to learning about HTML - once you've got some experience with that, you can look at CSS, Javascript, and server-side scripting languages. Knowing the basics will help with using any content management system.
Joomla / Drupal are a good place to start with content management systems, as is Wordpress, but you'd be much better off learning how it works underneath (at least to the most basic extent) before diving in to anything else.
If you're already a programmer you won't find it too hard, but it's definitely worth doing.
What does a web designer need to migrate to Flex quickly?
A: tell me how I can get good fast
B: tell me why it would be unrealistic to learn Flex quickly
I want here both sides of it. Maybe web designers are not qualified, I'd
honestly like to know what it would take.
Thanks,
TELL ME WHAT I NEED
• Projects I need to complete in Flex
• Tutorials
• Key concepts
• Other technologies in a nutshell (webservices, SOAP, AJAX, HTML5 etc.)
MY SKILLS
• I code JavaScript (including HTML, CSS, XML, not much AJAX)
• Flash (hand code ActionScript 3.0 in classes, reasonable OPP skills)
• I'm a designer 'no computer science degree'
This Flex reference should include everything needed for beginning Adobe Flash Builder 4
To be honest, the tenor of your post is a bit irritating. Nothing worth doing comes easily or without some level of work. "How can I get good fast?" implies you either don't have time or don't possess patience to do things right. I doubt that's the case, however, and thus here are a few thoughts to your questions/bullet points:
A: tell me how I can get good fast
I don't know what you know, and thus cannot tell you how long it will take you to become a solid Flex developer. If you want to get good, you'll probably need at least some time; if you want to be fast, you can pick Flex up rather quickly, and your application may end up a buggy mess. Depending on your definition of "fast" (and what you already know, of which, as I've said, I'm completely ignorant), you'll probably have to take your pick between the two.
Growth in any area usually comes with experience, instruction from superiors, and learning from ones' mistakes. Getting "good" quickly is a concept which doesn't take these into account.
Your knowledge of Javascript, CSS, and design will certainly help, and I don't want to denigrate your current experience. Seven years of design is outstanding and a great gateway to Flex. Those skills, however, likely came with time and effort, and you should expect the same with most new technologies.
B: tell me why it would be unrealistic to learn Flex quickly
Of course you can learn Flex quickly. I picked it up in a few days, and have spent the last 2 years of my life writing Flex applications full-time. I consider myself well past proficient, and I still have quite a bit to learn. The basics aren't terribly difficult (esp. since you have ActionScript experience). Learning enough to be good, however, creates an explosion of new material to cover. Consider these questions:
Do you know how to architect a web application? Not just assembling a quick and dirty web-page with a few basic controls -- do you know how to build a full-fledged web application which is extensible, scalable, and robust in its communication with a remote data server?
Are you working with established data servers, or do you have to implement your own?
Do you know how to manage large data sets efficiently?
Do you know solid software design/development techniques and principles (DRY, YAGNI, KISS) and how to implement them in your code?
If you can't answer these questions (or answer them negatively), you probably have a way to go. If you can answer them positively, you're at least on the right track. There's still a plethora of things to know about Flex (some listed below), and each one will take some time to pick up.
• Projects I need to complete in Flex
This question is a bit vague. If you're referring to tutorials, you're repeating yourself (see your next bullet point). If you're asking what applications will facilitate writing Flex apps (e.g. FlashBuilder 4), you haven't done enough homework. If you're asking what programs we think you should write, you're asking the wrong people. See my next point...
• Tutorials
There are many tutorials for Flex development. Start with a basic Hello World program and add simple features to the page (e.g. user controls, multiple MXML and ActionScript files, packages, styles, etc.). You said you're a Javascript developer with HTML and CSS: why not attempt to rewrite one of your previous applications in Flex?
We don't know what topics you need to cover because we don't necessarily know what you'll be doing in Flex. If you never plan on performing HTTP requests, you probably don't need to learn this functionality (at least not immediately). If you will never work with server-side notifications to your app, BlazeDS and LiveCycle Data Services might not be important.
• Key concepts
Man, where to start? Data binding, Code behind patterns, MXML vs ActionScript, Flex Skinning, working with XML, MVC frameworks, the list goes on. No list of "key concepts" is going to make you good fast.
• Other technologies in a nutshell
(webservices, SOAP, AJAX, HTML5 etc.)
Here are a few things you might want investigate, depending on your needs:
BlazeDS
LiveCycle Data Services
Flex and HTTP
Asynchronous Requests in Flex
Mobile Application Development
My recommendation is to start with the basics, and see what you're up against. Build a "Hello world" app and extend it to include various other features. Then assess what you hope to build with Flex, and how you expect to retrieve data from a back-end server. These two points will help you decide what you'll need to learn next. From there you can research each new topic you're trying to address and how to do it correctly.
I have been seeing some Flex Frameworks, but would like to ask to the programmers and Architects down here on which has suited best in your application.
Cairngorm
Pure MVC
Mate Framework
Custom One.
After using, in turn, all three of frameworks you listed, I can easily conclude that Mate is by far the superior framework. Of course, that's only my opinion and determining what makes a framework superior differs depending on your requirements.
To me, Mate's most appealing feature is how well it separates the different tiers of your application. After becoming familiar with it, I could never go back to using a framework that makes extensive use of global-state "Singletons" (Cairngorm, PureMVC).
However, Mate can probably be a bit difficult getting started with as the documentation is still a bit lacking and outdated, making it hard to know where to find the newest information. Some of the best practices and approaches that have been ironed out are to be found in the Mate forums, requiring some digging through posts. One of the most active users on that forum, Theo, has written a very good summary on the benefits of Mate in the following post:
Flex MVC Frameworks
PureMVC.... I like to have control and not relying on data binding... also since its been ported in different languages it has more value in my book than just a Flex only framework. Overall any MVC architecture is a plus in my book and it comes down to personal coding style/preference.
Cairngorm, and when I can't use Cairngorm (say, when using Flash CS3), I will simulate it (and it is really easy to duplicate conceptually). It is easy to set up, stupid simple, lightweight, and fast. If done correctly, it also forces a VERY clear separation of form and content. It fits in brilliantly with the native Flex classes and exploints data binding to the fullest. Of course, this might have something to do with the fact that it is the standard which Adobe explicitly endorses. Further, it is by far the most popular, which means if you need other people to be brought in and work on your projects, it will be far easier to find people who know Cairngorm than people who know the alternatives.
I find PureMVC incredibly bloated, non-ActionScript intuitive, and generally useless unless you work in a 99% Java company that does a very small amount of work with Flex and you want to have both use the same system.
I don't know anything about the rest.
I want to develop a simple race car game.
A user will see his car from above and can use right and left arrow keys to navigate in the track and between other cars.
What is the correct way to develop a game?
Do I use pure actionscript with FlashDevelop or the Eclipse plugin?
Do I use Flex3?
Is it better to use adobe Flash CS4 Professional?
The advanced version will also include 1-on-1 or multiplayer game.
Do you recommend a separate XMPP server to send real time data between players
or is there a flash server suitable for this?
A book about games in flash and links to tutorials will be appreciated.
Thanks
Man are you on the verge of a brave new world, ha.
Alright, so basically everything that you're mentioning is a viable option. A lot of it is going to come down to personal preference, honestly.
If you are a very visual person and it helps you to see things on the stage as you control them, go with Flash. It's not quite as powerful as Flex when it comes to dealing with data, but allowing you to link up your classes to sprites and movie clips in your library is huge and honestly underrated by a lot of "serious" developers.
If you're going for multiplayer, you might consider looking into Adobe LiveCycle Collaboration Services. It's a hosted solution from Adobe that takes a lot of the work out of setting up a multiuser environment, though it's not free.
Finally, if you can wait a few months, Flash CS5 will allow much tighter integration between FlashBuilder (the upgrade to Flex Builder) and Flash. Basically you'll be able to use both together very easily.
If you want to get started learning this stuff, I strongly recommend Lee Brimelow's excellent site gotoandlearn. The first few on there are AS2 so feel free to skip them, but just watch all of his AS3 examples in order and when you're done you'll be a flash developer.
You can also check out the Adobe Flash/Flex Cookbooks to look up specific questions, or google "Flex in a Week" to learn flex.
Good luck!
In the 'good' old times I used to make small Flash games in Flash IDE with AS2. That was really fast. (Though, code was quite ugly.) Since AS3 is available, I use Flex. If graphics matter, I use Flash IDE and Flex Builder parallel (Build/compile/draw in Flash, code in Flex Builder). Of course, it's not the best, but I just hate how Flash IDE handles code.
For the multiplayer mode, I suggest taking a look at this article: http://www.flashrealtime.com/basics-of-p2p-in-flash/ It uses Adobe's Stratus server to do P2P communication. It's quite easy to setup and use.
Books: http://flashgameu.com/ - basic level, but good for beginning
And of course: http://oreilly.com/catalog/9780596526948
My favorite tutorial site: http://active.tutsplus.com/
first of all: there is no correct way to develop games ...
one advice I'd like to give you is: do not use CS4 for developement ... CS4 is a great tool to create graphics and animations, etc., but is terrible for programming ...
if you want to develop a proper game (or any sort of web app), that you don't want to scrap within months, you need to layout an extensible, flexible and robust architecture, which can only be done with rock solid code, and than plug in all you nice graphics and effects (which can be made in CS4 of course) ...
Flex is probably the fastest way to get UIs up and running ... if you are for example creating a strategy game, which requires a lot of forms and overviews etc., then you should use Flex for that, altough ASwing and other frameworks are reasonable alternatives ... I do not like Flex for a number of reasons, but I guess in the end they're all a matter of taste, so it is up to you to decide what you'll use to create all the standard UI your game will need to have ... the more UI to create, the more I'd advise you to use Flex ...
when it comes to servers, most people tend to use Red5 and SmartFox, which both perform quite well, yet in my opinion have quite a lot of unnecessary overhead and impose a lot on your networking engine ... still, you can start with them, and might find out they're just what you need ...
here comes my personal advice: use Haxe ... it allows you to use one language for servers and clients ... also, it is a great language, once you get the hang of it ... I used AS2 and AS3 for a lot of time, but since I finally had the courage to switch to Haxe, I don't want to go back ever again ... although the languages appear to be similar, they are not, so do not expect them to ... once you got your head around it, you'll understand what I mean ... check out ThreadRemotingServer for creating servers easily ... check out haxelib (more info here) to get some helpful stuff ... and don't be shy to post on the mailing list ... Haxe has a great, friendly, helpful and enthusiastic community ... there's also a forum (which is not used so much) and an IRC channel to get support ...
hope this helps ... ;)
I'm only answering this for points. Dude, you have a lot of work to do if you are serious about this (which i doubt, since you don't even now how to use a search engine or wikipedia). Anyway, here you go...
http://en.wikipedia.org/wiki/Adobe_Flash
I've just finished a flash project where I did the entire project in "pure" AS3, without the use of the Flex framework. I found very little written about this on the web, so I'm not sure if this is a common way to develop RIA's, or if I've jumped off the shoulders of giants and done something stupid that will bite me later.
It seemed like a good idea at the time (famous last words!), but was hoping to hear from someone who could confirm.
Thanks,
Marcus
There's nothing wrong with it. People do that every day using FlashDevelop and AS3-only frameworks like PureMVC. Doing a complex app without any framework to support may get difficult to support in the future, but should be OK if you adhere to well known best practices. Future maintainability, especially if it has to be maintained be someone else, can also be greatly improved by using common design patterns throughout your code and architecture. Barring all that, if you're really just slinging code to build something with any real complexity, you're probably screwed unless you documented every function and the overall architecture very very well. Maybe not today, maybe not tomorrow, but some day you're (or someone else is) screwed! ;)
Flex is nice if you want to create something that looks great real fast within the confines of what the Flex framework gives you.
We used to fight weird framework bugs which Adobe didn't seem to care about or took way too long to fix. So we opted to drop Flex in favor of our own UI framework and we've never looked back since.
Sounds like a perfectly good idea. Flex is really just an overlay of rapid-prototyping, and communication standards, on top of pure AS3.
What you gain in ease of development and a large library and API, you lose in streamlined, strength and simplicity.
I'm currently developing a medium sized app in Flex and although the first phase of development was a breeze, the later stages have been fraught with weird framework eccentricities.
It is definitely okay. For example, I've heard that the Issuu.com platform is not based on Flex but a custom framework.
Thanks all! I've been very happy with AS3, and like the amount of control I get, as opposed to using MXML/Flex. It's good to hear I'm not crazy!