FELX文档全解.docx
《FELX文档全解.docx》由会员分享,可在线阅读,更多相关《FELX文档全解.docx(28页珍藏版)》请在冰豆网上搜索。
![FELX文档全解.docx](https://file1.bdocx.com/fileroot1/2022-11/28/d83d6cf2-00e0-47e5-97f2-47d85ee9d342/d83d6cf2-00e0-47e5-97f2-47d85ee9d3421.gif)
FELX文档全解
Flex的基本语法:
分号:
是用来结束一段语句的符号
括号:
1改变表达式中操作符的顺序
Trace((2+3)*4);结果20
Trace(2+3*4);结果14
常量的修饰符:
constants定义的规范:
使用大写字母和下划线
ClassA{
PublicconstMINIMUM:
int=0;//定义常量MINIMUM的值为0
PublicconstMAXMUM:
int;
PublcifunctionA(){
MAXMUM=10;//定义常量MAXMUM的值为10,只要创建这个对象,在使用这个常量值的时候,它的值都是10
}
}
数组:
varnumArray:
Array=[“zero”,”one”,”two”];
varoneArray:
Array=newArray(“a”,”b”,”c”);
VartwoArray:
Array=oneArray;
基本数据类型:
布尔值boolean默认为false
数字number默认值为NaN
对象(Object)null
字符串Stringnull
自然数Uint0
AS操作符:
1.as操作是actionScript的新的操作符,用来测试表达式的值是否是给定的数据类型的成员。
与is不同的是,is操作符的返回值是boolean类型,而as操作符的返回值是表达式的值。
2.最常用的方法是给一个变量赋予相同数据类型的值(前提是与要改变的数据类型要匹配,否则不能被转化,输出的结果会是相应的默认值,类如number的默认值为NaN)
类型转换:
分隐含转换和不隐含转换:
一般使用不隐含转换
varmyBoolean:
Boolean=true;
varmyINT:
int=int(myBoolean);
Trace(mtINT
);
操作符:
操作符是特殊的函数,接受一个或者多个的运算值,并返回一个结果。
运算值可以是一个值,也可以是一个文字,也可以是变量或者表达式。
varsunNumber:
uint=1+2+3;//输出的值为6
操作符有一元的,二元的,三元的。
操作符多用产生多元操作符。
操作符的优先级:
1原始的:
[]数组的定义,{x:
y}初始化对象,()组合表达式,x.y或x[y]访问一个属性,
new调用一个构造器,<></>初始化一个XMLlist对象,@访问一个属性,
:
:
限定一个名字,..引用一个子类的xml元素
2后缀poetfix:
x++,x--
3一元:
++x,--x,+正号,-负号,!
非,~位操作符非,delete删除一个属性,typeof测试返回类型,void返回未定义值
4倍数:
*,/,%模运算符
5加减法=,-
6位>>,<<,>>>位右移
7相关的:
is检查数据类型as检查数据类型><>=<=instanceof检查原始类型in检查对象属性
8等式==!
=!
==恒不等于===恒等于
9位&and位于
10位xor^位异或
11位OR|或运算符
12逻辑与:
and&&
13逻辑或or||
14条件?
:
15赋值:
=,*=,/=,<<=位左移赋值
16逗号.
函数
函数的定义:
函数是代码快可执行的特别任务,可以在程序中重复使用。
区分函数和方法的是由他们上下文context来决定的。
如果一个函数是一个类的一部分,或者依附于一个对象实例,则称为方法,而其他的都成为函数。
函数的定义分两种:
函数声明和函数文字。
声明使用function关键词
函数文字:
克隆操作符(:
)
例子:
比较老的版本的去定义一个函数:
vartraceparameter:
Function=function(aparam:
String){
Trace(aparam);
};
Traceparamemeter(“hello”);//输出hello
函数声明和函数文字的区别:
函数文字没有定义函数名称,另外它所定义是一个表达式,不是一个声明。
函数的返回值:
Return生命在函数中返回数值,return后面可以跟随一个值或者一个表达式
在严格的模式中,如果定义了函数的返回类型,那么必须要返回一个值。
嵌套的函数:
意思是可以在一个函数中定义另外一个函数。
嵌套的函数只能在他的父类函数中使用,除非是被外部代码引用。
例子:
functiongetNameAndVersion():
String{
FunctiongetVersion():
String{
return“9”;
}
FunctiongetName():
String{
return“FlashPlayer”;
}
Return(getName()+getVersion());
};
最后输出结果为FlashPlayer9
函数的参数:
传递数值,意思是在函数中复制到函数体内的一个变量进行使用。
传递参数,意思是传递参数到一个函数中。
例子:
FunctionpassPrimitives(){
xValue++;
yValue++;
Trace(xValue+””+yValue);
}
varxValue:
int=10;
VaryValue:
int=15;
Trace(xValue,yValue);//输出1015
passPrimitives(xValue,yValue);//输出结果1116
Trace(xValue,yValue);//输出结果1015
对象和类:
一个类可以理解为一种类型的对象的模板或者蓝图。
所有的类都是由Object类衍生而来的
包和命名空间
建立包文件:
package文件包名{
Publicclass类名{}
}
输入包文件:
Importsamples.*;//
Importsample.SampleCode;//直接导入sample包下面的SampleCode类
命名空间:
用来控制编程者建立的属性和方法的可视性。
A使用namespace里定义命名空间
Namespaceversion1;
B在定义属性和方法时使用命名空间
Namespacefunctionmyfunction(){};
C当使用了命名空间,就可以使用use来引用命名空间
Usenamespaceversion1;
Myfunction();
或者version:
:
myfunction();
包含include和输入importActionScript代码
区别:
使用包含的方法时,编程者可以使用外部的对象和属性。
使用输入方法时,文件必须在指定的路径下面,而包含的文件必须在应用程序的根或者使用绝对路径。
包含include是从一个文件复制代码到另一个文件,被包含的文件在建立时时选择ActionScriptFile
输入import时增减一个类挥着文件包的参考,其文件在建立时是选择ActionScriptClass
例子:
[CDATA[
varstr:
String=mylabel.text;
]]>
Script>
或者
[CDATA[
include“filename.as”;
]]>
Script>
如果使用输入import列子:
[CDATA[
importmyfile.filename;
]]>
Script>
组件
有三类容器支持绝对定位:
应用容器application
面板panel
画布容器canvaslayout:
absolute//绝对定位
控件:
按钮、输入框、复选框、树、图片、表格、滚动条、日期
文本控件:
textcontrols
1标签:
label不能编辑,用来显示单行文本
2文本:
text不能编辑,用来显示多行文本
3文本条:
textinput可编辑,显示单行文本
4文本区域:
textarea可编辑,显示多行文本
5富文本编辑:
richtexteditor可改变文字的大小,粗细,对齐等。
(在网页上不可编辑)
菜单控件:
menucontrols
1菜单:
menu可视的,有多层次的子菜单
2菜单条:
menuBar不能编辑,多行文本区域
3弹出菜单:
popupmenubuton:
单击时可以出现的菜单
按钮控件:
buttoncontrols
1按钮button可变大小,标签图标。
按钮事件buttonDownmouseOvermouseMove
给按钮更改图标,在button中直接添加属性icon=”Embed(“name”)
2弹出按钮控件Popupbuttoncontrols
3按钮条buttonBar显示一行相同外观的按钮
4链接按钮linkbutton显示文本链接。
5连接条:
linkbar显示水平的一行连接按钮控件
6单选按钮
8复选框cheackbox
Flex控件flexcontrols
1警告alert弹出警告框
2下拉列表combobox下拉数据列表
3数据表格:
datagrid
4日期选择器:
datechooser
5日期条:
datefield可选择日期并显示在指定的文本框内
6进度条progressBar
7滚动条:
hscrollbar水平滚动条vscrollbar垂直滚动条
8列表条:
tabBar
9树tree以展开树的方式显示继承关系的数据
10音像videodisplay
比较复杂的控件:
弹出按钮控件:
Popupbuttoncontrols可弹出菜单的按钮
importmx.events.MenuEvent;
privatevarmyMenu:
Menu;
protectedfunctioninitMenu():
void{
myMenu=newMenu();
vardp:
Object=[{label:
"111"},{label:
"222"},{label:
"333"}];
myMenu.dataProvider=dp;
myMenu.selectedIndex=0;
myMenu.addEventListener("itemClick",itemclaia);
p.popUp=myMenu;
p.label="PopUpButton";
}
protectedfunctionitemclaia(event:
MenuEvent):
void{
varlabel:
String=event.item.label;
p.label=label;
p.close();
myMenu.selectedIndex=event.index;
}
PopUpButtonid="p"x="173"y="219"label="PopUpButton"creationComplete="initMenu();"/>
复选框按钮checkbox
例子:
protectedfunctionmodifynumber():
void{
t1.text="";
if(c1.selected){
t1.text+=c1.id+"\n";
}
if(c2.selected){
t1.text+=c2.id+"\n";
}
if(c3.selected){
t1.text+=c3.id+"\n";
}
};
VBoxx="521"y="205"width="120"height="180">
CheckBoxid="c1"x="358"y="296"label="CheckBox"click="modifynumber();"/>
CheckBoxid="c2"x="358"y="338"label="CheckBox"click="modifynumber();"/>
CheckBoxid="c3"x="358"y="389"label="CheckBox"click="modifynumber();"/>
TextAreaid="t1"width="89"height="82"/>
VBox>
单选按钮radiobutton
protectedfunctionoptionmethod():
void{
if(r1.selected){
t2.text=String(r1.value);
}
if(r2.selected){
t2.text=String(r2.value);
}
if(r3.selected){
t2.text=String(r3.value);
}
}
RadioButtonid="r1"groupName="opt"x="767"y="205"label="单选框"value="111"click="optionmethod();"/>
RadioButtonid="r2"groupName="opt"x="767"y="240"label="单选框"value="222"click="optionmethod();"/>
进度条:
progressBar
滚动条控件:
scrollBar
横向滚动条
HScrollBarid="bar"width="100%"
minScrollPosition="0"【设置最小值】maxScrollPosition="{panel.width-20}"【设置滚动条最大值】
lineScrollSize="50"【按下箭头后移动的值】
pageScrollSize="100"【拖动滚动条移动的值】
scroll="myScroll(event);"【拖动滚动条时触发的函数】
repeatDelay="1000"repeatInterval="500"【按键的时间间隔设置ms单位】/>
vscrollbar垂直滚动条:
例子:
//Eventhandlerfunctiontochangetheimagesize.
privatefunctionchangeSize():
void
{
phoneImage.width=vs.value*20;
phoneImage.height=vs.value*20;
}
Canvasx="472"y="256"width="370"height="344">
Imageid="phoneImage"x="10"y="10"width="162"height="116"source="assets/dog.jpg"visible="true"/>
Canvas>
VSliderid="vs"x="389"y="365"maximum="100"【设置最大值】minimum="0"【设置最小值】snapInterval="1"【s标签才能使用设置每一次滑动值为1】liveDragging="true"【设置在拖动时提交值,而不是松开时提交】change="changeSize();"stepSize="2"【mx标签才能设置每一次滑动值为2】/>
菜单控件menucontrols
xmlversion="1.0"encoding="utf-8"?
>
--SimpleexampletodemonstratetheHaloMenucontrol.-->
Applicationxmlns:
fx="
xmlns:
s="library:
//
xmlns:
mx="library:
//
Script>
[CDATA[
importmx.controls.Alert;
importmx.controls.Menu;
importmx.events.MenuEvent;
privatevarpoint1:
Point=newPoint();
//CreateanddisplaytheMenucontrol.
privatefunctionshowMenu():
void{
varmyMenu:
mx.controls.Menu=mx.controls.Menu.createMenu(null,myMenuData,true);
myMenu.labelField="@label";
myMenu.show(60,60);
}
//EventhandlerfortheMenucontrol'schangeevent.
privatefunctionmenuHandler(evt:
MenuEvent):
void{
Alert.show("Label:
"+evt.item.@label,"Clickedmenuitem");
}
]]>
Script>
Declarations>
XMLid="myMenuData">
XML>
Declarations>
Panelid="panel"
title="HaloMenuControlExample"
width="75%"height="75%"
horizontalCenter="0"verticalCenter="0">
VGroupleft="10"right="10"top="10"bottom="10">
Labelwidth="100%"color="blue"
text="ClickthebuttontoopentheHaloMenucontrol."/>
Buttonid="myButton"label="OpenMenu"click="showMenu();"/>
VGroup>
Panel>
Application>
菜单条控件menuBarcontrols
xmlversion="1.0"encoding="utf-8"?
>
--SimpleexampletodemonstratetheHaloMenuBarcontrol.-->
Applicationxmlns:
fx="
xmlns:
s="library:
//
xmlns:
mx="library:
//
initialize="initCollections();">
Script>
[CDATA[
importmx.collections.*;
importmx.controls.Alert;
importmx.events.MenuEvent;
[Bindable]
publicvarmenuBarCollection:
XMLListCollection;
privatevarmenubarXML:
XMLList=
<>
groupName="one"data="3A"/>
groupName="one"data="3B"/>
>;
//EventhandlertoinitializetheMenuBarcontrol.
privatefunctioninitCollections():
void{
menuBarCollection=newXMLListCollection(menubarXML);
}
//EventhandlerfortheMenuBarcontrol'sitemClickevent.
privatefunctionmenuHandler(evt:
MenuEvent):
void{