软件也能播放--MM的展现层解决方案:Flex(4)

类别:Java 点击:0 评论:0 推荐:

 

数据访问

 

Macromedia  Flex为面向服务器架构(SOA – service-oriented architecture)而开发。在这一模型中,应用通过与分散在不同地方的服务进行交互,来完成自己的任务。例如,如果创建一个在线旅行应用,你需要与不同的服务进行交互:全球旅馆预定服务,目的信息服务,天气服务等等。这些服务可能以不同的机制来提供,并且来自不同的地方。Flex使你能在客户端汇集信息,并提供三种不同的数据服务组件,以满足对服务提供者进行特定数据访问的需求:WebService组件,HTTPService组件(一般使用XML通过HTTP进行数据访问)以及RemoteObject组件。MXML允许你用相应的WebService, HTTPService, and RemoteObject标签来设置与服务的连接。

 

 

数据绑定

 

在许多语言中,如何在用户界面控件中显示后台数据,是件令人头疼的事情,而且非常容易出错。收集用户在控件中输入的数据,并传给远程服务也常常是件乏味的事情。

 

Flex的特色之一,就是提供了双向的数据绑定机制:你可以将用户界面控件绑定到服务调用的数据结果集上,反过来,也可以将服务的参数绑定到用户界面控件输入的值上。

 

下面是一个简单的股票报价应用。例子使用了WebService标签来设置与XMMethods提供的股价web服务进行连接。这个例子阐明了Flex的双向绑定功能。

getQuote方法的symbol输入参数被绑定到symbol TextInput组件上。 quote标签被绑定到getQute方法的调用结果上。

<?xml version="1.0" encoding="iso-8859-1"?>

 

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

 

    <mx:WebService id="wsStock"

wsdl="http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl">

 

        <mx:operation name="getQuote">

            <mx:request>

                <symbol>{symbol.text}</symbol>

            </mx:request>

        </mx:operation>

    </mx:WebService>

 

    <mx:Label text="Enter a symbol:"/>

    <mx:HBox>

        <mx:TextInput id="symbol"/>

        <mx:Button label="Get Quote" click='wsStock.getQuote.send()'/>

    </mx:HBox>

 

    <mx:Label id="quote" fontWeight="bold">{wsStock.getQuote.result}</mx:Label>

 

</mx:Application>

图4.股价应用

 

实际上,Flex数据绑定机制比传统的重取/显示(retrieve/display)方式更胜一筹:在Flex应用中,你可以将任意对象的任意属性绑定到另一任意对象的任意属性值上。

 

 

使用层级样式表(CSS)

 

Flex使用层级样式表标准来保证用户界面的一致性,并使应用更易于维护。就像在HTML中一样,你可以在应用中嵌入一个指向外部的样式表,或在特定的标记元素下将某种风格定义为其属性。样式表还允许定义字体。所需字体定义内嵌于应用的字节码中,即使用户的机器上没有这样的字体,也能被正确的渲染出来。

 

下面是一个名为main.css的外部样式表。

 

@font-face {

    src: url("LucidaSansRegular.ttf");

    font-family: mainFont;

}

 

.error {

    color: #FF0000;

    font-size: 12;

}

 

.title {

    font-family: mainFontBold;

    font-size: 18;

}

 

TextArea {

    backgroundColor: #EEF5EE;

}

 

下面的例子通过使用<mx:style>标签声明了一个外部样式表,并对不同的控件使用了不同的样式。

 

<?xml version="1.0" encoding="iso-8859-1"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

 

    <mx:style src="main.css"/>

    <mx:Label styleName="error" text="This is an error"/>

    <mx:Label styleName="title" text="This is a title"/>

    <mx:TextArea width="200" height="100" wordWrap="true">

       This is a TextArea

    </mx:TextArea>

 

</mx:Application>

 

图5.使用外部样式表的应用

 

 

特效

 

复杂Internet应用常常被拿来和客户/服务器应用进行比较。因为它们提供了同一级别的用户体验。但是,容易忽视的区别是,两者的用户各具特点。使用客户/服务器应用的客户通常是备受折磨后,最终适应了他们需要面对的用户界面。而复杂Internet应用的客户通常是临时性的用户。在这样的条件下,一个不直观的用户界面将会丧失机会。

 

适当的使用特效,如浮动提示和进度状态,有助于客户直观的了解当前内容。在MXML中,你可以通过设置动画达到这一目的。

 

下面的例子使用了Flex特性库中的prebuilt特效,在这个例子中,当square组件显示时,使用WipeRight特效,而消失时则使用了WipeLeft特效。

 

<?xml version="1.0" encoding="iso-8859-1"?>

 

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

 

    <mx:View id="square" width="100" height="100" backgroundColor="#666699"

showEffect="WipeRight" hideEffect="WipeLeft"/>

 

    <mx:HBox>

        <mx:Button label="Display" click="square.visible=true"/>

        <mx:Button label="Hide" click="square.visible=false"/>

    </mx:HBox>

 

</mx:Application>

 

 

总结

 

Flex语言包含了一个丰富的用户界面组件库,MXML(一种基于XML的标记语言)和ActionScript(基于ECMA 262的、强类型面向对象编程语言)。MXML用于排布用户界面和处理应用中其他方面的问题,而ActionScript用来处理用户交互逻辑。由于Flash平台的普及,Flex使开发者可以开发广泛的应用程序。开发者可以使用工业标准(如XML,CSS和SVC)和他们所熟悉的模式和范例来创建应用。Flex的分离协作方式和Macromedia公用组件模型也使得开发者和界面设计者能更好的进行协作,在可靠的、易于维护的架构上生产出在用户体验方面有突破性的产品。

 

 

关于作者

 

从1994-2000年,Christophe Coenraets 服务于Powersoft公司,该公司现在已被Sybase并购。他用Java工作始于1996年,并成为公司Java and Internet Application 部门的技术专员。Christophe后来加入Macromedia公司成为公司J2EE应用服务器JRun的技术专员。Christophe在这一职位上开始研究复杂Internet应用,着手将Flash前端与J2EE后端进行集成,Christophe目前是Macromedia的 new developer-centric Rich Internet Applications initiative的高级专员。过去的十年间,Christophe经常在全球范围的研讨会中发言。

本文地址:http://com.8s8s.com/it/it16982.htm