2023年6月21日发(作者:)
【软件工程】FlexBuilder教程
一,概述
Flex说话包含了一个丰富的用户界面组件库,MXML(一种基于XML的标记说话)和ActionScript(基于ECMA 262的、强类型面向对象编程说话)。MXML用于排布用户界面和处理应用中其他方面的问题,而ActionScript用来处理用户交互逻辑。因为Flash平台的普及, Flex使开创者能够开创广泛的应用法度榜样。开创者能够应用工业标准(如XML,CSS和SVC)和他们所熟悉的模式和典范来创建应用。Flex的分别协作方法和Flex公用组件模型也使得开创者和界面设计者能更好的进行协作,在靠得住的、易于爱护的架构上临盆出在用户体验方面有冲破性的产品。
Flex Builder(FB)之于MXML就如DREAWEAVER之于HTML。FB实现了代码与界面分开,FLEX的类法度榜样扩大名为*.as,语法与java/c++专门象,FLEX法度榜样文件扩大名为.mxml,事实上确实是拥有专门多专门元素的XML文件。
二,应用MXML组件构建用户界面
MXML 说话支撑两种用户界面组件类型: 控件和容器。容器是包含控件和其他容器的屏幕的矩形区域。控件是表单位素, 如按钮、文本字段和列表框。
能够应用Flex Component ExplorerFlex MXML组件扫瞄对象来查看所有控件的代码和样例。
1,参加常用可视控件: 应用可视控件组织界面,能够定义组件属性供外部拜望
A, 基于文本的控件(Text controls): Label(单行文本显示)、Text(多行文本显示)、TextInput(单行文本显示与输入)、 TextArea(多行行文本显示与输入)和 RichTextEditor
(富文本显示与输入)控件。用于显示文本和/或接收来自用户的文本输入,都有一个 text
属性用于设置要显示的文本。应用 RichTextEditor 控件能够输入文本、编辑文本和设置文本格局。用户经由过程应用位于 RichTextEditor 控件底部的子控件, 应用文本格局和
URL 链接。 B, 基于按钮的控件组件(Button 系列,Form controls):Button(激活时会发出click和buttonDown事宜)、LinkButton(用于打开URL)、CheckBox(标签会被主动裁剪以合适控件界线。)、RadioButton(指由
2,参加基于列表的控件,并猎取数据
基于列表的控件: 是在其连续层次构造内的某些点上扩大 ListBase 类的那些控件。它们包含 ComboBox、List、HorizontalList、DataGrid、Tile、Menu 和 Tree 控件。都可从某数据供给法度榜样的数据获得数据列表。
另: 专门多标准控件 (包含 ColorPicker 和 MenuBar 控件) 也是数据供给法度榜样控件。
能够应用两种方法设置组件的数据供给法度榜样:
1),直截了当在MXML标签中参加数据,将 Array 或 Collection 定义为取得数据供给法度榜样的控件的子标签。该方法具有实施快速的长处, 合适与静态数据一路应用及用于原型设计。
2),应用数据绑定: 应用[Bindable]元数据标签(属性非默认绑定,必须明白的声明被绑定的属性),将控件绑定到应用 ActionScript 定义的现有 Array 或 Collection。
[Bindable]
private var subscriptions:ArrayCollection = new ArrayCollection
(
[
{data:0, label:"Print"},
{data:1, label:"Website"},
]
);
]]>
id="userSubscriptions" rowCount="3" allowMultipleSelection="true" width="100%" dataProvider="{subscriptions}" /> 3, 应用REPEATER: 长短可视控件,类似于编程说话里的For轮回,可在履行期复制其它组件。 [Bindable] public var dp:Array=[1,2,3,4]; ]]> 4, 参加数据验证:数据模型支撑主动数据验证,这就意味着你能够专门便利地应用Flex验证器。as3.0验证的类包为tors.包中有一个基类Validator,其他的类都为其子类: 1),用标签实现验证: //绑定验证对象:source:表示验证的对象,property:表示验证对象的属性 2),用AS编程实现验证 import umberValidator; // 创建验证器 private var v:PhoneNumberValidator = new PhoneNumberValidator(); private function createValidator():void { // 设置验证器 = phoneInput; ty = "text"; } ]]> //triggerEvent:表示对象触发验证事宜的机会(如click,mouseOver等) //requiredFieldError属性 表示必填项没填入数据的时的提示缺点信息 //wrongLengthError:表示输入的数据阿拉伯数字长度小于10时提示的缺点信息 //invalidCharError:表示输入数据不是阿拉伯数字时提示的缺点信息 trigger="{btn}" triggerEvent="click" requiredFieldError="此项为必填" invalidCharError="请输入阿拉伯数字" wrongLengthError="请至少输入请输入10个阿拉伯数字" /> 3),高等用法: 应用正则表达式创建自定义验证器 5, 参加资本(图片,音频,视频,法度榜样):运行时外载和编译时直截了当内嵌两种方法,外载方法要多花一段载入时刻,但应用简单;内嵌方法可直截了当调用资本,但加重了法度榜样的包袱(体积变大年夜,且图片编辑后须要从新编译) 1),Image(丹青)控件: 可外载或内嵌多种富媒体资本: JPEG、GIF、PNG位图、SVG矢量图(只能内嵌) , SWF动画(非Flex的SWF应用法度榜样。),SWF库按钮(Button),SWF库动画(MovieClip), //外载一个富媒体,可应用绝对或者相对路径。 但参加SWF文件时,可用use-network参数指定其应用收集或者本地文件二者之一。 //简单地内嵌一个富媒体.png,.jpg,.gif, .swf(可将嵌入的SWF文件的实例算作 lipAsset 类的实例处理, 不克不及直截了当拜望嵌入的SWF文件的属性或方法。 但可用 LocalConnection以许可SWF之间进行通信。), .SVG(可将嵌入的SVG文件的实例算作Asset类的实例处理。) //在脚本中定义富媒体对象,然后在MXML中能够多次嵌入 [Embed(source="assets/")] [Bindable] public var Logo:Class; ]]> //在脚本中定义图片的scale-9像框缩放功能就能够保持边框的清晰, (扭转嵌入的scale-9 图像的实例会封闭该图像的scale-9功能。)。 [Embed( source="assets/fancy_", scaleGridTop="55", scaleGridBottom="137", scaleGridLeft="57", scaleGridRight="266" )] [Bindable] public var FancyBorderImage:Class; ]]> [Embed(source="assets/", symbol="BadApple")] [Bindable] public var BadApple:Class; ]]> height="151.8"/> 2) 设置翻转的图片:应用 CSS为外不雅外载/内嵌翻转的图像 能够定义一个现有的CSS类型选择器为该类型的所有组件设置外不雅。还能够进一步创建自定义CSS 类。 Button { upSkin: Embed("assets/box_"); overSkin: Embed("assets/"); downSkin: Embed("assets/box_"); } import sset; import .*; [Embed(source="assets/3")] [Bindable] //MP3 的一个新实例 public var Song:Class; //将该实例创建为一个 SoundAsset public var mySong:SoundAsset = new Song() as SoundAsset; public var channel:SoundChannel; //应用 SoundAsset 类的 play() 方法来播放 MP3 文件的实例 public function playSound():void { // 先消音,防止同时多次播放 stopSound(); // 播放该音频,并储备返回的SoundChannel对象停止播放。 channel = (); } public function stopSound():void { // 当音频播放时,调用SoundChannel对象的 stop() 方法以停止播放 if ( channel != null ) (); } ]]> 5), 参加字体: 您欲望在 Flex 应用法度榜样中嵌入一种字体并将它用作基于文本的组件的样式。 下面的示例创建引用嵌入的字体的 font-family 名称的一个类选择器。 接着它会创建一个 Text 控件并将其样式设置为该类选择器。 提示: 您在嵌入字体以节俭文件大年夜小时仅能够从字体添加某些字符, 方法是指定您的 @font-face 声明的 unicode-range 属性。 @font-face { font-family: Copacetix; src: url("assets/"); unicode-range: U+0020-U+0040, /* Punctuation, Numbers */ U+0041-U+005A, /* Upper-Case A-Z */ U+005B-U+0060, /* Punctuation and Symbols */ U+0061-U+007A, /* Lower-Case a-z */ U+007B-U+007E; /* Punctuation and Symbols */ } .MyTextStyle { font-family: Copacetix; font-size: 24pt; } 三,数据绑定 以MXML标记来描述UI,数据绑定(Data binding)来连接数据,如许就真正实现了UI和法度榜样逻辑的分别。Data binding能够一绑多或者多绑一。 1, 在MXML中应用大年夜括号{}语句: 格局为:{源对象.属性}。可直截了当传送给目标对象;高等用法是在{}中包含AS表达式、AS函数或者E4X表达式 2, 在MXML中应用 //用 四,界面构造和导航 容器定义了Flash Player的画图别处的一个矩形区域。子容器包含控件和容器。Container 类是所有 Flex 容器类的全然类。扩大 Container 类的容器添加它们本身的功能以进行子组件构造。Application 容器是的Flex应用法度榜样的独一根部容器, 代表全部 Flash Player 画图别处。 1,构造容器: 应用构造容器可进行用户界面构造。 A, 面板(Panel)容器 显示一个标题栏、一个标题、一个边框及其子级。默认情形下, Panel 容器会对子组件进行垂直构造, 同时能够经由过程将构造属性设置为 "absolute" 或 "horizontal"来覆盖此设置。 B, HDividedBox容器 对子组件进行程度构造, 除了在子级之间插入一个可调剂的瓜分线之外, 它与 HBox 容器专门类似。 VDividedBox 容器对子组件进行垂直构造, 同时也在子级之间插入一个可调剂的瓜分线。 C, 平铺(Tile)容器 以多行或多列的情势分列其子级。 D, 表单(Form)容器 以标准的表单格局分列其子级。 E, ApplicationControlBar 容器 容纳供给全局导航和应用法度榜样敕令的组件, 并能够停靠在 Application 容器的上边沿。 F, ControlBar容器将控件置于 Panel 或 TitleWindow 容器的下边沿。 G, 别的可应用Spacer控件来关心构造。Spacer控件并非容器,而是基于百分比的可用于挤占留空以准确信位的一个弗成见控件。 2, 导航容器: 应用导航容器能够操纵其他容器的多个子级之间的用户移动或导航。导航器容器不克不及直截了当嵌套控件,只能嵌套容器。 A,手风琴(Accordion)容器 定义一个子面板序列, 但一次仅显示一个面板。 若要导航容器, 用户会单击与他们须要拜望的子面板相对应的导航按钮。 应用 Accordion 容器, 用户能够按任何次序拜望子面板以在表单中前后移动。 B, TabNavigator容器 创建和治理一组选项卡, 应用它们可在其子级中心导航。 TabNavigator 容器的子级是其他容器。 TabNavigator 容器为每个子级创建一个选项卡。 当用户选中某个选项卡时, TabNavigator 容器会显示相接洽关系的子级。 C, ViewStack容器 由彼此堆叠在一路的子容器的一个集合构成, 一次只有一个容器是可见的或活动的。 ViewStack 容器不为用户定义切换当前活动容器的内置机制;您必须应用 LinkBar、TabBar、ButtonBar 或 ToggleButtonBar 控件或本身在 ActionScript 中构建逻辑让用户来更换当前活动的子级。 3, 应用容器Containers进行定位构造 定位方法有三种: A, 主动定位:多半Flex容器应用默认预定义的规矩来主动定位你在个中定义的所有的子组件。 B, 应用绝对定位: 用于使控件重叠 C, 应用基于束缚的构造: 能够锚定容器的边沿或者中间点,然后控件就会跟着容器的伸缩而伸缩 Canvas容器,和layout属性为absolute的Application或Panel容器才能进行绝对定位,或束缚构造。 4,应用视图状况(或ViewStack导航容器)进行用户界面切换导航 可认为一个Flex法度榜样或组件定义几种视图状况,然后经由过程改变(切换)视图状况而改变用户界面。(ViewStack导航容器可实现同样后果) 1),设计差不多状况(Base state,Start,currentState=''):确实是在默认状况下设计用户界面。 2),设计视图状况(currentState='SomeState'):在设计模式中,在状况查看(Window > States)上点击新状况/New State 按钮。然后在此状况下编辑的界面即为该视图的对应界面。 3),创建用户行动切换控件: 定义用户变换状况的点击事宜处理器。一样是应用一个LinkButtun,激活currentState='SomeState'以切换到某界面,激活currentState=''以回到默认界面。 五,应用CSS格局化组件 1. 文字反正分列Aligning Text Vertically & Horizontally 样式关于定义Flex应用法度榜样的外不雅和感到 (外不雅) 专门有效。您能够应用它们来更换单一组件的外不雅, 或在所有组件上应用它们。 在 Flex 中应用样式有专门多方法。 某些样式供给更多粒度操纵并能以编程方法被履行。其他样式不像那么灵活, 但可能须要较少的运算。在 Flex 中, 能够应用以下几种方法将样式应用到控件: 1, 应用本地样式定义 2, 应用外部样式表 3, 应用线上样式 4, 应用 setStyle() 方法 六,应用特效丰富用户体验 1, 添加后果 1), 后果是在较短时刻上产生的对组件的更换。 后果的例子有: 淡化组件、调剂组件大年夜小和移动组件。 一种后果与一个触发器相结合才能形成一个行动, 如组件上的鼠标单击、组件获得核心或组件变成可见的。 在 MXML 中, 您将后果应用为控件或容器的属性。 Adobe Flex 供给具有默认属性的一组内置后果。 作为对某些用户或编程操作的响应, 行动使您能够将动画、动作和声音添加到应用法度榜样中。 例如, 您可应用行动在获得核心时弹出对话框, 或是在用户输入无效的值时发生发火声音。 Flex 触发器属性是作为层叠样式表 (CSS) 样式被实施的。 在 Adobe Flex 2 说话参考中, 触发器被列出在标题“后果”的下面。 若要创建行动, 您定义一个具有独一 ID 的特定后果并将它绑定到触发器。 例如, 下面的代码创建两个缩放后果: 一个用于略微缩小组件, 一个用于将组件还原至其原始大年夜小。 这些后果经由过程应用它们的独一 ID 被分派到“按钮”组件上的 mouseDownEffect 和 mouseUpEffect 触发器上。 留意若何将 Panel 容器的 autoLayout 属性设置为 "false"。如许是为了阻拦在按钮改变大年夜小时面板改变大年夜小。 2),应用后果方法和事宜 您能够调用后果上的方法来改变它们播放的方法。 例如, 能够经由过程调用后果的 pause() 方法来暂停后果, 并经由过程应用其 resume() 方法来连续该后果。能够经由过程调用后果的 end() 方法来停止该后果。 当后果开端和后果停止时, 它也会发出 startEffect 和 endEffect 事宜。 您能够监听这些事宜并响应您的事宜状况中的更换。 下面的示例应用“移动”后果的方法和事宜来创建一个简单的游戏。 该游戏的目标是使直升飞机尽可能接近靶而又不撞到它。 靠得越近, 博得的点数越多。 3, 应用过渡增长用户界面切换后果 过渡(transition,变换)是定义在视图状况切换之间播放的一种或多种视觉后果。过渡可不能调换后果;即, 您仍能够将单一后果应用到一个组件, 并经由过程应用一个后果触发器或者 playEffect()方法来调用该后果。创建过渡样例如下: //fromState 属性指定当应用该过渡时您要更换的视图状况 //toState 属性指定您要更换为的视图状况 //effect 属性是对要播放的 Effect 对象的引用 // //后果标签 4, 为用户供给对象提示 Adobe Flex ToolTip 使您能够或许为您的用户供给有赞助的信息。当用户在图形组件上移动鼠标指针时, 会弹出包含文本信息的对象提示。您能够应用对象提示来指导用户完成应用应用法度榜样或自定义它们来供给其他功能。 扩大 UIComponent 类 (该类实现 IToolTipManagerClient 界面) 的每个可视 Flex 组件都支撑 toolTip 属性。您将 toolTip 属性的值设置为一个文本字符串, 同时, 当鼠标指针悬停在该组件上时, 会显示该文本字符串。 尽管长消息专门难读取, 但对对象提示文本的大年夜小不存在任何限制。当对象提示文本达到对象提示框的宽度时, 文本会主动换至下一行。能够在对象提示文本中添加换行符。在 ActionScript 中, 您应用 n 转义的新行字符。在 MXML 标签中, 您应用 XML 实体。 能够经由过程应用层叠样式表 (CSS) 语法或 anager 类更换对象提示文本和对象提示框的外不雅。对对象提示样式的更换有用于当前应用法度榜样中的所有对象提示。 5, 操纵光标 应用Flex光标治理器能够操纵 Flex 应用法度榜样中的光标图像。 例如, 假如应用法度榜样履行的处理须要用户等待, 直到处理完成为止, 则能够将光标更换为某个自定义的光标图像, 比如沙漏, 以使它反应当等待期。 您还能够更换光标以向用户供给反馈, 指导用户能够履行的操作。 例如, 您能够应用一个光标图像来指导用户输入被启用, 而应用另一个光标图像来指导输入被禁用。 CursorManager 类操纵一个光标优先次序列表, 在个中具有最高优先级的光标当前是可见的。 假如光标列表包含具有雷同优先级的多个光标, 则光标治理器会显示比来创建的光标。 1), 应用默认的忙光标 Flex 定义了一个默认的忙光标, 可用来指导应用法度榜样正在处理, 且在应用法度榜样对用户输入作出响应之前, 用户应等待, 直到处理完成。 默认的忙光标是一个动画时钟。 能够应用以下几种方法来操纵忙光标: 下面的示例应用 CursorManager 类的静态 setBusyCursor() 和 removeBusyCursor() 方法, 依照切换按钮的状况显示和隐藏默认的 Flex 忙光标。 2), 应用自定义光标 能够应用 JPEG、GIF、PNG 或 SVG 图像, Sprite 对象或 SWF 文件作为光标图像。 若要应用光标治理器, 您将 Manager 类导入到应用法度榜样中, 然后引用其属性和方法。 下面的示例嵌入一个在 Adobe Flash 中创建的沙漏的 SWF 动画, 并将它用作一个自定义光标。 在该示例中, 创建自定义光标的方法是, 调用 CursorManager 类的 setCursor() 静态方法, 然后将它传送给对您欲望用作自定义光标的嵌入资本的类的引用。 能够经由过程调用 CursorManager 类的 removeCursor() 静态方法并将它传送给 CursorManager 类的 currentCursorID 静态属性来删除活动的自定义光标。 七,应用ActionScript处理事宜 1, 事宜模型与机制 Flex的事宜模型基于DOM3事宜模型。经由过程创建注册事宜监听器(事宜处理法度榜样,事宜处理器,是函数方法用于响应指定的事宜),能够在组件的实例发出某个事宜(如用户何时与界面组件交互, 以及在组件的外不雅或生命周期中何时产生重要的变更, 如组件的创建或破坏或调剂其大年夜小等)时, 对象事宜主动派发此事宜到所有注册过的监听器。 1),事宜流:当一个事宜被派发出来时, 事宜对象从根节点开端自上而下开端扫描display list(如), 一向到目标对象, 检查每个节点是否有响应的监听器。目标对象指的是display list中产闹事宜的对象. 比如: 2), 事宜的派发 Flex中能够经由过程dispatchEvent()方法手工派发事宜, 所有UIComponent的子类都能够调用此方法. 语法: //参数event_type是Event对象的type属性 //函数的返回值老是True. chEvent(new Event("event_type"):Boolean 能够应用此方法派发随便率性事宜, 而不仅仅是用户自定义事宜, 比如: 能够派发一个Button的Click事宜. var result:Boolean = chEvent(new Event()); 在Flex应用中不是必须对新派发的事宜进行处理, 假如触发了一个事宜, 而没有对应的Listener时,Flex忽视此事宜. 假如想给Event对象添加新属性, 就必须连续Event类,然后定义新属性 3), 事宜的传播 事宜触发后, Flex有3个检测事宜监听器的时期, 3个时期的产生的次序如下: A. 捕捉时期:在捕捉时期,Flex在显示列表中检查事宜的祖先是否注册了事宜的监听器. Flex从根节点开端次序而下. 大年夜多半情形中, 根节点是Application对象. 同时, Flex改变事宜的currentTarget值. 缺省情形下, 在现在期,没有容器监听事宜. use_capture参数的值是False,在现在期添加监听的独一方法是在调用add_listener时,传入一个为True值的use_capture参数, 比如: ntListener(_DOWN, customLogEvent, true); 假如是在Mxml中添加监听, Flex设置此参数为False, 没有方法进行修改. 假如设置了use_capture为True, 那么事宜将可不能上浮. 假如既想捕捉又想上浮就必须调用 addEventListener两次. 一次use_capture参数为true, 一次为false; 捕捉专门少应用, 上浮的应用更为广泛. B. 目标时期: 在目标时期, Flex激发事宜的监听法度榜样, 不检查其他的节点. C. 上浮时期:事宜只在bubbles属性为True时才进行上浮. 能够上浮的事宜包含: change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp. 在上浮时期, Flex改变事宜的currentTarget属性, 而target属性是初始派发事宜的对象. 在随便率性一个时期, 节点们都有机会操作事宜. 比如: 用户点击了一个在VBox中的Button,在捕捉时期, Flex检查Application对象(根节点)和VBox是否有监听器处理此事宜. Flex然后在目标时期触发按钮的监听器.在上浮时期, VBox和应用以与捕捉时期相反的次序再次获得机会处理事宜. 在Actionscript3.0中,你能够在随便率性目标节点上注册事宜监听器. 然则部分事宜会被直截了当传给目标节点,比如Socket类. 捕捉时期的节点次序是从父节点到子节点的, 而上浮时期刚好相反. 捕捉事宜缺省是封闭的,也确实是说假如要捕捉事宜, 必须显式指定在捕捉时期进行处理. 每一个Event都有target和currentTarget属性, 赞助跟踪事宜传播的过程. 4), 查询事宜时期 应用事宜的eventPhase能够获得事宜当前的时期, 1): CAPTURE_PHASE 2): AT_TARGET 3): BUBBLING_PHASE 示例: private function determineState(event:MouseEvent):Void { (hase + ":" + ); } 5), 停止传播 应用下面两个函数停止事宜的传播: stopPropagation() stopImmediatePropagation() 2, 创建监听器 组件有Flex供给的内建事宜. 也能够应用派发-监听模型定义本身的事宜监听器, 并指定监听器监听何种事宜. 有三种方法: 1), 内部MXML中的AS函数法: 在MXML的 2), 外部AS文件中的AS函数法:经由过程ActionScript定义注册事宜处理法度榜样: 能够经由过程应用ActionScript 中的 addEventHandler() 等方法来注册事宜处理法度榜样。 可将 addEventHandler() 方法置于 Application 容器的 creationComplete 事宜(在 Application 表单及其子级被初始化之后, 在启动应用法度榜样时产生)的事宜处理法度榜样中。 详见Action Script教程。 3), 代码混写法: 在MXML的控件标签中直截了当完全嵌入监听器(这也称为应用线上事宜处理法度榜样): 如许比较直截了当,代码也较少,但会导致代码专门难扫瞄、爱护和缩放。假如监听器是多个AS语句甚至更复杂的逻辑,不举荐此方法。 六,数据办事器拜望概述 Flex 被设计为能够与专门多类型的办事器打交道,从而供给对本地和远端逻辑的拜望。供给数据拜望的MXML 组件被称之为数据办事器组件(data service components)。MXML 包含了如下几种类型的数据办事器组件: 2. WebService 供给对应用SOAP 的web 办事器的拜望。WebService 也是专门常见的选择,好处是规矩共通,便利不合技巧平台交换材料,缺点则同样是某些复杂数据构造无法随便马虎的交换,在编码与译码的过程中往往会显现不测,例如 Date 的表示方法。以 .NET 来说,应用 web service 应当是再便利只是的选择,只要把 asmx 档案预备好再从 flex client 呼叫即可。 3. RemoteObject(Flash Remoting) 技巧:官方支撑的平台有三种,分别是 Java Coldfusion(但实际上Coldfusion应当只确实是java的subset,它是一种 scripting tag library)与.NET。Flex Data Services 或Macromedia ColdFusion MX 7.0.2经由过程应用AMF协定供给对Java 对象(Java Beans、EJBs、POJOs)的拜望。 4,其它非官方RemoteObject技巧: 因为AMF格局已被非官方反编译,因此有专门多开源的remoting替代筹划: A,AMFPHP: 这是php版的remoting B,OPENAMF: java版的remoting C,Flap: Perl 与Python版的remoting S,FlashORB: 贸易版的remoting替代筹划,今朝支撑java与.net 应用plaine text format的传输方法,经由过程xml, loadVars, loadVariables 等方法 外部XML讀取 Actionscript 3.0 的賣點之一,确实是加強XML讀取的便利性,讀取外部XML是常用的前後端整合手段,而XML節點的操作,比之前AS2用DOM更直觀,能够直截了当運用標籤與屬性名稱訪問節點。 重要參考章節: Reading external XML documents Traversing XML structures Lesson 13: MANIPULATING XML (34 min) 1. Manipulating Client Side Data Using E4X Syntax 2. Creating a Tree Control to Display the XML Data 3. Adding a Change Event to Display Data from the Tree 4. Populating the Shopping Cart with Raw XML Content 5. Working with an XML List Collection 6. Using Conditional Logic to Compare & Update Values 八,WebService Lesson 14: USING WEB SERVICES (25 min) 1. Accessing Web Services 2. Invoking Web Services Methods & Results 3. Using a FaultHandler 4. Call Multiple Methods from One Web Service Object 5. Passing Parameters to Web Services 九,Flex Data Services FDS (Data Service, Messaging) Flex Data Service 是 Flex 2 里新显现的技巧,重要目地是欲望供给更主动的方法来让 client 与 server 交换材料,它的核心实际上仍旧是 AMF 与 RTMP (对,确实是 Flash Media Server 用的那种),部份功能也与 FMS 重叠,但它侧重在 Data Sharing 与 Exchange 这部份。 今朝 FDS 只有 Java 的版本,也确实是 server 端要用 java 写,但 Adobe 传播鼓吹今后会有 FDS for .NET 版。只是好消息是,有一家叫 theMidnightCoders 的公司抢先推出了 FDS 兼容版本,不只同时支撑 AMF0 与 AMF3,更支撑部份 FDS 的功能(主假如材料同步的部份,与server端的冲突处理与材料储存)。 以 .NET 来说,付费的选择中 weborb 确实是今朝最优的选择,价格只有官方版的一半,但功能更完全;而免钱的选择则当非 Fluorine 莫属。 Flex履行以下步调: 1. 编译MXML并产生一个SWF文件 2. 贮藏已编译的MXML文件 3. 向安户端返回SWF文件 宣布你的法度榜样方法一:宣布一个SWF文件 方法二:宣布MXML和AS文件 FDS在你的Java办事器上或者Java容器内运行。以包管在以下几个特点范畴的广泛性 1>多个客户端的数据共享 1. 支撑C2C的数据通信 2. 办事器端数据增长 3. 安户端拜望办事器资本的证实 4. 数据办事日记 2>进步RPC的广泛性 十,其它RemoteObject技巧 现有专门多非官方的开源RemoteObject(Flash Remoting)技巧,风行的办事端(Java、Php、.Net、Perl/Python、Ruby)技巧Flex都已打通,您能够直截了当在Flex/Flash中经由过程RemoteObject直截了当调用 A,AMFPHP: Flash和PHP的整合 AMFPHP B,: Flex调用不合参数类型的.Net WebMethod C,AMF::Perl D,RubyAmf E,与JAVA: F,和ASP的整合:Flash2ASP是能主动生成ASP和AS代码的对象。因此Flash2ASP作后台速度不如AMFphp,但因为国内ASP资本丰富,同时Flash2ASP教程文档具体,也可作为一个选择。 在线版 说明图 55分钟具体应用方法以及留言簿典范视频教程 本地运行版下载(exe) 具体情形 十一, 创建自定义组件 1, Flex是由as类构造实现的。类构造包含了组件类,治理类,数据办事类,和其他用来实现flex功能的类。下图展现的是类构造中flex可视化组件的一部分,关于操纵和容器的部分: 所有的可视化组件连续自UIComponent as类。Flex中非可视化组件也是依附as类构造来实现的。大年夜部分的非可视化组件差不多上Validator,Formatter,或者是Effect 类。 经由过程应用mxml和as说话扩大Flex类构造来创建自定义的组件。组件都连续了父类的属性,方法,行动,风格和后果。 经由过程as创建一个flex组件时,必须连续自一个flex类。类的名称必须和类文件的名称雷同。子类连续了父类的所有属性的和方法。在mxml中应用那个组件时,经由过程应用类名称的标签来引用。例如,类名称是myASButton,文件名则为,在mxml中应用< myASButton>标签来应用组件。 在经由过程mxml创建一个组建时,flex编译器将主动的生成一个as类。mxml文件的名称必须和as类名称雷同。同样,在mxml中应用那个名称标签来应用那个组件。 下图展现了分别经由过程as和mxml创建的Flex Button组件的自定义组件: package { public class MyASButton extends Button { //Override inherited methods and properties. //Define new methods and properties. //Define custom logic in ActionScript. } } //Override inherited methods and properties. //Define new methods and properties. //Define custom logic in ActionScript. 上面的两种实现方法都生成了一个Button类的子类。同样的连续了所有的属性,方法和button类的所有元素。都能够重写类的属性,方法和逻辑。 留意:父类中的变量是不克不及被覆盖,然则能够覆盖经由过程setter和getter方法实现的属性。你能够从新设置这些变量的值。 别的,假如应用mxml创建组建,flex编译器完成了创建一个组件的子类的大年夜部分工作,是以应用mxml创建组件比用as创建组件加倍轻易。 2, 决定是应用mxml照样as创建组件 在创建组件之前须要做的一个重要决定是,应用as照样mxml。由你须要开创应用法度榜样来决定你须要应用什么样的组件。 下面是一些全然的指导方针: mxml和as组件都定义了新的as类。全然上所有能用as完成的自定义组件都能够经由过程mxml来实现。一样来说,关于简单的自定义组建,例如修改已有组建的一些属性和方法,应用mxml要比应用as便利得多。当你在新的组件中应用了其余组建,同时须要应用flex layout容器来进行多个组件的构造设置,那么须要应用mxml来定义。假如你想修改某一个组件的行动,例如一个容器中子元素的构造方法,则应用as。假如你想经由过程创建UIComponent的子类来创建一个全新的可视化组件,则应用as。假如你想创建一个全新的非可视化组件,例如formatter,validator,或者effect,则应用as。留意:Flash Professional 8是不克不及开创AS3.0的组件的,假如要应用AS3.0开创Flex2组件,应当应用Flex Builder IDE。 3, 组件安排 在安排你的mxml或as文件的自定义组件时,一样将这些文件放置在你的应用法度榜样的子目次内,或者一个定义好的as类路径下。 为了保密,你可能不欲望应用源码的情势来安排你的源文件。是以你能够应用swc文件或者共享资本库(RSL)作为用来安排的文件。 Swc文件是Flex组件的一种集合格局。应用swc文件能够便利的在开创人员之间进行交换,如许你应用应用一个文件,而不是专门多mxml,as文件,或者图片和其他资本。更重要的是,swc文件中的swf差不多被编译了,这意味着你不消看着复杂的代码。 Swc文件能够包含多个组件,应用PKZip打包格局将其打包在一路。你能够应用winzip,jar或者任何打包对象来打开那个文件。然则,一样来说不要直截了当在swc外部运行打包在swc里面的swf文件。 创建swc文件,须要应用compc对象,该对象在flex安装目次下的bin目次内。compc对象能够将mxml文件,或as文件,或两种文件一路,打包成swc文件。 要缩小你的swf格局的应用法度榜样的大年夜小,有一种方法是将共享资本打包到文件外部,由client下载并储存在缓存中。这些外部人员能够在法度榜样运行的时刻多次被应用,然则只须要从办事器传输到client端一次。这些文件确实是共享资本库(RSL)。 2023年6月21日发(作者:) 【软件工程】FlexBuilder教程 一,概述 Flex说话包含了一个丰富的用户界面组件库,MXML(一种基于XML的标记说话)和ActionScript(基于ECMA 262的、强类型面向对象编程说话)。MXML用于排布用户界面和处理应用中其他方面的问题,而ActionScript用来处理用户交互逻辑。因为Flash平台的普及, Flex使开创者能够开创广泛的应用法度榜样。开创者能够应用工业标准(如XML,CSS和SVC)和他们所熟悉的模式和典范来创建应用。Flex的分别协作方法和Flex公用组件模型也使得开创者和界面设计者能更好的进行协作,在靠得住的、易于爱护的架构上临盆出在用户体验方面有冲破性的产品。 Flex Builder(FB)之于MXML就如DREAWEAVER之于HTML。FB实现了代码与界面分开,FLEX的类法度榜样扩大名为*.as,语法与java/c++专门象,FLEX法度榜样文件扩大名为.mxml,事实上确实是拥有专门多专门元素的XML文件。 二,应用MXML组件构建用户界面 MXML 说话支撑两种用户界面组件类型: 控件和容器。容器是包含控件和其他容器的屏幕的矩形区域。控件是表单位素, 如按钮、文本字段和列表框。 能够应用Flex Component ExplorerFlex MXML组件扫瞄对象来查看所有控件的代码和样例。 1,参加常用可视控件: 应用可视控件组织界面,能够定义组件属性供外部拜望 A, 基于文本的控件(Text controls): Label(单行文本显示)、Text(多行文本显示)、TextInput(单行文本显示与输入)、 TextArea(多行行文本显示与输入)和 RichTextEditor (富文本显示与输入)控件。用于显示文本和/或接收来自用户的文本输入,都有一个 text 属性用于设置要显示的文本。应用 RichTextEditor 控件能够输入文本、编辑文本和设置文本格局。用户经由过程应用位于 RichTextEditor 控件底部的子控件, 应用文本格局和 URL 链接。 B, 基于按钮的控件组件(Button 系列,Form controls):Button(激活时会发出click和buttonDown事宜)、LinkButton(用于打开URL)、CheckBox(标签会被主动裁剪以合适控件界线。)、RadioButton(指由 2,参加基于列表的控件,并猎取数据 基于列表的控件: 是在其连续层次构造内的某些点上扩大 ListBase 类的那些控件。它们包含 ComboBox、List、HorizontalList、DataGrid、Tile、Menu 和 Tree 控件。都可从某数据供给法度榜样的数据获得数据列表。 另: 专门多标准控件 (包含 ColorPicker 和 MenuBar 控件) 也是数据供给法度榜样控件。 能够应用两种方法设置组件的数据供给法度榜样: 1),直截了当在MXML标签中参加数据,将 Array 或 Collection 定义为取得数据供给法度榜样的控件的子标签。该方法具有实施快速的长处, 合适与静态数据一路应用及用于原型设计。 2),应用数据绑定: 应用[Bindable]元数据标签(属性非默认绑定,必须明白的声明被绑定的属性),将控件绑定到应用 ActionScript 定义的现有 Array 或 Collection。 [Bindable] private var subscriptions:ArrayCollection = new ArrayCollection ( [ {data:0, label:"Print"}, {data:1, label:"Website"}, ] ); ]]> id="userSubscriptions" rowCount="3" allowMultipleSelection="true" width="100%" dataProvider="{subscriptions}" /> 3, 应用REPEATER: 长短可视控件,类似于编程说话里的For轮回,可在履行期复制其它组件。 [Bindable] public var dp:Array=[1,2,3,4]; ]]> 4, 参加数据验证:数据模型支撑主动数据验证,这就意味着你能够专门便利地应用Flex验证器。as3.0验证的类包为tors.包中有一个基类Validator,其他的类都为其子类: 1),用标签实现验证: //绑定验证对象:source:表示验证的对象,property:表示验证对象的属性 2),用AS编程实现验证 import umberValidator; // 创建验证器 private var v:PhoneNumberValidator = new PhoneNumberValidator(); private function createValidator():void { // 设置验证器 = phoneInput; ty = "text"; } ]]> //triggerEvent:表示对象触发验证事宜的机会(如click,mouseOver等) //requiredFieldError属性 表示必填项没填入数据的时的提示缺点信息 //wrongLengthError:表示输入的数据阿拉伯数字长度小于10时提示的缺点信息 //invalidCharError:表示输入数据不是阿拉伯数字时提示的缺点信息 trigger="{btn}" triggerEvent="click" requiredFieldError="此项为必填" invalidCharError="请输入阿拉伯数字" wrongLengthError="请至少输入请输入10个阿拉伯数字" /> 3),高等用法: 应用正则表达式创建自定义验证器 5, 参加资本(图片,音频,视频,法度榜样):运行时外载和编译时直截了当内嵌两种方法,外载方法要多花一段载入时刻,但应用简单;内嵌方法可直截了当调用资本,但加重了法度榜样的包袱(体积变大年夜,且图片编辑后须要从新编译) 1),Image(丹青)控件: 可外载或内嵌多种富媒体资本: JPEG、GIF、PNG位图、SVG矢量图(只能内嵌) , SWF动画(非Flex的SWF应用法度榜样。),SWF库按钮(Button),SWF库动画(MovieClip), //外载一个富媒体,可应用绝对或者相对路径。 但参加SWF文件时,可用use-network参数指定其应用收集或者本地文件二者之一。 //简单地内嵌一个富媒体.png,.jpg,.gif, .swf(可将嵌入的SWF文件的实例算作 lipAsset 类的实例处理, 不克不及直截了当拜望嵌入的SWF文件的属性或方法。 但可用 LocalConnection以许可SWF之间进行通信。), .SVG(可将嵌入的SVG文件的实例算作Asset类的实例处理。) //在脚本中定义富媒体对象,然后在MXML中能够多次嵌入 [Embed(source="assets/")] [Bindable] public var Logo:Class; ]]> //在脚本中定义图片的scale-9像框缩放功能就能够保持边框的清晰, (扭转嵌入的scale-9 图像的实例会封闭该图像的scale-9功能。)。 [Embed( source="assets/fancy_", scaleGridTop="55", scaleGridBottom="137", scaleGridLeft="57", scaleGridRight="266" )] [Bindable] public var FancyBorderImage:Class; ]]> [Embed(source="assets/", symbol="BadApple")] [Bindable] public var BadApple:Class; ]]> height="151.8"/> 2) 设置翻转的图片:应用 CSS为外不雅外载/内嵌翻转的图像 能够定义一个现有的CSS类型选择器为该类型的所有组件设置外不雅。还能够进一步创建自定义CSS 类。 Button { upSkin: Embed("assets/box_"); overSkin: Embed("assets/"); downSkin: Embed("assets/box_"); } import sset; import .*; [Embed(source="assets/3")] [Bindable] //MP3 的一个新实例 public var Song:Class; //将该实例创建为一个 SoundAsset public var mySong:SoundAsset = new Song() as SoundAsset; public var channel:SoundChannel; //应用 SoundAsset 类的 play() 方法来播放 MP3 文件的实例 public function playSound():void { // 先消音,防止同时多次播放 stopSound(); // 播放该音频,并储备返回的SoundChannel对象停止播放。 channel = (); } public function stopSound():void { // 当音频播放时,调用SoundChannel对象的 stop() 方法以停止播放 if ( channel != null ) (); } ]]> 5), 参加字体: 您欲望在 Flex 应用法度榜样中嵌入一种字体并将它用作基于文本的组件的样式。 下面的示例创建引用嵌入的字体的 font-family 名称的一个类选择器。 接着它会创建一个 Text 控件并将其样式设置为该类选择器。 提示: 您在嵌入字体以节俭文件大年夜小时仅能够从字体添加某些字符, 方法是指定您的 @font-face 声明的 unicode-range 属性。 @font-face { font-family: Copacetix; src: url("assets/"); unicode-range: U+0020-U+0040, /* Punctuation, Numbers */ U+0041-U+005A, /* Upper-Case A-Z */ U+005B-U+0060, /* Punctuation and Symbols */ U+0061-U+007A, /* Lower-Case a-z */ U+007B-U+007E; /* Punctuation and Symbols */ } .MyTextStyle { font-family: Copacetix; font-size: 24pt; } 三,数据绑定 以MXML标记来描述UI,数据绑定(Data binding)来连接数据,如许就真正实现了UI和法度榜样逻辑的分别。Data binding能够一绑多或者多绑一。 1, 在MXML中应用大年夜括号{}语句: 格局为:{源对象.属性}。可直截了当传送给目标对象;高等用法是在{}中包含AS表达式、AS函数或者E4X表达式 2, 在MXML中应用 //用 四,界面构造和导航 容器定义了Flash Player的画图别处的一个矩形区域。子容器包含控件和容器。Container 类是所有 Flex 容器类的全然类。扩大 Container 类的容器添加它们本身的功能以进行子组件构造。Application 容器是的Flex应用法度榜样的独一根部容器, 代表全部 Flash Player 画图别处。 1,构造容器: 应用构造容器可进行用户界面构造。 A, 面板(Panel)容器 显示一个标题栏、一个标题、一个边框及其子级。默认情形下, Panel 容器会对子组件进行垂直构造, 同时能够经由过程将构造属性设置为 "absolute" 或 "horizontal"来覆盖此设置。 B, HDividedBox容器 对子组件进行程度构造, 除了在子级之间插入一个可调剂的瓜分线之外, 它与 HBox 容器专门类似。 VDividedBox 容器对子组件进行垂直构造, 同时也在子级之间插入一个可调剂的瓜分线。 C, 平铺(Tile)容器 以多行或多列的情势分列其子级。 D, 表单(Form)容器 以标准的表单格局分列其子级。 E, ApplicationControlBar 容器 容纳供给全局导航和应用法度榜样敕令的组件, 并能够停靠在 Application 容器的上边沿。 F, ControlBar容器将控件置于 Panel 或 TitleWindow 容器的下边沿。 G, 别的可应用Spacer控件来关心构造。Spacer控件并非容器,而是基于百分比的可用于挤占留空以准确信位的一个弗成见控件。 2, 导航容器: 应用导航容器能够操纵其他容器的多个子级之间的用户移动或导航。导航器容器不克不及直截了当嵌套控件,只能嵌套容器。 A,手风琴(Accordion)容器 定义一个子面板序列, 但一次仅显示一个面板。 若要导航容器, 用户会单击与他们须要拜望的子面板相对应的导航按钮。 应用 Accordion 容器, 用户能够按任何次序拜望子面板以在表单中前后移动。 B, TabNavigator容器 创建和治理一组选项卡, 应用它们可在其子级中心导航。 TabNavigator 容器的子级是其他容器。 TabNavigator 容器为每个子级创建一个选项卡。 当用户选中某个选项卡时, TabNavigator 容器会显示相接洽关系的子级。 C, ViewStack容器 由彼此堆叠在一路的子容器的一个集合构成, 一次只有一个容器是可见的或活动的。 ViewStack 容器不为用户定义切换当前活动容器的内置机制;您必须应用 LinkBar、TabBar、ButtonBar 或 ToggleButtonBar 控件或本身在 ActionScript 中构建逻辑让用户来更换当前活动的子级。 3, 应用容器Containers进行定位构造 定位方法有三种: A, 主动定位:多半Flex容器应用默认预定义的规矩来主动定位你在个中定义的所有的子组件。 B, 应用绝对定位: 用于使控件重叠 C, 应用基于束缚的构造: 能够锚定容器的边沿或者中间点,然后控件就会跟着容器的伸缩而伸缩 Canvas容器,和layout属性为absolute的Application或Panel容器才能进行绝对定位,或束缚构造。 4,应用视图状况(或ViewStack导航容器)进行用户界面切换导航 可认为一个Flex法度榜样或组件定义几种视图状况,然后经由过程改变(切换)视图状况而改变用户界面。(ViewStack导航容器可实现同样后果) 1),设计差不多状况(Base state,Start,currentState=''):确实是在默认状况下设计用户界面。 2),设计视图状况(currentState='SomeState'):在设计模式中,在状况查看(Window > States)上点击新状况/New State 按钮。然后在此状况下编辑的界面即为该视图的对应界面。 3),创建用户行动切换控件: 定义用户变换状况的点击事宜处理器。一样是应用一个LinkButtun,激活currentState='SomeState'以切换到某界面,激活currentState=''以回到默认界面。 五,应用CSS格局化组件 1. 文字反正分列Aligning Text Vertically & Horizontally 样式关于定义Flex应用法度榜样的外不雅和感到 (外不雅) 专门有效。您能够应用它们来更换单一组件的外不雅, 或在所有组件上应用它们。 在 Flex 中应用样式有专门多方法。 某些样式供给更多粒度操纵并能以编程方法被履行。其他样式不像那么灵活, 但可能须要较少的运算。在 Flex 中, 能够应用以下几种方法将样式应用到控件: 1, 应用本地样式定义 2, 应用外部样式表 3, 应用线上样式 4, 应用 setStyle() 方法 六,应用特效丰富用户体验 1, 添加后果 1), 后果是在较短时刻上产生的对组件的更换。 后果的例子有: 淡化组件、调剂组件大年夜小和移动组件。 一种后果与一个触发器相结合才能形成一个行动, 如组件上的鼠标单击、组件获得核心或组件变成可见的。 在 MXML 中, 您将后果应用为控件或容器的属性。 Adobe Flex 供给具有默认属性的一组内置后果。 作为对某些用户或编程操作的响应, 行动使您能够将动画、动作和声音添加到应用法度榜样中。 例如, 您可应用行动在获得核心时弹出对话框, 或是在用户输入无效的值时发生发火声音。 Flex 触发器属性是作为层叠样式表 (CSS) 样式被实施的。 在 Adobe Flex 2 说话参考中, 触发器被列出在标题“后果”的下面。 若要创建行动, 您定义一个具有独一 ID 的特定后果并将它绑定到触发器。 例如, 下面的代码创建两个缩放后果: 一个用于略微缩小组件, 一个用于将组件还原至其原始大年夜小。 这些后果经由过程应用它们的独一 ID 被分派到“按钮”组件上的 mouseDownEffect 和 mouseUpEffect 触发器上。 留意若何将 Panel 容器的 autoLayout 属性设置为 "false"。如许是为了阻拦在按钮改变大年夜小时面板改变大年夜小。 2),应用后果方法和事宜 您能够调用后果上的方法来改变它们播放的方法。 例如, 能够经由过程调用后果的 pause() 方法来暂停后果, 并经由过程应用其 resume() 方法来连续该后果。能够经由过程调用后果的 end() 方法来停止该后果。 当后果开端和后果停止时, 它也会发出 startEffect 和 endEffect 事宜。 您能够监听这些事宜并响应您的事宜状况中的更换。 下面的示例应用“移动”后果的方法和事宜来创建一个简单的游戏。 该游戏的目标是使直升飞机尽可能接近靶而又不撞到它。 靠得越近, 博得的点数越多。 3, 应用过渡增长用户界面切换后果 过渡(transition,变换)是定义在视图状况切换之间播放的一种或多种视觉后果。过渡可不能调换后果;即, 您仍能够将单一后果应用到一个组件, 并经由过程应用一个后果触发器或者 playEffect()方法来调用该后果。创建过渡样例如下: //fromState 属性指定当应用该过渡时您要更换的视图状况 //toState 属性指定您要更换为的视图状况 //effect 属性是对要播放的 Effect 对象的引用 // //后果标签 4, 为用户供给对象提示 Adobe Flex ToolTip 使您能够或许为您的用户供给有赞助的信息。当用户在图形组件上移动鼠标指针时, 会弹出包含文本信息的对象提示。您能够应用对象提示来指导用户完成应用应用法度榜样或自定义它们来供给其他功能。 扩大 UIComponent 类 (该类实现 IToolTipManagerClient 界面) 的每个可视 Flex 组件都支撑 toolTip 属性。您将 toolTip 属性的值设置为一个文本字符串, 同时, 当鼠标指针悬停在该组件上时, 会显示该文本字符串。 尽管长消息专门难读取, 但对对象提示文本的大年夜小不存在任何限制。当对象提示文本达到对象提示框的宽度时, 文本会主动换至下一行。能够在对象提示文本中添加换行符。在 ActionScript 中, 您应用 n 转义的新行字符。在 MXML 标签中, 您应用 XML 实体。 能够经由过程应用层叠样式表 (CSS) 语法或 anager 类更换对象提示文本和对象提示框的外不雅。对对象提示样式的更换有用于当前应用法度榜样中的所有对象提示。 5, 操纵光标 应用Flex光标治理器能够操纵 Flex 应用法度榜样中的光标图像。 例如, 假如应用法度榜样履行的处理须要用户等待, 直到处理完成为止, 则能够将光标更换为某个自定义的光标图像, 比如沙漏, 以使它反应当等待期。 您还能够更换光标以向用户供给反馈, 指导用户能够履行的操作。 例如, 您能够应用一个光标图像来指导用户输入被启用, 而应用另一个光标图像来指导输入被禁用。 CursorManager 类操纵一个光标优先次序列表, 在个中具有最高优先级的光标当前是可见的。 假如光标列表包含具有雷同优先级的多个光标, 则光标治理器会显示比来创建的光标。 1), 应用默认的忙光标 Flex 定义了一个默认的忙光标, 可用来指导应用法度榜样正在处理, 且在应用法度榜样对用户输入作出响应之前, 用户应等待, 直到处理完成。 默认的忙光标是一个动画时钟。 能够应用以下几种方法来操纵忙光标: 下面的示例应用 CursorManager 类的静态 setBusyCursor() 和 removeBusyCursor() 方法, 依照切换按钮的状况显示和隐藏默认的 Flex 忙光标。 2), 应用自定义光标 能够应用 JPEG、GIF、PNG 或 SVG 图像, Sprite 对象或 SWF 文件作为光标图像。 若要应用光标治理器, 您将 Manager 类导入到应用法度榜样中, 然后引用其属性和方法。 下面的示例嵌入一个在 Adobe Flash 中创建的沙漏的 SWF 动画, 并将它用作一个自定义光标。 在该示例中, 创建自定义光标的方法是, 调用 CursorManager 类的 setCursor() 静态方法, 然后将它传送给对您欲望用作自定义光标的嵌入资本的类的引用。 能够经由过程调用 CursorManager 类的 removeCursor() 静态方法并将它传送给 CursorManager 类的 currentCursorID 静态属性来删除活动的自定义光标。 七,应用ActionScript处理事宜 1, 事宜模型与机制 Flex的事宜模型基于DOM3事宜模型。经由过程创建注册事宜监听器(事宜处理法度榜样,事宜处理器,是函数方法用于响应指定的事宜),能够在组件的实例发出某个事宜(如用户何时与界面组件交互, 以及在组件的外不雅或生命周期中何时产生重要的变更, 如组件的创建或破坏或调剂其大年夜小等)时, 对象事宜主动派发此事宜到所有注册过的监听器。 1),事宜流:当一个事宜被派发出来时, 事宜对象从根节点开端自上而下开端扫描display list(如), 一向到目标对象, 检查每个节点是否有响应的监听器。目标对象指的是display list中产闹事宜的对象. 比如: 2), 事宜的派发 Flex中能够经由过程dispatchEvent()方法手工派发事宜, 所有UIComponent的子类都能够调用此方法. 语法: //参数event_type是Event对象的type属性 //函数的返回值老是True. chEvent(new Event("event_type"):Boolean 能够应用此方法派发随便率性事宜, 而不仅仅是用户自定义事宜, 比如: 能够派发一个Button的Click事宜. var result:Boolean = chEvent(new Event()); 在Flex应用中不是必须对新派发的事宜进行处理, 假如触发了一个事宜, 而没有对应的Listener时,Flex忽视此事宜. 假如想给Event对象添加新属性, 就必须连续Event类,然后定义新属性 3), 事宜的传播 事宜触发后, Flex有3个检测事宜监听器的时期, 3个时期的产生的次序如下: A. 捕捉时期:在捕捉时期,Flex在显示列表中检查事宜的祖先是否注册了事宜的监听器. Flex从根节点开端次序而下. 大年夜多半情形中, 根节点是Application对象. 同时, Flex改变事宜的currentTarget值. 缺省情形下, 在现在期,没有容器监听事宜. use_capture参数的值是False,在现在期添加监听的独一方法是在调用add_listener时,传入一个为True值的use_capture参数, 比如: ntListener(_DOWN, customLogEvent, true); 假如是在Mxml中添加监听, Flex设置此参数为False, 没有方法进行修改. 假如设置了use_capture为True, 那么事宜将可不能上浮. 假如既想捕捉又想上浮就必须调用 addEventListener两次. 一次use_capture参数为true, 一次为false; 捕捉专门少应用, 上浮的应用更为广泛. B. 目标时期: 在目标时期, Flex激发事宜的监听法度榜样, 不检查其他的节点. C. 上浮时期:事宜只在bubbles属性为True时才进行上浮. 能够上浮的事宜包含: change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp. 在上浮时期, Flex改变事宜的currentTarget属性, 而target属性是初始派发事宜的对象. 在随便率性一个时期, 节点们都有机会操作事宜. 比如: 用户点击了一个在VBox中的Button,在捕捉时期, Flex检查Application对象(根节点)和VBox是否有监听器处理此事宜. Flex然后在目标时期触发按钮的监听器.在上浮时期, VBox和应用以与捕捉时期相反的次序再次获得机会处理事宜. 在Actionscript3.0中,你能够在随便率性目标节点上注册事宜监听器. 然则部分事宜会被直截了当传给目标节点,比如Socket类. 捕捉时期的节点次序是从父节点到子节点的, 而上浮时期刚好相反. 捕捉事宜缺省是封闭的,也确实是说假如要捕捉事宜, 必须显式指定在捕捉时期进行处理. 每一个Event都有target和currentTarget属性, 赞助跟踪事宜传播的过程. 4), 查询事宜时期 应用事宜的eventPhase能够获得事宜当前的时期, 1): CAPTURE_PHASE 2): AT_TARGET 3): BUBBLING_PHASE 示例: private function determineState(event:MouseEvent):Void { (hase + ":" + ); } 5), 停止传播 应用下面两个函数停止事宜的传播: stopPropagation() stopImmediatePropagation() 2, 创建监听器 组件有Flex供给的内建事宜. 也能够应用派发-监听模型定义本身的事宜监听器, 并指定监听器监听何种事宜. 有三种方法: 1), 内部MXML中的AS函数法: 在MXML的 2), 外部AS文件中的AS函数法:经由过程ActionScript定义注册事宜处理法度榜样: 能够经由过程应用ActionScript 中的 addEventHandler() 等方法来注册事宜处理法度榜样。 可将 addEventHandler() 方法置于 Application 容器的 creationComplete 事宜(在 Application 表单及其子级被初始化之后, 在启动应用法度榜样时产生)的事宜处理法度榜样中。 详见Action Script教程。 3), 代码混写法: 在MXML的控件标签中直截了当完全嵌入监听器(这也称为应用线上事宜处理法度榜样): 如许比较直截了当,代码也较少,但会导致代码专门难扫瞄、爱护和缩放。假如监听器是多个AS语句甚至更复杂的逻辑,不举荐此方法。 六,数据办事器拜望概述 Flex 被设计为能够与专门多类型的办事器打交道,从而供给对本地和远端逻辑的拜望。供给数据拜望的MXML 组件被称之为数据办事器组件(data service components)。MXML 包含了如下几种类型的数据办事器组件: 2. WebService 供给对应用SOAP 的web 办事器的拜望。WebService 也是专门常见的选择,好处是规矩共通,便利不合技巧平台交换材料,缺点则同样是某些复杂数据构造无法随便马虎的交换,在编码与译码的过程中往往会显现不测,例如 Date 的表示方法。以 .NET 来说,应用 web service 应当是再便利只是的选择,只要把 asmx 档案预备好再从 flex client 呼叫即可。 3. RemoteObject(Flash Remoting) 技巧:官方支撑的平台有三种,分别是 Java Coldfusion(但实际上Coldfusion应当只确实是java的subset,它是一种 scripting tag library)与.NET。Flex Data Services 或Macromedia ColdFusion MX 7.0.2经由过程应用AMF协定供给对Java 对象(Java Beans、EJBs、POJOs)的拜望。 4,其它非官方RemoteObject技巧: 因为AMF格局已被非官方反编译,因此有专门多开源的remoting替代筹划: A,AMFPHP: 这是php版的remoting B,OPENAMF: java版的remoting C,Flap: Perl 与Python版的remoting S,FlashORB: 贸易版的remoting替代筹划,今朝支撑java与.net 应用plaine text format的传输方法,经由过程xml, loadVars, loadVariables 等方法 外部XML讀取 Actionscript 3.0 的賣點之一,确实是加強XML讀取的便利性,讀取外部XML是常用的前後端整合手段,而XML節點的操作,比之前AS2用DOM更直觀,能够直截了当運用標籤與屬性名稱訪問節點。 重要參考章節: Reading external XML documents Traversing XML structures Lesson 13: MANIPULATING XML (34 min) 1. Manipulating Client Side Data Using E4X Syntax 2. Creating a Tree Control to Display the XML Data 3. Adding a Change Event to Display Data from the Tree 4. Populating the Shopping Cart with Raw XML Content 5. Working with an XML List Collection 6. Using Conditional Logic to Compare & Update Values 八,WebService Lesson 14: USING WEB SERVICES (25 min) 1. Accessing Web Services 2. Invoking Web Services Methods & Results 3. Using a FaultHandler 4. Call Multiple Methods from One Web Service Object 5. Passing Parameters to Web Services 九,Flex Data Services FDS (Data Service, Messaging) Flex Data Service 是 Flex 2 里新显现的技巧,重要目地是欲望供给更主动的方法来让 client 与 server 交换材料,它的核心实际上仍旧是 AMF 与 RTMP (对,确实是 Flash Media Server 用的那种),部份功能也与 FMS 重叠,但它侧重在 Data Sharing 与 Exchange 这部份。 今朝 FDS 只有 Java 的版本,也确实是 server 端要用 java 写,但 Adobe 传播鼓吹今后会有 FDS for .NET 版。只是好消息是,有一家叫 theMidnightCoders 的公司抢先推出了 FDS 兼容版本,不只同时支撑 AMF0 与 AMF3,更支撑部份 FDS 的功能(主假如材料同步的部份,与server端的冲突处理与材料储存)。 以 .NET 来说,付费的选择中 weborb 确实是今朝最优的选择,价格只有官方版的一半,但功能更完全;而免钱的选择则当非 Fluorine 莫属。 Flex履行以下步调: 1. 编译MXML并产生一个SWF文件 2. 贮藏已编译的MXML文件 3. 向安户端返回SWF文件 宣布你的法度榜样方法一:宣布一个SWF文件 方法二:宣布MXML和AS文件 FDS在你的Java办事器上或者Java容器内运行。以包管在以下几个特点范畴的广泛性 1>多个客户端的数据共享 1. 支撑C2C的数据通信 2. 办事器端数据增长 3. 安户端拜望办事器资本的证实 4. 数据办事日记 2>进步RPC的广泛性 十,其它RemoteObject技巧 现有专门多非官方的开源RemoteObject(Flash Remoting)技巧,风行的办事端(Java、Php、.Net、Perl/Python、Ruby)技巧Flex都已打通,您能够直截了当在Flex/Flash中经由过程RemoteObject直截了当调用 A,AMFPHP: Flash和PHP的整合 AMFPHP B,: Flex调用不合参数类型的.Net WebMethod C,AMF::Perl D,RubyAmf E,与JAVA: F,和ASP的整合:Flash2ASP是能主动生成ASP和AS代码的对象。因此Flash2ASP作后台速度不如AMFphp,但因为国内ASP资本丰富,同时Flash2ASP教程文档具体,也可作为一个选择。 在线版 说明图 55分钟具体应用方法以及留言簿典范视频教程 本地运行版下载(exe) 具体情形 十一, 创建自定义组件 1, Flex是由as类构造实现的。类构造包含了组件类,治理类,数据办事类,和其他用来实现flex功能的类。下图展现的是类构造中flex可视化组件的一部分,关于操纵和容器的部分: 所有的可视化组件连续自UIComponent as类。Flex中非可视化组件也是依附as类构造来实现的。大年夜部分的非可视化组件差不多上Validator,Formatter,或者是Effect 类。 经由过程应用mxml和as说话扩大Flex类构造来创建自定义的组件。组件都连续了父类的属性,方法,行动,风格和后果。 经由过程as创建一个flex组件时,必须连续自一个flex类。类的名称必须和类文件的名称雷同。子类连续了父类的所有属性的和方法。在mxml中应用那个组件时,经由过程应用类名称的标签来引用。例如,类名称是myASButton,文件名则为,在mxml中应用< myASButton>标签来应用组件。 在经由过程mxml创建一个组建时,flex编译器将主动的生成一个as类。mxml文件的名称必须和as类名称雷同。同样,在mxml中应用那个名称标签来应用那个组件。 下图展现了分别经由过程as和mxml创建的Flex Button组件的自定义组件: package { public class MyASButton extends Button { //Override inherited methods and properties. //Define new methods and properties. //Define custom logic in ActionScript. } } //Override inherited methods and properties. //Define new methods and properties. //Define custom logic in ActionScript. 上面的两种实现方法都生成了一个Button类的子类。同样的连续了所有的属性,方法和button类的所有元素。都能够重写类的属性,方法和逻辑。 留意:父类中的变量是不克不及被覆盖,然则能够覆盖经由过程setter和getter方法实现的属性。你能够从新设置这些变量的值。 别的,假如应用mxml创建组建,flex编译器完成了创建一个组件的子类的大年夜部分工作,是以应用mxml创建组件比用as创建组件加倍轻易。 2, 决定是应用mxml照样as创建组件 在创建组件之前须要做的一个重要决定是,应用as照样mxml。由你须要开创应用法度榜样来决定你须要应用什么样的组件。 下面是一些全然的指导方针: mxml和as组件都定义了新的as类。全然上所有能用as完成的自定义组件都能够经由过程mxml来实现。一样来说,关于简单的自定义组建,例如修改已有组建的一些属性和方法,应用mxml要比应用as便利得多。当你在新的组件中应用了其余组建,同时须要应用flex layout容器来进行多个组件的构造设置,那么须要应用mxml来定义。假如你想修改某一个组件的行动,例如一个容器中子元素的构造方法,则应用as。假如你想经由过程创建UIComponent的子类来创建一个全新的可视化组件,则应用as。假如你想创建一个全新的非可视化组件,例如formatter,validator,或者effect,则应用as。留意:Flash Professional 8是不克不及开创AS3.0的组件的,假如要应用AS3.0开创Flex2组件,应当应用Flex Builder IDE。 3, 组件安排 在安排你的mxml或as文件的自定义组件时,一样将这些文件放置在你的应用法度榜样的子目次内,或者一个定义好的as类路径下。 为了保密,你可能不欲望应用源码的情势来安排你的源文件。是以你能够应用swc文件或者共享资本库(RSL)作为用来安排的文件。 Swc文件是Flex组件的一种集合格局。应用swc文件能够便利的在开创人员之间进行交换,如许你应用应用一个文件,而不是专门多mxml,as文件,或者图片和其他资本。更重要的是,swc文件中的swf差不多被编译了,这意味着你不消看着复杂的代码。 Swc文件能够包含多个组件,应用PKZip打包格局将其打包在一路。你能够应用winzip,jar或者任何打包对象来打开那个文件。然则,一样来说不要直截了当在swc外部运行打包在swc里面的swf文件。 创建swc文件,须要应用compc对象,该对象在flex安装目次下的bin目次内。compc对象能够将mxml文件,或as文件,或两种文件一路,打包成swc文件。 要缩小你的swf格局的应用法度榜样的大年夜小,有一种方法是将共享资本打包到文件外部,由client下载并储存在缓存中。这些外部人员能够在法度榜样运行的时刻多次被应用,然则只须要从办事器传输到client端一次。这些文件确实是共享资本库(RSL)。
发布评论