Flex 自定义组件要重写的方法
- 格式:docx
- 大小:21.37 KB
- 文档页数:5
flex属性总结(全)⼀.⽗元素属性1.display:flex;(定义了⼀个flex容器)2. flex-direction(决定主轴的⽅向)row(默认值,⽔平从左到右)colunm(垂直从上到下)row-reverse(⽔平从右到左)column-reverse(垂直从下到上)3. flex-wrap(定义如何换⾏)nowrap(默认值,不换⾏)wrap(换⾏)wrap-reverse(换⾏,且颠倒⾏顺序,第⼀⾏在下⽅)4.flex-flow(属性是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为row nowrap)5. justify-content(设置或检索弹性盒⼦元素在主轴(横轴)⽅向上的对齐⽅式)flex-start(默认值、弹性盒⼦元素将向⾏起始位置对齐)flex-end(弹性盒⼦元素将向⾏结束位置对齐)center(弹性盒⼦元素将向⾏中间位置对齐。
该⾏的⼦元素将相互对齐并在⾏中居中对齐)space-between(弹性盒⼦元素会平均地分布在⾏⾥)space-around(弹性盒⼦元素会平均地分布在⾏⾥,两端保留⼦元素与⼦元素之间间距⼤⼩的⼀半)6.align-items(设置或检索弹性盒⼦元素在侧轴(纵轴)⽅向上的对齐⽅式)flex-start(弹性盒⼦元素的侧轴(纵轴)起始位置的边界紧靠住该⾏的侧轴起始边界)flex-end(弹性盒⼦元素的侧轴(纵轴)起始位置的边界紧靠住该⾏的侧轴结束边界)center(弹性盒⼦元素在该⾏的侧轴(纵轴)上居中放置。
(如果该⾏的尺⼨⼩于弹性盒⼦元素的尺⼨,则会向两个⽅向溢出相同的长度))baseline(如弹性盒⼦元素的⾏内轴与侧轴为同⼀条,则该值与flex-start等效。
其它情况下,该值将参与基线对齐。
)stretch(如果指定侧轴⼤⼩的属性值为'auto',则其值会使项⽬的边距盒的尺⼨尽可能接近所在⾏的尺⼨,但同时会遵照'min/max-width/height'属性的限制)7.align-content(设置或检索弹性盒堆叠伸缩⾏的对齐⽅式)flex-start(各⾏向弹性盒容器的起始位置堆叠。
flex 自定义组件实现一个自定义组件如果要创建一个自定义组件,你需要重写UIComponent类的某些方法,最少需要重写如下方法:构造函数, createChildren(), commitProperties(), measure(), layoutChrome(), updateDisplayList() 。
基础语句结构如下:package myComponents{public class MyComponent extends UIComponent{ .... }}注意包名与你的磁盘目录结构一致。
接下来一一讲解每个方法的重写。
构造函数示例如下:public function 类名() {super();}注意,AS3中构造函数不支持重载。
createChildren()此方法的作用是在此自定义组件中创建子组件。
此方法不用你去调用,Flex在你将此自定义组件使用addChild方法加入到父组件时自动调用。
示例如下:// Declare two variables for the component children.private var text_mc:TextArea;private var mode_mc:Button;override protected function createChildren():void {// Call the createChildren() method of the superclass.super.createChildren();// Test for the existence of the children before creating them.// This is optional, but do this so a subclass can create a different// child.if (!text_mc) {text_mc = new TextArea();text_mc.explicitWidth = 80;text_mc.editable = false;text_mc.addEventListener("change", handleChangeEvent);// Add the child component to the custom component.addChild(text_mc);}// Test for the existence of the children before creating them.if (!mode_mc) {mode_mc = new Button();mode_bel = "Toggle Editing";mode_mc.addEventListener("click", handleClickEvent);// Add the child component to the custom component.addChild(mode_mc);}}上例使用createChildren()在此自定义组件中加入了一个Label和一个Button。
flex 的用法“flex”的用法“flex”是一种用于实现响应式布局的CSS工具。
它是“Flexible Box Layout”的缩写,也称为flexbox。
flexbox提供了一种灵活的方式来布置、对齐和分布元素,以适应不同的屏幕尺寸和设备类型。
在本文中,我们将一步一步回答以下关于“flex”的用法的问题:1. 什么是“flex”?2. 如何使用"flex"创建一个简单的布局?3. 如何在flex容器和flex项目中设置属性?4. 如何进行flex项目的对齐和分布?5. 如何在媒体查询中使用“flex”?6. 一些常见的“flex”应用示例。
7. “flex”的浏览器兼容性。
1. 什么是“flex”?“flex”是一种CSS布局技术,用于创建响应式布局。
它基于flexbox模型,其中包含一个flex容器和flex项目。
flex容器是一个包含flex项目的容器,而flex项目则是flex容器中的子元素。
2. 如何使用"flex"创建一个简单的布局?要创建一个简单的flex布局,首先需要创建一个flex容器。
我们使用`display: flex;`来将一个元素设置为flex容器。
接下来,我们可以使用其他属性来设置容器的方向、换行、对齐等属性。
css.container {display: flex;flex-direction: row;justify-content: space-between;align-items: center;}在上面的示例中,我们将一个元素的类名设置为“container”,然后使用`display: flex;`将其设置为flex容器。
接下来,我们使用`flex-direction: row;`设置容器内项目的排列方向为水平方向,使用`justify-content: space-between;`设置项目之间的间距,使用`align-items: center;`设置项目在容器中的垂直方向上的对齐方式。
1.父元素id为flex,子元素class为items#flex {width: 100%;height: 100%;display: flex;padding:15px;padding-top: 200px;border: 1px solid red;box-sizing: border-box;}#flex .items {width: 18%;border: 1px solid blue;height: 200px;}效果如下图2.flex-direction 在flex容器里的所有的block元素的流动方向row 默认,从左到右column 从上到下row-reverse 从右到左column-reverse 从上到下父元素添加flex-direction: row;父元素添加flex-direction:row-reverse父元素添加flex-direction:column父元素添加flex-direction:column-reverse3.flex-wrap 控制如果当前行的位置不足时,是否换行,默认是不换行,会一直在一行中挤压,会改变在该行元素的宽度,将其排在一行之中nowrap 不换行wrap 换行,空间不足,就向下另起一行。
wrap-reverse 换行,与wrap不同的是,这个是向当前行的上面另起一行。
注意:flex-direction和flex-wrap经常一起使用所有有个缩写属性flex-flow:flex-direction flex-wrap。
父元素添加flex-flow:row nowrap;父元素添加flex-flow:row wrap;父元素添加flex-flow:row wrap-reverse;4.justify-content主轴的对齐方式,元素在容器中的对齐方式,与左对齐,右对齐,居中对齐类似取值:flex-start 靠近主轴的开始方向,如果从左到右就靠左,相反就靠右。
react17 重写reactelement的创建函数-回复如何重写React 17 中ReactElement 的创建函数React 17 是React.js 的最新版本,它引入了一些重大的变化,其中一个变化就是对ReactElement 的创建函数进行了重写。
在之前的版本中,ReactElement 是通过React.createElement 方法来创建的,但在React 17 中,它使用了一种新的方式来创建。
本文将介绍如何重写React 17 中ReactElement 的创建函数。
I. 了解ReactElement 的概念在深入研究ReactElement 的创建函数之前,我们首先需要了解ReactElement 的概念。
ReactElement 是React.js 中的最小构建块,它用于定义组件结构和信息。
它是一个JavaScript 对象,包含了组件类型、属性、子组件等。
ReactElement 可包含的属性有以下几个重要的字段:1. type:表示组件类型,可以是原生HTML 标签名,也可以是自定义组件。
2. props:表示组件的属性,即传递给组件的数据。
3. key:用于给列表中的每个元素分配一个唯一的标识,用于优化列表的渲染性能。
4. ref:用于获取组件实例或DOM 元素。
在React 17 中,ReactElement 的创建方式发生了变化,我们需要手动调用一个新的函数来创建ReactElement。
II. 重写ReactElement 的创建函数React 17 中重写ReactElement 的创建函数可以依次进行以下步骤:1. 导入React 模块首先,我们需要导入React 模块,以便在我们的代码中使用它提供的函数和类。
javascriptimport React from 'react';2. 创建一个函数来替代React.createElement在React 17 中,我们需要手动创建一个函数来替代React.createElement。
Flex原理1.事件的原理分为三个阶段:捕获、目标、冒泡事件的起源是跟结点stage 直到发生事件的对象,之后又向相反的方向回到stageStage->obj :捕获阶段寻找obj的过程:目标阶段Obj->stage:冒泡阶段节点:stage->application-> 容器(panel等)->obj;2. data 绑定原理[Bindable(event="propertyChange")]。
(默认的绑定)Flex组件默认监听了propertyChange 事件;3. flex通信原理:3.1过程:通道-》端点-》消息-》服务-》目的地-》适配器3.2 通信的组件:. RemoteObject –远程调用• HTTPService –http代理• WebService –http代理• Producer –消息• Consumer –消息3.3 原理BlazeDS :是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术图解:3.1端点(Endpoint) (在MessageBrokerServlet中实现)。
endpoint,其默认形式是/messagebroker/amf通道类型:amf Channel(速度快)、httpChannel(二进制无压缩的)等消息通过channel传到endPoint ,Channel 和endpoint的编码格式必须一致比如都用amf的3.2. messgeBroker(消息代理人)messgeBroker 将消息根据(destination)服务请求的种类,传给不同的服务,服务再传到对应的服务的destination3.3.Service and destination 类别remoteService->remoteServiceDestination(RomoteObject 对象)->remote-config.xmlhttpproxyService->httpproxyserviceDestination(httpService\webService 对象)->proxy-config.xmlmessageservice->messageDestination(producer\consumer 对象)->message-config.xmldestination:目标其实是一个请求的目标:对于常用的远程方法调用来说,其目标(destination)就是某个特定的java服务,或者某个特定的配置好的Java类对于代理目标来说,则是定义好的代理种类,比如说普通HTTP代理还是基于WebService的代理对于消息目标来说,则是某个特定的消息服务种类3.4.AdapterRemote->javaadapterProxy->httproxyAdaper\soapadaperMessage->jms or as(客户端交换信息)4. flex 配置Flex socket 通信1.DataGrid1.dataGrid 数据的处理itemClick 事件:event:ListEvent;(var grid:DataGrid= event.target as DataGrid)所点击列的表头:grid.columns[event.columnIndex].headerText;列索引:event.columnIndex;行索引:event.rowIndex;选中的行数据:grid.selectedItem选中的单元格数据:grid.selectedItem[grid.columns[e.columnIndex].dataFiled]2. DataGrid 数据的移动方法:grid.removeItemAt;grid.addItemAt;3. Mxml中引入xml文件(利用HTTPService)可以作为dataGrid的数据源实例:<mx:HTTPService id="simpletest"url="assets\photoFood.xml"result="photoColl=stResult.list.food"/>注意:private var photoColl:arrayCollection;或者用监听方式取回结果:Private function onResult(event:ResultEvent):void{This. photocell=event.result.list.food ;}photoFood.xml:<list><food><food_name>Artichoke Dip</food_name><photo>artichokeDip.jpg</photo></food><food><food_name>Bread Pudding</food_name><photo>breadPudding.jpg</photo></food><food><food_name>Cheesecake</food_name><photo>cheesecake.jpg</photo></food></list>4.dataGrid 的itemReader 可以是自定义的任何组件;rendererIsEditor="true" :渲染的组件可以编辑,并且编辑后的值可以返回到datagrideditorDataField="value"(默认为“text”):渲染器要编辑的属性5.ArrayCollection的过滤器:实例:利用combobox控制数据的显示private function myFilter():void{if(this.myCom.selectedItem.toString()=="ALL"){this.reviewList.filterFunction=null;}else{this.reviewList.filterFunction=myFunc;}//refresh() 必须添加的方法this.reviewList.refresh();}//过滤器的筛选规则返回值为boolean,参数为容器的一个对象private function myFunc(item:Object):Boolean{return(item.rating.toString()==this.myCom.selectedItem.toString());}<mx:ComboBox dataProvider="{}" change="myFilter()" id="myCom"/>Private var com:ArrayCollection=new ArrayCollection(["1","2","3","4","5","ALL"]);DataGrid颜色专题总结:1。
flex4 读书笔记chapter 3,最好的特点分析和flex3和flex4版本比较学习教程2011-06-01 18:11:30| 分类:flex | 标签:|字号大中小订阅源地址:/selina_1113/blog/item/20030438084a3bf814cecbc9.html1、默认情况下,swf文件只能向swf文件所在的域提出http或其它网络请求。
如果要仿问swf文件所在的不同的域,即要在目标域的根目录中放置一个crossdomain.xml文件,设置当前服务器接受的域。
2、mxmlc可以把mxml、as、swc、rsl等文件打包成一个swf文件,而compc可以把mxml、as等编译成swc或rsl文件。
3、部署文件时,请确保rsl等资源文件是否存在于服务器中以及swf文件指向的rsl的路径。
4、flashbuilder使用swfobject2类库把swf放在html中。
5、在网络安全沙箱内,flash除了ShareObjects外,不能访问本地的磁盘及资源。
在得不到用户允许的情况下,不能从摄像头或耳麦中获取信息并发送到网络。
6、swf只能访问网络或本地资源两种中的一种。
也就是说要么你把swf设置为只能访问网络,要么把swf设置为只能访问本地资源。
设置的选项为编译时的use-network=true/false。
默认为true。
7、flex只持基于组件的开发模型。
常规的开发方法是先扩展一些基本的UI组件并把你需要的功能封装在上面,然后再在UI中组装起来。
8、在开发过程中,你会使用自已开发的自定义组件或外部的自定义组件。
默认情况下flashbuilder 在项目src及其子目录下寻找自定义组件。
如果你需要使用别的地方的自定义组件,你可以设置source path。
flashbuilder除了在src目录下寻找组件外,还会在source path下寻找自定义组件寻找的顺序按source path顺序寻找。
vue组件element并重写方法示例及概述说明1. 引言1.1 概述在前端开发中,Vue.js是一种流行的JavaScript框架,它提供了构建用户界面的灵活且高效的方式。
而Element组件库是基于Vue.js开发的一套UI框架,具有各种常用的组件和工具,可以快速搭建美观、易用的界面。
本文主要介绍如何在Vue项目中使用Element组件,并重写其中的方法。
通过对Element组件进行重写,我们可以根据项目需求更好地定制化和优化这些组件,以满足特定功能和样式上的需求。
同时,本文还会详细讲解示例及步骤说明,并提供相关注意事项和性能优化建议。
1.2 文章结构本文分为五个部分:引言、Vue组件Element介绍、示例及步骤说明、重写方法时需要考虑的注意事项以及结论与总结。
在引言部分,我们将简单介绍本文的内容和目标,并向读者阐述为什么重写Vue 组件中的方法是有意义和必要的。
本文旨在帮助读者更深入地理解如何使用Element组件库,并通过对其方法进行重写来满足特定需求。
通过学习本文,读者将能够轻松地集成和配置Element 组件库到Vue项目中,并了解为什么重写Vue组件的方法是一个优秀的选择,并掌握重写过程中需要考虑的注意事项和技巧。
同时,本文还将总结并讨论重写Vue组件Element方法的优势,以及进一步研究和发展的可能方向。
通过阅读本文,读者将能够在实际项目中灵活应用Element组件库,并根据需求进行必要的二次开发。
2. Vue组件Element介绍:2.1 Element组件库概述Vue组件Element是一个基于Vue.js的UI组件库,提供了丰富的可复用组件和强大的功能,以帮助开发者快速构建现代化的Web应用程序。
Element组件库不仅具有美观和易于使用的设计风格,还提供了大量的UI组件,如表单、导航、布局等,可以满足各种应用程序的需求。
此外,Element还支持国际化和自定义主题,使得开发者可以根据项目需求进行灵活定制。
Flex综合测试题1)下面关于RIA的概念说法错误的是(C )A)RIA将桌面应用程序的强交互性与传统Web应用灵活的结合起来B)RIA的富客户端采用异步的方式同服务器端通讯C)RIA在通讯中会传输所有的数据,增加了数据的信息量D)RIA可以整合声音,视频等桌面元素2)一下关于Flex程序说法不正确的是( D )A)Flex程序由*.MXML、*.as、*.css文件组成B)MXML语言专用于Flex程序中,是用于描述界面表现的一种XML标记语言C)ActionScript是针对Adobe Flash Player运行环境的编程语言D)MXML提供了一系列标签供用户使用,MXML不区分大小写3)一下关于Applicaton布局的说话,错误的是( D )A)Application默认的布局是BasicLayoutB)HorizonatalLayout表示水平布局方式C)VertiacalLayout表示竖直布局方式D)TileLayout表示主题布局方式4)关于一下代码的说法,不正确的是(A )<mx:StringValidator source="{textPwd}" Property="text" Trigger="{submit}"triggerEvent="click"/>A)当用户单击提交按钮时,会触发StringValidator验证对象B)当用户单击id为sumit的按钮时,会触发StringValidator验证对象C)StringValidator验证对象验证的目标是id为txtPwd的输入组件D)StringValidator验证对象验证的是txtPwd的text属性5)下面不是为了实现RIA的技术是(A )A)XMTLB)AJaxC)EXTD)Flex6)下面关于Flex自定义组件,说法正确的是(AC)A)自定义组件提高了代码的重用性,降低了维护的难度B)一般讲程序中不常用的功能定义成自定义组件C)一般将程序中通用的功能定义成自定义组件D)一般讲程序中独立的功能定义成自定义组件7)下面关于Flex编译过程说法正确的是( C )A)将ActionScript语言编译成MXML语言B)将ActionScript编译成CSS语言C)将MXML语言编译成ActionScript语言D)将MXML语言编译成css语言8)下面是用于验证日期的是( D )A)<mx:StringValidatorB)<mx:EmailValidatorC)<mx:PhoneNumberValidatorD)<mx:DateValidator9)下面产生单选按钮的是( C )A)labelB)groupC)groupNameD)Groups10)下面关于TextInput的属性说法不正确的是( B )A)text表示得到用户输入的信息B)password表示以密码的形式显示信息C)restrict用于限定用户的输入D)Editable用于限定文本框是否可以输入11)下面对restrict的赋值能够限定文本框中仅能输入数字的是( B )A)$0-9B)0-9C)$0-9^D)0912)下面消息提示框Alert的说法正确的是( B )A)只能生成类似JavaScript的alert提示框B)能够生成类似JavaScript的conform效果C)只能指定消息的内容,不能为弹出框指定标题D)以上说话都不对13)AdvancedDataGrid组件用于绑定数据的属性是(C )A)designViewDataTypeB)columnsC)dataProviderD)data14)下面关于AdvancedDataGrid的显示形式说法正确的是( C )A)只能平面的形式B)只能是树形结构C)可以是平面结构,也可以是树形结构D)以上说法都不对15)关于AdvancedDataGrid绑定数据类型说法正确的是(D )A)只能是ArrayCollection数据类型B)只能是XML数据类型C)只能是XMLList类型D)可以是ActionScript定义的对象数组16)下面关于AdvancedDataGrid说法正确的是( B )A)AdvancedDataGrid不能对数据进行分组B)AdvancedDataGrid能够轻松实现显示摘要的效果C)不能对AdvancedDataGrid中的数据进行操作D)AdvancedDataGrid不能实现排序的功能17)下面关于Flex实现菜单导航效果的说法正确的是(C )A)利用tree组件完成菜单导航的效果B)利用AdvancedDataGrid实现菜单导航的效果C)利用MenuBar实现菜单导航的效果D)以上说法都不对18)下面关于Flex的动画效果说法正确的是(A )A)Flex可以利用定义好的组件,轻松的实现动画效果B)Flex不支持3D的动画效果C)Flex只能利用MXML组件实现动画效果D)Flex动画效果做起来很难,一般都不用19)下面关于淡入淡出效果说法正确的是( A )A)alphaFrom的值大的时候从不透明向透明转变B)alphaFrom的值大的时候从透明向不透明转变C)alphaFrom的值可以比1大D)alphaFrom不能比alphaTo 的值大20)关于Move3D动画效果说法正确的是( C )A)实现旋转功能B)实现淡入淡出功能C)实现移动功能D)实现变大变小功能21)关于Rotatee3D动画效果说法正确的是(A )A)实现旋转功能B)实现淡入淡出功能C)实现移动功能D)实现变大变小功能22)下面关于Flex移动动画说法正确的是(D )A)Flex的移动不能重复B)Flex的移动只能向一个方向移动,不能同时向多个方向移动C)Flex向Z轴方向的移动的值不能小于0,小于0会报错D)Flex向Z轴方向的移动的值能小于0,当小于0的时候表示向外移动23)关于Flex动画效果的持续时间说法正确的是(B)A)Flex动画的时间不能设定,都是1秒B)时间可以设定,用duration属性来设置持续时间C)Duration默认的时间用毫秒计算,如果需要持续3秒钟,其值应该是30000 D)Duration默认的时间用秒计算,如果需要持续3秒钟,其值应该是3 24)下面说法正确的是(B )A)Flex的动画效果一次只能使用一个,不能联合使用B)Flex的动画可以联合使用,但是有先后顺序C)Flex的动画可以联合使用,没有先后顺序D)以上说法都不对25)对于Tree组件的labelField属性赋值,正确的是( C )A)#labelB)$labelC)@labelD)%label26)在使用<s:Fade组件淡出淡入效果时候,alphaFrom属性的值正确的是(C )A)2 B)10 C)0.5 D)-127)在AS3.0中,用于创建Array数组正确的代码是( D )A)var Array temp = new Array();B)var temp:Array = new Array["a","b","c"];C)var temp:Array = ("a","b","c");D)var temp:Array = new Array("a","b","c");28)关于ArrayCollection过滤功能说法正确的是(AD )A)使用filterFunction属性指定过滤的函数名B)使用filter属性指定过滤的函数名C)ArrayCollection过滤函数类型必须是Boolean类型D)必须调用refresh方法使过滤生效29)关于Flex中视图状态,说法正确的是(BC )(选择两项)A)应用程序默认的视图状态为default视图状态B)应用程序默认的视图状态为在<s:states >中定义的第一个状态C)includeIn表示向视图中添加组件D)excludeFrom表示向视图中添加组件30)能够正确从目标对象的dragDrop事件中获取拖放数据的是(B )A)var dgRow:Object=event.dragSource.dataForFormat("item")[0];B)var dgRow:Object=event.dragSource.dataForFormat("items")[0];C)var dgRow:Object=event.dragSource.dataForFormat("items");D)var dgRow:Object=event.dragSource.dataForFormat("item");31)关于ActionScript说法正确的是( C )A)ActionScript是一个纯面向对象的编程语言B)ActionScript是一个纯面向过程的语言C)ActionScript是一个综合了面向过程和面向对象的编程语言D)以上说法都不对32)下面关于ActionScript面向对象的说法正确的是( C )A)ActionScript不支持重写B)ActionScript不支持继承C)ActionScript不支持重载D)ActionScript不支持封装33)Math.round()函数说法正确的是(BC )(选择两项)A)本函数支持保留小数B)本函数不支持保留小数,只能保留整数C)本函数是利用四舍五入的方式进行操作D)本函数是利用只舍不余的方式进行操作34)在ActionScript中如果要将数字进行四舍五入,并且保留小数,使用的方法是(D )A)Math.round()B)Math.floor();C)Math.ceil();D)Number.toFixed()35)ActionScript中循环说法正确的是(D)A)for循环,for in循环,for each循环是一样B)for循环不一样,for in和for each循环是一样C)for循环和for in循环是一样,for each不一样D)for循环,for in循环,for each循环都各有特点,不一样36)下面创建数组,错误的是( C )A)var bookArr:Array=new Array();B)var bookArr:Array=new Array("java","jsp","flex");C)var bookArr:Array=();D)var bookArr:Array=[“java”,“jsp”,“flex”];37)下面关于数据绑定的说法错误的是( C )A)使用数据绑定时,Flex会自动将一个对象的数据复制,提供给另一个对象使用,提供数据的一方称为数据源对象,使用数据的一方称为目标对象B)当数据源对象的数据发生改变化时,目标对象的数据会自动更新,而不需要再编写代码去强制更新C)当数据源对象的数据发生改变化时,目标对象的数据不会自动更新,需要再编写代码去强制更新D)绑定的实现是借助于事件机制来完成的38)下面关于AdvancedDataGrid拖放功能说法正确的是( A )A)dragEnabled="true"表示能够拖动B)dragEnabled="false"表示能够拖动C)dropEnabled="true" 表示能够拖动D)dropEnabled="false" 表示能够拖动39)下面关于Flex页面跳转的方式说法正确的是(A )A)可以使用ActionScrip调用JavaScript来实现跳转B)ActionScript是同JavaScript不同的编程语言,ActionScript不能使用JavaScript来实现页面的跳转C)JavaScript调用ActionScript来实现页面的跳转D)以上说法都不对40)下面关于HttpService组件的说法正确的是(B )A)是直接调用Java类的进行通信的方式B)是来通过Http请求的方式来同后台进行通信C)是同WebService进行通信的一种方式D)是调用Flex其他组件的一种方式41) 下面关于HttpService来进行通信的说法正确的是(B )A)服务器端可以直接以Java对象来响应客户端的请求B)服务器只能通过xml,Json对象等的形式来响应客户的请求C)服务器必须通过WebService的方式来响应请求D)以上的方式都行41)下面关于WebService组件说法正确的是( C )A)是直接调用Java类的进行通信的方式B)是来通过Http请求的方式来同后台进行通信C)是同WebService进行通信的一种方式D)是调用Flex其它组件的一种方式42)下面关于Remoting组件说法正确的是( A )A)是直接调用Java类的进行通信的方式B)是来通过Http请求的方式来同后台进行通信C)是同WebService进行通信的一种方式D)是调用Flex其他组件的一种方式44)下面关于Flex直接调用Java类的说法正确的是(C )A)Flex只能调用普通的Java类,不能调用被Spring管理的类B)Flex可以直接调用Java类,不需要借助任何的其他的插件C)Flex调用Java类的时候需要增加一个插件D)以上的说法都对45)下面关于Flex调用Java类的说法正确的是( D )A)需要将要被Flex调用的Java类注册到flex-config.xml文件中B)需要将要被Flex调用的Java类注册到service-config.xml文件中C)需要将要被Flex调用的Java类注册到application-config.xml文件中D)需要将要被Flex调用的Java类注册到remoting-config.xml文件中46)下面关于Flex直接调用Java类的说法正确的是(C)A)只能传递文本数据,不能传递对象B)只能传递对象,不能传递文本数据C)能够传递对象,但是对象需要系列化D)能够传递对象,|对象不需要系列化47)下面关于HttpService说法正确的是(D )A)HttpService只能访问JSP不能访问Servlet,B)HttpService只能访问Servlet,不能访问JSPC)HttpService即不能访问JSP,又不能访问ServletD)HttpService即能访问JSP,又能访问Servlet48)下面关于Flex同后台通信说法正确的是(AD)(选择两项)A)必须通过回调函数得到服务器端的响应B)不需要通过回调函数,能够直接得到服务器端的响应C)只能捕获正确的响应,不能捕获错误的响应D)即能捕获正确的响应,又能捕获错误的响应49)关于Flex图表说法正确的是(C )A)Flex只能绘制静态的图表,没有实用价值B)Flex只能绘制简单的图表,没有实用价值C)利用Flex的图表功能能够轻松的绘制出各种动态的图表,功能强大D)Flex的图表组件功能强大,不需要借助任何组件,可以直接同后台进行通信50)下面关于<mx:LineChart>说法正确的是(B )A)是绘制饼图的组件B)是绘制线性图表的组件C)是绘制柱状图的组件D)是绘制表格的组件。
Flex 自定义组件一般都要重写下面几个方法,他们的主要作用是什么呢?下面举例说明:1.关于 createChildren()方法代码1-1显示了组件 ImageViewer 的 createChildren() 方法。
代码1-1. ImageViewer 的 createChildren() 方法1.override protected function createChildren():void2.{3.trace('createChildren');4.super.createChildren();5.6.//创建边框CSS7.if(!this.border){8.createBorder();9.}10.11.//创建控制按钮容器12.i f(!controlBar)13.c ontrolBar =new UIComponent();14.15.//创建放大按钮16.i f(!zoomInButton){17.z oomInButton =new Button();18.z bel="+";19.z oomInButton.addEventListener(MouseEvent.CLICK,zoomInButtonClickHandler);20.c ontrolBar.addChild(zoomInButton);21.}22.23.//创建缩小按钮24.i f(!zoomOutButton){25.z oomOutButton =new Button();26.z bel="-";27.z oomOutButton.addEventListener(MouseEvent.CLICK,zoomOutButtonClickHandler);28.c ontrolBar.addChild(zoomOutButton);29.}30.31.// 将控制按钮容器添加到显示节点32.a ddChild(controlBar);33.}在该方法的末尾才把controlBar 添加到 Display List 上,正如之前提到的那样,我们只在需要的时候装配他。
同时,此时也是为子节点添加监听器的好地方。
2.关于 commitProperties()方法CommitProperties()是验证方法 invalidateProperties()所对应的提交方法,也是初始化阶段会被调用的第一个提交方法。
他的目的是使得任何通过 set 方法提交的数值更改生效。
所以您可以看到在 set scale()方法里,按照invalidation-validation 模式,我们调用了 invalidateProperties()方法从而将值的生效延迟到了 commitProperties()里,并且为了做到“避免对一个属性连续设置多个值,从而避免了不必要的资源浪费”,我们使用了标志位scaleChanged。
代码2-1 set scale()函数1.public function set scale(value:Number):void{2.if(_scale !=value)3.{4._scale =value;5.6.//避免对一个属性连续设置多个值,从而避免了不必要的资源浪费7.scaleChanged = true;8.9.//由于调用本方法时,可能对象未创建10.//通过调用invalidateProperties(),将值的生效延迟到了commitProperties()里11.i nvalidateProperties();12.d ispatchEvent(new Event("scaleChanged"));13.}14.}代码2-2 commitProperties()函数1.override protected function commitProperties():void{2.trace('commitProperties');mitProperties();4.5.//如果image控件不存在,则新建并添加6.if(sourceChanged){7.if(!this.image){8.image=new Image();9.this.addChild(image);10.i mage.source=this._source;11.}else{12.i mage.source=this._source;13.}14.s ourceChanged = false;15.}16.17.//如果scale属性改变了,则修改imageWidth18.i f(scaleChanged){19.t his.imageWidth =this.imageWidth *this.scale;20.t his.imageHeight =this.imageHeight *this.scale;21.s caleChanged = false;22.}23.}为什么在 commitProperties()会有添加子节点的操作呢?对于有些子节点,他的诞生可能是和某些属性值相关联的,也就是我们在之前提到的动态创建或者数据驱动的子节点。
这些子节点,由于他们并不是随着组件的产生而产生,而是要受属性值的变化而产生或者变化,甚至在某些情况下,根本就不需要存在。
所以我们应该在值的提交阶段,也就是 commitProperties()方法调用的时候,当新值真正生效的时候再去创建它。
3.关于 measure() 方法measure()方法是组件自动计算尺寸大小的地方,在例子 ImageViewer 的measure()方法里(如代码3-1 所示).如果已经指定了尺寸大小,即 width 和height 值,measure()方法不会被调用。
所以一旦您的组件在组装阶段被设置了 with 和 height 属性值,那么请不要期望在 measure 里会执行您的业务逻辑。
代码3-1 measure()函数1.override protected function measure():void{2.trace('measure ');3.super.measure();4.if(!image){5.//如果image控件不存在,则本组件的宽度为controlBar的宽度6.measuredWidth = controlBar.getExplicitOrMeasuredWidth();7.measuredHeight = controlBar.getExplicitOrMeasuredHeight();8.}else{9.//如果image控件存在,则本组件的宽度为controlBar的宽度10.m easuredWidth =image.width+Math.max(image.width,controlBar.getExplicitOrMeasuredWidth());11.m easuredHeight =image.height+controlBar.getExplicitOrMeasuredHeight();12.}13.m easuredMinWidth = measuredWidth;14.m easuredMinHeight = measuredHeight;15.}4.关于 updateDisplayList ()方法updateDisplayList()方法用于对组件内容进行布局以及渲染,一切屏幕上可见的内容都需要在这里被处理,所以 updateDisplayList()可以说是最繁忙的一个提交方法,他所包含的实现可以非常多。
代码4-1中,我们省略了部分代码。
只留下了需要讲解的部分。
代码4-1 updateDisplayList()函数部分代码1.override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void{2.super.updateDisplayList(unscaledWidth, unscaledHeight);3.// 省略部分代码4.zoomInButton.setActualSize(50, 20);5.zoomOutButton.setActualSize(50, 20);6.var tmpx :Number= 20;7.controlBar.setActualSize(tmpx, 20);8.controlBar.move(0, unscaledHeight-25);9.zoomInButton.move(tmpx, 0);10.t mpx +=60;11.z oomOutButton.move(tmpx, 0);12.i f(imageHeightChanged ||imageWidthChanged){13.i mage.width=this.imageWidth;//w;14.i mage.height=this.imageHeight;//h - 20;15.v ar tempX :Number= x+(w-imageWidth)* 0.5;16.v ar tempY :Number= y +(h-imageHeight)* 0.5;17.i mage.x = tempX;18.i mage.y = tempY;19.i mageHeightChanged = false ;20.i mageWidthChanged = false ;21.v ar g:Graphics=graphics;22.g.clear();23.g.beginFill(0x6F7777);24.g.drawRect(tempX-1, tempY-1, imageWidth+2, imageHeight+2);25.g.endFill();26.}27.}在 measure()方法里我们可以获取 Flex 自动计算的尺寸(如果被调用的话),这些数据需要在 updateDisplayList() 方法里被应用处理,所以我们会大量使用 setActualSize()方法,特别是子元素比较多的时候。
updateDisplayList()的最重要的职责之一就相对应的 invalidateDisplayList ()方法的更新请求进行响应。
比如说对set imageWidth()方法进行了相应。
并且就像在 commitProperties()部分里介绍的那样,这里同样使用了“标志位”方法来进行“局部跟新”。