2007年3月29日星期四

新手如何学习Flex

常常看到有人问,初学者该怎么学习Flex,我该从哪里入手?我每次都很想耐心的回答这个问题,但还是因为想说的内容太多,反而觉得那时候说肯定会漏掉一些重要的东西和步骤,所以没说。趁现在休息的时间,给自己一点思考,希望写出的东西也能更全面一点。


Macromedia Flex 2.0 Explorer

此玩意称之为Flex Component Library, 虽然说这版本还是Flex2.0Beta3的版本, 但是如果Flex3.0还没到来, 我认为这东西还是Flex的初学者们必看的, 它让我们能知道Flex给我们提供了什么样的模板(为什么称为模板, 我想这是因为其实这些控件我们都可以亲手把它给创造出来, Adobe只是提供了平常常用的稳定的控件, 我们不用每次都写而已, 但说实话, 就算是大公司写的东西, BUG实在很多, 也许就单独一个而言,它是满好的,但N多东西结合在一起的时候,我会常常叫OMG)。
Flex Component Library缺少了Chart这一类, 但是这东西我想你要用到它的时候你再去看也不迟, 我建议Flex Component Library中的Effects, States, Transitions, Printing可以滤过, 因为对于新人来说, 看完其它的东西已经足够了。 在看完Flex Component Library的内容之后, 我希望大家都能把源码放到自己机器上跑一跑, 自己写一写。 问到为什么的时候, 你只要记住内容就可以了, 不用再追问下去。


Adobe Flex 2 Component Explorer

名字很象吧, 但内容就不一样了, 在学完以Macromedia为名义的Flex 2 Component Explorer之后, 我们再学学新东家的Flex 2 Component Explorer。 做法跟上面一样, 所做的我想就是保持好心态。


Demo

我希望各位的第一个Demo是一个Application+TitleWindow, 功能很简单, 在Application上有个DataGrid, 把里面选中的值传给TitleWindow里的DataGrid, DataGrid有添加, 修改, 删除的操作。


Flex Style Explorer v2.0.1

想自己的画面好看一点, 那就来看看Adobe给我们提供了的工具。 如果还觉得不满意呢, 我们的Flexer--Jason Hawryluk自己写了个Flex 2 Primitive Explorer, 去看看? 如果你要更好看, 那你就去学CSS或者scale9。




Create Applications
  • Create Application
    我想完成到这一步肯定已经有了部分的基础,继续提高自己的话那你可以到Adobe Flex App Sample 下载sample进行学习,还有一个重要的sample那就是Flex Style Explorer v2.0。1的源代码和Flex 2 Primitive Explorer的源代码,只要右键,你就能看view source。
  • Project in Structure
    一个好的工程没有一个好的架构那是做得非常吃力的。对于已经成熟的团队,我非常推荐大家使用Cairngorm和Riawave.


Create Components


  • Base
    也有很多人问,上面东西我都会了,想写一个控件该从何处入手,最简单和最实用的方法是Help(F1)-->Adobe Flex 2 Help-->Creating and Extending Flex 2 Components,其中有2个重要的章节那就是Creating MXML Components 和 Creating ActionScript Components,顾名思义那就是如何用mxml和ActionScript来创建控件,里面的东西一定要全部看完
  • Ready
    做完Base以后,我们将以实例子进行学习,打开X:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\source\mx\controls,里面有个Button.as,对,没错,这就是Button.as的源代码,而且还是从UIComponent继承过来的最简单的控件之一,我们要做的是要读懂它的一文一字,就算是一个Boolean,里面也隐藏了很多学问。
  • Go
    Ready之后,Go还成问题么?

Help
要Help吗?为什么每次遇到困难问题的时候总是去问身边的人。我不得不说的是当一个看Help(F1)的人和一个问别人的人在一个月内学习Flex,一个查看Help文档的人领先的不只是一条街那么大的距离。Any Question? Please Push F1!

Community Organizations
RIAChina --- 中国RIA开发者论坛,是全国数一的关于Flex的讨论社区,里面隐藏着众多的高手,而且很多已经参加了工作并在实际项目中。
RIADev --- 联系两岸三地的关于Flex/Apollo的华人论坛社区,它所表现的优势在于只要一提出问题,它将以邮件的方式以最快的速度发到每位成员手中,最重要的它是Jeremy带头的。
FlexCoders --- 全球最大的Flex用户讨论组织,只要是关于Flex的问题,你都可以在这里提出,而且常常回答者都是Adobe公司参加或者跟Flex相关的工作人员,当然前提条件是你要具备对英语的阅读能力和表达能力。
FlexComponents--- FlexCoders 的同胞兄弟,这里讨论的都是关于控件的问题,前提条件还是英文:-)

Books
Adobe Flex 2: Training from the Source
Adobe Flex 2.0.1 Help
Adobe Flex 2.0.1 Language Reference
Advanced ActionScript 3 with Design Patterns
ActionScript 3 Cookbook
Make things move
Programming Flash Communication Server
Apollo for Adobe Flex Developers Pocket Guide
AS3 Tip Of the Day !

End
当然Flex的路还是很长,并祝各位好运!

2007年3月21日星期三

FDS Renamed to LiveCycle Data Services

公司最近成了Adobe的追随者,新开了个Adobe LiveCycle 的 Team. Adobe LiveCycle 和现有的 Adobe Reader®, PDF, XML密不可分, 并且用Java进行开发.
一大早看了下Flex Team的消息, 没想到的是, Flex Data Services 的下一代产品改名为 LiveCycle Data Serivces, 并已经推出了LiveCycle Data Services 2.5 Beta 版本, 它进一步改善了Data Service Messaging 的性能, 综合了RIA, PDF, J2EE, 最重要的是它将为Apollo的本地数据缓存和脱机通信最好了准备,所以说难怪叫做LiveCycle Data Services.

其实为什么样不直接叫Apollo Data Services呢?这名字多帅.

2007年3月19日星期一

Apollo Alpha Release! RIA脱离流浪!


Apollo快要发布的前几天,我一直在守候着AdobeLabs的更新,突然因为日本发来的信件使得项目太忙,已致于到后来Apollo可以下载也是别人告诉我的.



给我的第一个惊奇是,Apollo终于出现在了AdobeLabs上,并且抢走了.air的后缀名!没想到Adobe的人不但编程好,取个名字也是满牛的!

让我们看看Apollo Alpha 1 它做什么:


  • Apollo application installation and preferences (shortcuts, uninstall, start menu)

  • File I/O API

  • All functionality within Flash Player 9

  • Window API

  • HTML within Flash content

  • HTML-based applications (i.e. no SWF)

  • Script bridging between ActionScript and JavaScript

  • Cross platform icons

  • Partial multi-window support

  • Network detection change API

  • Application update API’s

  • Full-screen support
再看看它接下去准备做什么:

  • Drag and drop and cut and paste support.

  • Additional HTML and Ajax support.

  • Window transparency for HTML-based applications.

  • Flash within HTML.

  • PDF support.

  • Native dialog support for opening and saving files.

  • Network detection API enhancements.

  • Multi-window enhancements.

  • Additional enhancements to existing APIs.

它实现了跨平台(cross-operating system),它能把现有存的在利用广泛的开发技术(Flash, Flex, HTML, JavaScript, Ajax)整合在一起应用,特别是flex swf与外界的交互将更加便利,应用范围更加广泛,它能创造出新一代的RIA,一个脱离流浪(流览器)的RIA,一个丰富的在桌面上的RIA.


不得不说的是,因为公司目前产品还在采用flex2.0的阶段,如果升上2.0.1,现有工程将不能正常的运行,所以在公司里面玩Apollo有点困难.同时幸运的是,自己刚买了台HP的本本,而且装的还是vista,所以我将非常无奈的,但幸运的,在新的环境中体验升华的RIA丰富的感受,享受Apollo的冲击!


eBay demo
Download Apollo runtime
Download Apollo SDK
Download Flex 2.0.1.

2007年3月12日星期一

Clipboard

今天写了一个右键菜单,其中的一个功能就是做一个简单的copy工作,那我怎么才能把它的内容应用到系统自带的Clipboard中呢?这让我足足困惑了10分钟,实在忍不住,一边问别人,一边自己开始试着能打出相应的方法,终于发现了System.setClipboard(String)这东西.我刚找到,问的人也找到了该方法,在对我用10+1分钟,而他仅用了1分钟惭愧的同时,不由得感叹一句"这东西怎么能这么简单!~~".

实例:

private function initApp():void {
var labelMenu:ContextMenu = new ContextMenu();
labelMenu.hideBuiltInItems();
var copyItem:ContextMenuItem = new ContextMenuItem("copy");
copyItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
labelMenu.customItems.push(copyItem);
this.contextMenu = labelMenu;
}

private function menuItemSelectHandler(e:ContextMenuEvent):void {
System.setClipboard(toolTip.toString());
}