Flex3行为(Behavior)设计(1)

本文详细介绍了Flex中的行为设计概念,包括触发和效果的绑定机制,如何使用MXML和ActionScript进行配置,以及如何通过数据绑定和样式应用效果。此外,还提供了多个示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

行为能够使得应用程序对用户或者对程序设计动作更富有生气。比如,你可以使用行为设计让你的对话框在取得聚焦后轻微的弹起,或者在显示之后缓慢的退去。你可以在程序中的MXMLActionScript嵌入行为设计。即其包含两个部分:触发和效果。< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

关于行为

  一个行为是触发和效果的绑定。触发是一个动作,比如鼠标点击一个组件而取得聚焦,或者是一个组件变得可见。效果发生在组件上某一段时间内可见的或者可听见的改变,通常用milliseconds来计算。效果的例子如:退去(fading),尺寸调整(resizing),移动(moving)等。

你可以为一个时间触发定义多个效果。比如,一个宠物店的应用程序包含一个按钮控件用来选择宠物类别。当用户点击这个按钮控件,一个包含种类名称的窗口变得可见,当这个窗口变得可见的同时,这个窗口移动到屏幕的左下角位置,继而同时把大小从100 piexels调整到300piexls. Flex组件默认是没有效果显示的,所以你需要为每个组件配置每个触发对应的效果。

关于行为的应用

你可以通过使用MXMLActionScript创建,配置并且应用效果到Flex组件。使用MXML, 你必须把效果和触发关联起来作为应用程序的行为设计的一部分。比如:

<?xml version="1.0"?>

<!-- behaviors\ButtonWL.mxml -->

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

<!-- Define effect. -->

<mx:WipeLeft id="myWL" duration="1000"/>

<!-- Assign effect to targets. -->

<mx:Button id="myButton" label="Click Me" mouseDownEffect="{myWL}"/>

<mx:Button id="myOtherButton" label="Click Me" mouseDownEffect="{myWL}"/>

</mx:Application>

这个例子中,使用的效果是wipeLeft,持续时间是1000ms.即同效果的开始到结束用了1000ms.

你还可以通过数据绑定的方法把效果赋给按钮控件的mouseDownEffect属性。mouseDownEffect这个属性是一个效果触发用来指定当用户点击控件时显示效果。前面的例子中,效果使得按钮控件从右到左的擦除显示。

你可以可以使用ActionScript创建,修改和显示效果。你可以为每一个触发配置不同的效果,也可以显示的调用paly()方法来执行效果的显示。ActionScript使得你能够用户的喜好来设定效果,或者根据用户的操作来修改效果。举例:

<?xml version="1.0"?>

<!-- behaviors\AsEffect.mxml -->

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

creationComplete="createEffect(event);" >

<!-- Define effect. -->

<mx:Script>

<![CDATA[

// Import the effect class.

import mx.effects.*;

// Define effect variable.

private var myWL:WipeLeft;

private function createEffect(eventObj:Event):void {

// Create the WipeLeft effect object.

myWL=new WipeLeft();

// Set the effect duration.

// Assign the effects to the targets.

myButton.setStyle('mouseDownEffect', myWL);

myOtherButton.setStyle('mouseDownEffect', myWL);

}

]]>

</mx:Script>

<mx:Button id="myButton" label="Click Me"/>

<mx:Button id="myOtherButton" label="Click Me"/>

</mx:Application>

 

这个例子显示了使用事件触发效果。如果想要效果按照程序规划来显示,那么你可以调用paly()方法。

关于工厂(factory)和实例类

Flex利用两个类的架构,工厂类和实例类来实现效果。

工厂类创建了实例类的对象来展现目标组件的效果。你可以在程序中创建工厂类的实例,通过配置必要的属性来控制效果。你可以把工厂类的实例赋给目标组件的效果触发器:

<!-- Define factory class. -->

<mx:WipeDown id="myWD" duration="1000"/>

<!-- Assign factory class to effect targets. -->

<mx:Button id="myButton" mouseDownEffect="{myWD}"/>

<mx:Button id="myOtherButton" mouseDownEffect="{myWD}"/>

按照规定,工厂类的名字就是效果的名字,比如Zoom或者Fade

实例类实现了效果的逻辑。当一个效果触发,或者你调用了paly()方法来调用效果,工厂类创建了实例类的对象来展现目标组件的效果。当效果结束时,Flex销毁实例对象。假如某个效果对应多个组件,那么工厂类创建多个实例对象,每个目标组件一个。

按照规定,实例类的名字就是效果类命ide加上后缀Instance,比如ZoomInstance或者FadeInstance.

关于Flex效果类的层次结构,可以参考develop guide.这里不介绍了。Flex可用的效果包括:AnimateProperty, Blur, Bissolve, Fade, Glow, Iris, Move, Pause, Resize, Rotate, SoundEffect, WipeLeft, WipeRight,WipeUp,WipeDown, Zoom.具体使用参考开发文档。可用的触发包括如下; addedEffect, creationCompleteEffect, foucusInEffect…参考开发文档。Page565.

MXML中行为的使用

MXML中,你使用触发器的名字作为MXML组件标记中的一个属性来配置组件的显示效果。比如,要配置Button控件的WipeLeft效果,你可以使用mouseDownEffect触发属性作为<mx:Button>一个属性来实现。:

<?xml version="1.0"?>

<!-- behaviors\ButtonWL.mxml -->

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

<!-- Define effect. -->

<mx:WipeLeft id="myWL" duration="1000"/>

<!-- Assign effect to targets. -->

<mx:Button id="myButton" label="Click Me" mouseDownEffect="{myWL}"/>

<mx:Button id="myOtherButton" label="Click Me" mouseDownEffect="{myWL}"/>

</mx:Application>

下个例子中,你将创建两个可变大小的效果的按钮控件,其中一个效果是当用户按下按钮时把按钮的大小扩展10pexels,另外一个效果是当放开鼠标时重新回复到按钮原来的大小。持续时间为200ms.

<?xml version="1.0"?>

<!-- behaviors\ButtonResize.mxml -->

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

<mx:Resize id="myResizeUp"

widthBy="50" heightBy="50"

duration="200"

/>

<mx:Resize id="myResizeDown"

widthBy="-50" heightBy="-50"

duration="200"

/>

<mx:Button id="myButton"

label="Click Me"

mouseDownEffect="{myResizeUp}"

mouseUpEffect="{myResizeDown}"

/>

</mx:Application>

MXML使用数据绑定的行为设计

MXML中你可以使用数据绑定来设置效果的属性。比如,一下的例子就是让用户使用TextInput控件来设定zoomHeightTozoomWidthTo属性。这两个属性分别指定了完成Zoom效果的一个比例。其值在0.01.0之间,默认的为1.0,这个是对象的一般大小:

<?xml version="1.0"?>

<!-- behaviors\DatabindingEffects.mxml -->

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

<mx:Zoom id="mZoom"

zoomHeightTo="{Number(zoomHeightInput.text)}"

zoomWidthTo="{Number(zoomWidthInput.text)}"

/>

<mx:Form>

<mx:FormItem label="Zoom Height:">

<mx:TextInput id="zoomHeightInput" text="1.0" width="30"/>

</mx:FormItem>

<mx:FormItem label="Zoom Width:">

<mx:TextInput id="zoomWidthInput" text="1.0" width="30"/>

</mx:FormItem>

</mx:Form>

<mx:Button label="Mouse Over Me" rollOverEffect="{mZoom}"/>

</mx:Application>

默认的,TextInputtext属性的值为1.0,用户可以自行指定大小。

MXML中使用styles的行为设计

所有的MXML属性对应的效果触发都实现了CSS Styel.因此,你也可以使用<mx:Style>来运用效果。比如,你可以为程序中所有的TExtArea控件设置mouseDownEffect的属性值,你可以使用CSS类型选择器:

<?xml version="1.0"?>

<!-- behaviors\MxmlTypeSel.mxml-->

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

<mx:Style>

TextArea { mouseDownEffect: slowWipe; }

</mx:Style>

<mx:WipeLeft id="slowWipe" duration="5000"/>

<mx:TextArea id="myTA"

text="This TextArea slowly wipes in."

/>

<mx:TextArea id="myTA2"

text="This TextArea control has no effect."

mouseDownEffect="none"

/>

</mx:Application>

          在组件标签中设定的mouseDownEffect属性值重写了<mx:Style>中设定的任何设置。假如你要移除定义在类型选择器中的效果,你可以显示设置任何触发器的值为none.比如:

<mx:TextArea id="myTA" mouseDownEffect="none"/>

你可以可使用类选择器来使用效果:

<?xml version="1.0"?>

<!-- behaviors\ButtonWLClassSel.mxml -->

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

<!-- Define a class selector for a TextArea control -->

<mx:Style>

.textAreaStyle { mouseDownEffect: WipeLeft; }

</mx:Style>

<mx:WipeLeft id="slowWipe" duration="5000"/>

<mx:TextArea id="myTA"

styleName="textAreaStyle"

text="This TextArea control quickly wipes in."

/>

</mx:Application>

利用setSytel()getStyle()使用定义在MXML中的行为

触发器的属性被实现为styles,因此,你可以使用setStyle()getStyle()方法来控制触发器以及他们关联的效果。setStyle方法有一下的定义格式:

setStyle("trigger_name", effect)

trigger_name,是触发器属性的名字,比如mouseDownEffect.

Effect, 表示和触发器管理的效果。Effect的类型属于Effect对象。

getStyle()的设定如下:

getStyle("trigger_name"):return_type

           参数属性同setStyle.

以下的例子显示如何使用getStyle()来使用定义的MXML的行为。其返回一个Effect对象,对性的类型决定与你所指定的效果类型。

<?xml version="1.0"?>

<!-- behaviors\ButtonWLGetStyleMXML.mxml -->

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

<mx:Script>

<![CDATA[

private function displayStyle():void {

var s:String = String(myB.getStyle('mouseDownEffect').duration)

myTA.text = "mouseDownEffect duration: " + s;

}

private function changeStyle(n:Number):void {

myB.getStyle('mouseDownEffect').duration = n;

}

]]>

</mx:Script>

<!-- Set the behavior in MXML. -->

<mx:WipeLeft id="slowWipe" duration="5000"/>

<mx:Button id="myB" label="Click Me" mouseDownEffect="{slowWipe}"/>

<mx:TextArea id="myTA" width="200"/>

<!-- Call getStyle() to return an object of type WipeLeft. -->

<mx:HBox>

<mx:Button label="Get Style" click="displayStyle();"/>

<mx:Button label="Change Style" click="changeStyle(1000);"/>

<mx:Button label="Reset" click="changeStyle(5000);"/>

</mx:HBox>

</mx:Application>

 
内容概要:本文档详细介绍了基于Python的在线二手电子产品回收系统的设计与实现。项目旨在通过构建一个可靠、安全、透明的平台,提高废旧电子产品的回收率,推动资源的合理再利用,提供安全可靠的交易平台,加强环保意识,促进二手市场的发展,并实现数据驱动的智能化服务。项目面临的主要挑战包括废旧电子产品的检测与评估、信息不对称与交易风险、市场需求的预测与定价、用户体验优化及平台的安全性与数据保护。解决方案涵盖智能化评估与回收定价、高效的二手产品处理流程、完善的售后保障体系、创新的市场需求分析、全程透明化与安全性保障以及定制化用户体验。系统采用微服务架构,包括用户管理、商品评估、交易管理、数据分析、支付与结算等模块。项目还涉及前端界面设计、API接口开发、数据库设计与实现、模型训练与优化、部署与应用等方面。 适合人群:具备一定编程基础,特别是对Python和Web开发有一定了解的研发人员,以及对二手电子产品回收和环保事业感兴趣的从业者。 使用场景及目标:①帮助用户方便地将闲置电子产品回收、交易或再利用,提高废旧电子产品的回收率;②通过智能化的数据分析为用户提供价格评估、市场需求分析等服务,提高回收效率;③提供安全可靠的交易平台,确保交易的公平性和安全性;④推动二手市场的健康发展,为消费者提供经济实惠的产品选择;⑤增强公众的环保意识,推动社会向绿色、低碳方向发展。 其他说明:本文档不仅提供了系统的功能模块设计、数据库表结构、API接口规范,还展示了具体代码实现和GUI界面设计,为开发者提供了全面的技术参考。此外,项目强调了数据安全和隐私保护的重要性,确保平台在运行过程中能够有效保护用户信息。项目未来改进方向包括增强模型的精准度、拓展国际市场、提供更多支付和融资选项、跨平台数据集成与分析、更加智能的回收流程以及强化社交化与社区功能。
内容概要:本文档详细介绍了基于C语言和单片机设计的固态继电器驱动空调温控系统,涵盖了从硬件电路设计、程序设计、GUI设计到代码详解的完整流程。项目旨在实现高效精准的温度控制、提升系统可靠性和寿命、灵活的参数设置和人机交互、降低能耗、模块化设计便于扩展与维护,以及促进智能家居与工业自动化发展。项目通过高精度温度采集与滤波算法、固态继电器驱动与保护电路设计、滞环控制算法、多层次软件模块化设计等创新点,确保系统的高效节能、智能化和高可靠性。; 适合人群:具备一定单片机和C语言编程基础的研发人员,尤其是从事嵌入式系统设计、智能家居和工业自动化领域的工程师。; 使用场景及目标:①实现高效精准的温度控制,确保室内温度维持在理想范围;②提升系统可靠性和寿命,减少故障率和维护成本;③支持灵活的参数设置和用户友好的人机交互界面,提升用户体验;④降低能耗,实现节能控制,推动绿色建筑和节能环保产业的发展;⑤通过模块化设计,便于后续功能升级和系统扩展,如远程监控、数据分析等智能化功能。; 其他说明:项目设计充分考虑了实际应用中的挑战,如温度采集的精度与稳定性、电气兼容性、系统响应速度与控制稳定性、软件设计的资源优化与抗干扰等,提出了针对性的解决方案。系统不仅适用于家庭智能空调,还能广泛应用于工业、商业建筑、医疗环境及农业温室等多个领域。未来改进方向包括智能温度预测与自适应控制、多传感器融合技术应用、远程监控与云平台集成、低功耗与绿色节能优化等。通过该系统,不仅能够精确控制室内温度,保障舒适环境,还能有效节能,延长设备使用寿命,具有重要的实际应用价值和推广意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值