Fluid idea for Life

随笔,杂记

在flex中嵌入任意类型文件

Adobe的cookbook又改版了。上去看到一篇文章,很实用:http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postid=8046&loc=en_US&productid=2

一般我们使用[Embed] 元数据标签在Flex程序中嵌入图片、SWF文件等,事实上,可以用来嵌入任意类型文件,加上 mimeType="application/octet-stream"就可以了。

上文中嵌入了一个xml文件,并使用二进制方式读取,很有意思。

Tags: Flex

Flex and Java – A perfect technological marriage

Flex and Java – A perfect technological marriage,这个标题是引自Adobe flex开发社区的一篇同名文章:Flex and Java – A perfect technological marriage。

看后,联系起来,发现自己最近的很多工作,都和Java有密切的联系。看来Web应用中,Java坐着第一把交椅!

前不久,沉寂已久的Red5发布了0.7,安装后发现Bug似乎更多,相当不稳定,邮件列表中有人说0.7.1才会好点。对于这个开源的服务器,我又爱又恨,爱的是它免费而且功能挺强大,恨的是不够稳定,文档不完整,开发周期拉的太长,不知道啥时候才能出一个release版本。

习惯了red5,再去看fms,觉得很不适应,真心希望fms早日换上as3,这样,就万事大吉了。

前段时间和Flex3一道发布的BlaedDS,一个集成了Remoting和Message服务的Java版开源服务器端程序。相关文章:Getting started with BlazeDSUsing BlazeDS with Spring

还有另一个开源的http://www.graniteds.org/

前段时间,整理《Flex第一步》的错误,集合起来,数目不少,很惭愧,也很道歉,同时很感谢各位朋友给我指出的种种不足,我从中获益非浅。

一个有趣的Flex技术站点

The Flex Non-Docs

开门见山,这里收集的都是Flex官方文档中没有提及的知识点,或者是很难注意到的地方。

For all those secrets in Flex, those that aren't known, those that aren't published, or those that are just hard to find for some unknown reason, like percentWidth.

比如: flash.text.TextField.pasteRichText() flash.text.TextField.copyRichText() flash.text.TextField.insertXMLText() flash.text.TextField.getXMLText() list of mxmlc/compc arguments (mxmc的参数列表,包括文档中没有列出的,有中文翻译)

值得一看。

Tags: Flex

支持表情符号的文本框

正在试验如何在as3中实现简单的图文混排。这里是一个半成品: [kml_flashembed movie="http://www.fluidea.cn/blog/wp-content/uploads/2008/02/supertextarea.swf" height="354" width="460" /]

» 阅读全文

Tags: as3, Flex, SmileyTextField

flex2和flex3的一些差异

有朋友询问关于flex3的问题,我最近一直都是在flex2下工作,很少去玩弄flex3,于是去Adobe网站上找资料。

在flex3的发布页面 http://labs.adobe.com/wiki/index.php/Flex_3:Release_Notes中,有关于flex sdk3、flex Builder3、AIR等产品的向下兼容说明,以及已经发现的Bug列表。

仔细看了下,Flex SDK3的修改相当大,不过大部分都是集中在组件的样式属性和布局属性上,在http://labs.adobe.com/wiki/index.php/Flex_3:Backwards_Compatibility_Flag 页面,有一张详细的表单,列出了所有的更改。

一些修改对布局和样式影响很大,比如: Canvas容器,原来是不支持padding属性的,现在支持paddingLeft, paddingRight, paddingTop,paddingBottom。 滚动条的宽度以前是由上按钮的宽度决定,现在则是由上、下按钮、滑块轨道和滑块等四个部分的最大宽度来决定。 Panel的皮肤将支持9格缩放。

另外,mxmlc新增加了一个属性:-compatibility-version=2.0.1,可以使得编译器采用以前的方式来处理。不过我试了下,好像没有起作用,也许是哪里弄错了。

Tags: Flex

Flex与SEO以及其它

Flex DirectoryTed Patrick维护的一个Flex资源站点,列出了一些提供Flex技术咨询、服务的公司的信息,包括联系方式,方便业务联系和求职。

这个站点使用flex制作,但又有点特别。这个站点使用了很WEB2.0的元素,就是XML+XSL,主页index.html其实是一个标准的XML格式的文件,真正的布局在http://directory.onflex.org/template003.xsl中定义。熟悉XML和XSL的WEB开发者很容易发现这点,在浏览器中,查看页面的源文件,可以清楚看到站点的代码。

使用这种方式,很巧妙地解决了SWF文件中使用的数据无法被搜索引擎识别的问题,并且一些常规的SEO手段都可以在HTML中实现。

题外话,在Ted的Blog(他的Blog很精彩,值得关注)上,前不久发布了一个帖子:http://www.onflex.org/ted/2008/01/what-is-flex.php,题目是What is Flex?

Flex是什么?很正统的说法:Flex是RIA 开发解决方案,是一套应用程序框架。这样说其实还是很抽象,对于一个没有接触过RIA,或者没有进行过Flash内容开发的人来说,很难明白,这篇帖子里面说的很清楚。

我个人的理解,从技术上看,Flex由一套组件库(也就是一堆as文件)和一套编译器组成,针对程序员的一个开发环境。组件库包括了程序开发中常用的组件和一些功能库,编译器提供了超强的整合能力,完成了除程序逻辑之外的所有细活。一个典型例子:flex程序中的数据绑定,这个功能很方便,其实底层还是用as来实现的。

最近武汉一直下雪,持续了10天,天气预报未来几天都有雪,这可算近十年来最冷的冬天,真想找个地方冬眠啊~

Tags: Flex

重复使用RSL中的资源

Flex2或3中,运行时的共享库(Runtime shared library)很有用。可以将类放在外部共享中,也可以将图形、小动画以SWF的形式共享。以类的方式共享相对要简单些,就好像Flex3支持SDK缓存一样,甚至可以做到跨域共享。不过这个功能估计要等到 Flex3正式版本出来才看得清楚,现在Flex3 beta的Bug实在太多了。
相比之下,共享图形等资源是非常实用的。由于在Flex中无法直接访问RSL中的图形资源,也就是无法直接取出SWF库中的元件,尽管都已经通过连接方式导出,常见的做法(来自 Programming.Flex.2中的实例):

先在类中嵌入资源,这里都定义为静态属性,方便调用。

ActionScript" style="font-family:monospace;">package com.oreilly.programmingflex {
    public class Images {
        [Embed(source="image.jpg")]
        public static const IMAGE_A:Class;
    }
}

使用:

<?xml version="1.0" encoding="utf-8">
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
    <mx:Script>
        <![CDATA[>
            import com.oreilly.programmingflex.Images;
        ]]>
    </mx:Script>
<mx:VBox>
<mx:Image source="{Images.IMAGE_A}" scaleContent="true" width="100" height="100" />
</mx:VBox>
</mx:Application>

如果我们希望可以更灵活地操作资源,比如添加到任一容器中。毕竟Image是个比较大的控件。进入SDK里面,研究了Image类的代码,我找到了一个比较简单的方法:

var myClass:Class = Class(Images.IMAGE_A);
var child:DisplayObject = new myClass();                    </p>
<p> var u:UIComponent = new UIComponent();
u.addChild(child);

SWF库中的元件都被视为DisplayObject类型,Flex中的容器都重写了addChild方法,只有扩展了IUIComponent的对象才可以添加到Flex容器中,这里借助UIComponent来显示。

Tags: ActionScript, Flex

为Flex Builder装两个实用插件

1、Subclipse

最近工作中,所有项目都在SVN中进行。由于Flex Builder没有内置SVN支持,很是不便。在编译时,"svn"文件夹会导致一些莫名错误。在编写Flash as时,我现在习惯用Flash Develop,小巧实用,也支持SVN。为了方便,给Flex Builder也装了SVN插件。由于FB基于Eclipse,安装方法都是一样的。

选择 Help -> Soft Updates -> Find and Install,在弹出的窗口中选择“Search for new features to install",然后创建新的"New Romote Site",Name为“Subclipse”,URL是"http://subclipse.tigris.org/update",接下来就是一路next之类的了。

安装结束后,在Window->Perspective->Customize Perspetive中激活svn,就可以在File->New 中看到SVN的选项了。

2、FMS plugins

下载地址:http://fczone.com/eclipse/downloads/

编写FMS服务器端脚本时,最头疼的莫过于AS1的语法了。习惯了AS2、3后,在没有代码提示的环境下,写代码确实是件很头疼的事,这个插件就可以发挥作用了。

安装时,把jar拷贝到 FB的plugins目录下,就OK了。

update 2008.2.19,Flex Builder 2基于的 Eclipse版本为3.1,安装svn时,地址为:http://subclipse.tigris.org/update_1.0.x,Flex3则使用Eclipse 3.2后的版本,对应的地址是:http://subclipse.tigris.org/update_1.2.x

FMS plugin只适合Flex Builder 3

Tags: Flex, plugin

翻译:理解Flex程序的运行机制

此文是我翻译自OReilly出版的 Programming Flex 2 中部分章节,略有修改.

从某种程度上说,即使一点也不了解Flex程序的运行机制,也并不妨碍我们开发Flex程序。不过,弄清楚那些基本的结构还是非常有好处的,起码可以知道它的内部是怎么工作的。这会帮助我们实现一些有趣的功能,比如个性化预加载条,在运行期间加载其它的Flex程序,管理运行期间库元件的加载和卸载等等。更远的方面,理解Flex程序的运行可以帮助完善程序,因为我们将知道如何去优化代码。比如,如果想确定哪些代码是在预加载期间执行的,就得知道如何去捕捉这些事件。

每个Flex程序都是从SystemManager开始的,它是flash.display.MovieClip的子类,一个可视的数据类型,MovieClip支持时间轴。SystemManager有两桢。Flex程序的第一桢用来显示一个下载进度条。这一桢应该尽量使用少量的元素,避免文件尺寸过大,使得可以被快速下载,这时候,Flex框架还有大部分没有加载,只有一些核心的类库被加载,加载结束后,进入第二桢。直到第二桢,程序才完全加载进来,包括程序中使用的Flex框架中的大部分类库。如果我们要个性化预加载条,就得先了解SystemManager的工作流程。

下图演示了程序的初始化流程: SystemManager的初始化流程

一旦程序中SystemManager的实例进入第二桢,它将创建主程序类的一个实例。SystemManager实例有个属性“application”,初识值为null,直到此时才被指向主程序实例。然后,主程序的实例开始自身的初始化。这时,依次触发了主程序的内部事件: preinitialize 表示程序被初始化了但还没有开始创建任何子对象. initialize 程序创建了子对象但这些子对象还没有调整好布局 creationComplete 程序完成了初始化,并绘制好了所有子对象。

主程序完成了这一切后,抛出applicationComplete 事件,并告诉SystemManager :一切准备完毕,可以开始运行了. SystemManager也负责管理所有位于程序显示层次最顶层的对象,包括所有的pop up(弹出窗口),cursors(鼠标样式),和tool tips(鼠标提示)都位于SystemManager实例中。 SystemManager的属性“topLevelSystemManager”,代表当前运行在Flash Player中的根元素。在Flex程序中,这个属性总是指向SystemManager实例自身。当一个Flex程序被加载到另一个Flex程序中时,被加载的程序也会拥有自己的SystemManager,但这时候它的topLevelSystemManager属性就会指向主程序的SystemManager对象。 一般情况下,我们并不需要去使用SystemManager对象,但如果想使用它,也是非常容易的,所有UIComponents的子类(包括Application)都有一个“systemManager”属性,指向当前的SystemManager对象。 在实际开发中,我们可能会使用SystemManager去侦听程序中任何一个可视对象的事件,因为事件冒泡机制告诉我们,冒泡阶段的最后一个对象总是SystemManager。

接下来的内容是:加载另一Flex程序,待续

Flex 2降价了

http://weblogs.macromedia.com/flexteam/archives/2007/11/flex_builder_2.cfm

The new pricing for Flex Builder is: Flex Builder 2 – US $249 (reduced from $499) and Flex Builder 2 with Charting – US $699 (reduced from $749). Regional pricing will align with these new lower US prices.

看来Adobe要加大力度推广flex啊

Total: 31Page 3 of 4‹ Prev1234Next ›