Aedis.Ju

2007年4月28日星期六

What about .air mean?

Apollo's file's name just like apollo.air.
But What about .air mean?
I mean that:


2007年4月27日星期五

mx_internal_uid的在数据传递时的重复解决方法

关于这个【mx_internal_uid】的问题,一直抽空想写出来,乘着今天日本那边休息,还是把它给记录下来吧,希望对其他的FLEX爱好者在碰到此类问题的时候有所帮助。


我们首先了解一下【mx_internal_uid】的概念:

uid : String---The unique identifier for this object


UID它一共有32位,其中通过 ActionScript's Math.random()来产生24位,后面的8位是current date-time来决定的 ,所以只要不要有中彩票的运气(24位的Math.random(),足球彩票才14场猜0.1.3...),再加上时间不停止,所以它无论如何也是在这世界上是唯一的 。

当我们对2个DataGrid进行传递信息直接的通信时候,我们会常常这么做:



<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>

<![CDATA[

import mx.utils.UIDUtil;

import mx.collections.ArrayCollection;

[Bindable]

public var dataArr:Array = [{label:"Red", data:"#FF0000"},

{label:"Green", data:"#00FF00"},

{label:"Blue", data:"#0000FF"}

];

[Bindable]

public var problemArr:Array = new Array();

private function addFromTopDG():void {

problemArr.push(fromDG.selectedItem);
//problemArr.push(ObjectUtil.copy(fromDG.selectedItem));

toDG.dataProvider = problemArr;



}

]]>

</mx:Script>

<mx:DataGrid id="fromDG" width="600" height="200" dataProvider="{dataArr}">

<mx:columns>

<mx:Array>

<mx:DataGridColumn width="300" dataField="mx_internal_uid"/>

<mx:DataGridColumn dataField="label"/>

<mx:DataGridColumn dataField="data"/>

</mx:Array>

</mx:columns>

</mx:DataGrid>

<mx:Button label="Add from Top_DG" click="addFromTopDG()"/>

<mx:DataGrid id="toDG" width="600" height="200" dataProvider="{problemArr}">

<mx:columns>

<mx:Array>

<mx:DataGridColumn width="300" dataField="mx_internal_uid"/>

<mx:DataGridColumn dataField="label"/>

<mx:DataGridColumn dataField="data"/>

</mx:Array>

</mx:columns>

</mx:DataGrid>

</mx:Application>



这时候我们会发现很奇怪的事情发生了,当我们对fromDG数据连续传输到toDG的时候,toDG的数据如果是相同的情况(如很多个Red),我们发现对数据我们用鼠标无法聚焦,仔细一看,原来是【mx_internal_uid】一样呀,从中,我们可以了解以下信息:

1.因为引用关系一直存在,所以传过来的东西是一直一样的。如果把toDG放在一个TitleWindow里传一次再关一次,即削除引用关系,它是没有问题的。

2.就算是ObjectUtil.copy(obj),只要在引用关系还存在的情况下,它copy出来的uid竟然是一样的。那么这样的话Adobe要不要考虑一下重写这个方法呢?毕竟我要的只是里面的值一样而不要把UID一起传过来啊。


解决方法:


合理利用UIDUtil这个类为我们创造合理的UID。




private function addFromTopDG():void {

var obj:Object = ObjectUtil.copy(fromDG.selectedItem);

obj.mx_internal_uid = UIDUtil.createUID();


//这里千万不要直接fromDG.selectedItem.mx_internal_uid = UIDUtil.createUID();

//因为上面说过这样引用关系还存在。

(toDG.dataProvider as ArrayCollection).addItem(obj);

obj = null;//这个就靠自己的CODE 风格啦,不要也没关系



恩,这样问题就解决啦。

2007年4月25日星期三

Flex SDK is Opening Source!

剛吃完飯,就去Flex Team逛了一會,發現了個猛報道。Adobe正在準備對Flex SDK開源!OMG!何等得舉動啊?Flex SDK將以Mozilla Public License (MPL)的形式,能讓FlexCoders下載,繼承開發或者上傳代碼。它會讓更多的人參與到Flex的開發來,而且會有更多的FlexComponent和FlexApplication,我們會更加的看到很多象Doug 這樣的“瘋子”。

我們將要看到的開源:
-Component Source(其實已經大部分的開源)
-MXMLC
-FDB
-AS3 Compiler


還是沒有開源:
-Flash Player
-Flex Builder
-LiveCycle Data Services
-Charting Component

Adobe Labs的Flex:Open Source

Flex:Open Source DiscussionGroup.

Flex Open Source FAQ

2007年4月17日星期二

正面面对Microsoft SilverLight(WPF/E)!

首先一下来自Matrix的新

微软正式发布Flash杀手 命名为SilverLight

matrix 发表于 2007-04-17 08:42:35 作者:Matrix 来源:SilverLight


摘要:

微软日前在美国拉斯维加斯召开的全美广播协会会议上,宣布了其为WindowsWeb以及设备上创建富媒体、丰富交互性的战略。并正式将WPF/E命名为Microsoft SilverLight

   SilverLightWindows PresentATIon Foundation的一个子产品,其利用了跨浏览器Web技术进行设计,以实现多操作系统,甚至是移动设备上的无缝运行。和Flash一样,WPF/E 是作为一个浏览器的插件,可以显示矢量图形、动画和视频。

Silverlight
集成了多种现有Web技术和设备,它可以在WindowsMac平台上运行,支持IEFirefox,甚至AppleSafari Web浏览器。而无需对现有的网站设计进行移植,甚至包括利用Adobe
Flash
设计的内容。

  至于SilverLightFlash的区别,微软的一位高层人士曾这样描述:一个WPF/E程序“并不是传递给Flash播放器的一个编译好的二进制文件。”相反,所有的代码都是基于标准的,且图像都使用了XAML

  同时,与Flash的内容不方便搜索引擎收录不同,SilverLight是以DOM型式公开它的元素树,内容能很好被搜索引擎收录。

  附:SilverLight产品介绍

  1Silverlight通过小巧的浏览器插件将视频、交互性内容以及其他应用融合在一起。该解决方案集成了强大的图像及图层技术,支持任何尺寸图像的无缝整合,并提供适合广播的图层技术,可以在图像上添加按钮、标题或是其他交互性内容。

  2 Silverlight允许利用WMV标准从高清设备向移动设备提供高质量视频和音频。此外,该工具通过Expression
Media Encoder
以及Tarari公司的内建平台,支持15X的快速视频编码及硬件加速。

  3Silverlight支持多种平台,使用户能够方便的进行代码重用,并通过不同平台无缝的连接到Web

  4Silverlight集成了多种现有Web技术和设备,这意味着它可以在任何服务器和发布平台上使用,而无需对现有的网站设计进行移植,甚至包括利用Adobe Flash设计的内容。

5Silverlight采用了已在.NET 3.0Vista中使用的XAML语言,这使得Web内容和桌面内容的开发语言一致,从而降低了开发费用。Silverlight还兼容大量其他标准和 现有技术,包括ASP.NETAJAX以及.NET 3.0,这使得开发者可以根据现有标准,或是采用微软已成熟技术来开发基于Web的内容。

6、 此外,Silverlight为设计者和开发者提供大量的开发工具和开发环境支持。对设计者来说,Expression DesignExpression Blend软件可以创建可重用界面,Expression Web使得在符合W3C标准的网站开发中可以使用XHTMLXMLXSLTCSS以及ASP.NET等工具。对开发者来说,基于Visual StudioWeb开发支持包括ASP.NET AJAX在内的技术,并支持JavaScriptC#VBRuby以及Python等多种开发语言。

  7 Silverlight浏览器插件的安装程序简单,体积约为2Mb。当用户遇到使用Silverlight开发的网页时,可以迅速的安装这一插件。 Silverlight内建的视频及动画广告解决方案灵活性很高,当传输广播类型的视频或是动画广告时,不会影响视频的质量。而这一问题是现有技术普遍遇到的问题。

  8、通过获艾美奖的Windows Media技术,传输流量可降低46%,并且和现有的Windows Media流量配置方案兼容。如果采用下一代Windows Server系统中的IIS媒体包,流量还将进一步下降。

  9Silverlight支持内容接入保护技术。无论在Windows还是Mac平台上,Silverlight都支持多种商业模型,包括订阅、租用、付费浏览或是预览等。

这不难发现SilverLight(WPF/E)利用Microsoft原本拥有的优势。
个人认为最帅的优势是在于SilverLight是以DOM型式公开它的元素树,内容能很好被搜索引擎收录,这方面我期待着Apollo对它的强有力的回应!
这几点优势就能挑战Flash/Flex/Apollo吗?
P.S: .air?air Jordan?air = atmosphere?no,no,no!air = ria = RIA = Rich Internet Applications!

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.