`

Flex4基础-ActionScript语法

    博客分类:
  • Flex
 
阅读更多
  • 简介

         Flex是高效、免费、开源的框架,广泛用于生成移动、web和桌面平台的应用程序。,它可以使开发人员创建利用 Adobe® Flash® Player 9 作为前台的“富客户端互联网应用程序/rich Internet applications/RIA”,以满足用户更为直观和极具交互性的在线体验。简单的说,Flex就是用来编写flash程序的框架,非常适合软件开发人员使用。

 

    开发Flex 应用程序的典型步骤如下(通常是这样):  

1.  选取一系列预先定制好的、用于设计应用程序界面的组件(如表格、按钮等等)

2.  布置组件以设计用户界面。

3.  使用样式和主题来增强视觉方面的设计。

4.  添加动态行为(例如程序部件之间的相互作用)。

5.  定义并连接所需的数据库服务。

6.  将源代码编译成SWF 文件,然后在Flash Player 中运行。

 

         一个典型的Flex 应用程序包括如下元素:

1. Flex framework

Adobe® Flex 2 framework 包含了创建RIA 所需要的所有组件,它们是:用于应用程序布局规划的容器;针对用户界面和从用户处获取数据的控制(例如文本框和按钮);广泛支持的数据绑定、数据格式化、以及有效值验证;事件驱动的开发模式。Flex framework 被包含在公用组件库(SWC)文件中

2. MXML

每个Flex 应用程序至少包含有一个MXML 文件,它被作为该程序的主文件。MXML是一种标记语言,它是基于XML 的一种实现,用来创建Flex 应用程序。你可以使用它去声明程序中所使用的标签结构的定义。

3. ActionScript 3.0

你可以使用ActionScript 3.0 为应用程序添加动态行为,它是基于ECMAScript 的一种实现,类似于JavaScript。你可以将ActionScript 作为一个脚本块,在MXML 文件中直接进行添加;或者创建一个单独的ActionScript 文件,然后将它们导入到MXML 文件中。

4. CSS

你可以通过设置组件的属性(properties)来改变组件(按钮、列表框等)的视觉样式。例如,按钮组件有一个fontFamily 属性,你可以使用它来进行字体的设置。样式的属性通常有四种方法来进行控制:通过主题(theme);在CSS 文件中进行定义;在MXML 文件中的样式块中进行定义;在组件的实例中进行设置。MXML 样式的定义和使用遵循了W3C Cascading Style SheetsCSS)标准

5.  图形资源

与很多应用程序一样,Flex 包含了各种各样的图形资源,如图标和图象。

6.  数据

一些组件被使用来进行数据显示(combo box 或者data grid)的工作。同时,你还可以使用各种方式来将这些组件与数据联系起来,如使用数组、收集对象、数据模型、以及外部XML 数据资源,等等。

 

 

下图是一个MXML的简单例子,点击确定按钮后会弹出一个提示框:

 


  • 基础语法

ActionScript实现了面向对象编程(OOP)的支持,一个MXML是一个对象,MXML中的一个标签(比如buttontextInput)也是一个对象,对于学习过JAVAC#等面向对象语言的程序员上手非常快。

         AS的关键字与JAVA相似,但是方法、变量的定义有所不同,AS的定义方式为:【对象名:对象类】【方法名():返回类型】的格式,下面是一个简单的AS类:

 

package demo
{
	import mx.core.IButton;
	import spark.components.Button;

	//定义类Demo,继承实现类和接口
	public class Demo extends Button implements IButton
	{
		//构造函数
		public function Demo()
		{
			super();
		}
		//常量
		public  static const NAME:String = "name";
		//变量
		private var names:String;
		//带参方法
		protected function demoMethod(value:int):int{
			return value;
		}
		//无参方法
		public function getButton():Button{
			return new Button();
		}
	}
}

 上面是一个独立的AS类,一个独立的类文件命名为:类名.as

 在MXML<script>脚本中可以通过new Demo()的形式实例化该对象。

 

 

creationComplete事件:该事件与htmlbody标签的onload事件类似,在当前应用程序启动完成后触发。

trace(String)方法:在调试模式,向控制台打印消息,类似于JAVASystem.out.print()

新建一个mxml文件,在文件中写下如下代码,使用调试模式启动当前文件,启动应用程序后,在控制台能够看到“启动demo.mxml文件”的提示。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="onload()" >
	<s:layout>
		<!--控件居中对齐-->
		<s:VerticalLayout horizontalAlign="center"  verticalAlign="middle"/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;

			protected function onload():void
			{
				//向控制台打印消息
				trace("启动demo.mxml文件");
			}
		]]>
	</fx:Script>
</s:Application>

 

 

 

 

  • 常用基础(非基础)数据类型

AS3中最常用的数据类型有以下几种:

基础数据类型:BooleanStringintuintNumber

复杂数据类型:ObjectArray ArrayCollection 

Boolean:布尔值,分为true/false两种

String:字符串,这个不多说了

int:带符号的32位整数,数值范围:-2147483648~2147483647

uint:不带符号的32位整数,数值范围:0~4294967265

Number64位浮点数

ObjectAS所有类的基类,等同于JAVAObject

          Array:非类型化数据,同一个数组对象允许装不同类型的数据

/**  
     * 数组(同一数组的值,flex支持不同数据类型)  
     */  
    var d:Array = new Array("a","b",1);   
    trace("数组长度:"+d.length+"   数组内容:"+d)   
    //push方法:向数组中添加新值,并返回数组长度   
    trace("添加新值:"+d.push(2,3));   
    //pop方法:删除最后一条数组的值   
    trace("去最后一条数组值:"+d.pop());   
    //reverse把数组的值倒转过去   
    trace("数组反转:"+d.reverse());

 ArrayCollection:集合对象,与JAVAArrayList类似,常用来动态封装数据

**  
     * List集合  
     */  
    var e:ArrayCollection = new ArrayCollection([{id:1,name:"kaka"},{id:2,name:"soga"}]);   
    trace("List初始长度:"+e.length);   
    //在list末尾添加数据   
    e.addItem({id:3,name:"nani"});   
    //在指定位置添加数组   
    e.addItemAt({id:4,name:"sodesi"},2);   
    //removeItemAt删除指定位置的list,removeAll删除list所有的值   
    e.removeItemAt(3); e.removeAll();   
    trace("List最终长度:"+e.length);

 不同数据类型的默认值有所不同看如下代码:

 

 

var b:Boolean;
				var s:String;
				var i:int;
				var n:Number;
				var o:Object;
				var a;
				trace("Boolean默认值:"+b);
				trace("String默认值:"+s);
				trace("int默认值:"+i);
				trace("Number默认值:"+n);
				trace("a默认值:"+a);
				trace("Object默认值:"+o);

 

运行结果如下:

Boolean默认值:false

String默认值:null

int默认值:0

Number默认值:NaN

a默认值:undefined

Object默认值:null

 

【注意】

浮点数比整数消耗的硬件资源要多,所以尽量使用intuint来表示整数。

NumberJAVA中的double同样存在精度问题,数值相差过大的浮点数相加的结果可能有偏差。

         AS3方法传递,对非基础数据类型是传引用(即对象在方法内的值被改变,外面的值也会改变),对基础数据类型是传值(即对象在方法内的值改变,外面的值也不受影响)。

 

 

  • 运算符和表达式

运算符:AS3的运算符与JAVAC#等非常相似,加(+)(-)(*)(/)、赋值(=)、自增(++)自减(--)、关系运算符(>,<,>=,<=)、逻辑运算符(&&,||,!)等等。

关键字is用语判断当前对象属于什么类型:

var b:int = 2;   
b as Number;    
trace("b变量是int类型?"+(b is int));   
trace("b变量是number类型?"+(b is Number));

 

 

 表达式:AS也拥有丰富的表达式,如常用的ifwhileswitchfor循环,实例代码如下:

 

/**  
     * 条件控制语句,as中switch语句很给力,允许比较字符串等
     */  
    var f:String = "asd";   
    switch(f){   
        case "asd":   
            trace("switch:asd");   
            break;   
        default:   
            trace("switch:default");   
            break;   
    }   
    //三目运算...   
    f=="asd"?trace("f==asd"):trace("f!=asd");   
       
    /**  
     * 循环语句  
     */  
    for(var i:int=1;i<=3;i++){   
        trace("for循环:"+i);   
    }   
    //for in循环   
    var g:Array = new Array("a1","b2","c3");   
    for(var j:String in g){   
        //注意:j是获得索引值   
        trace("for in:"+g[j]);   
    }   
    //for each循环   
    for each (var item:String in g) {    
        trace("for each循环"+item);    
    }

 

for…infor each…in用于枚举一个集合的数据,for…in枚举出的是集合的下标位置,for each…in枚举出集合的值。for each…in类似于JAVAfor(xx in oo)C#foreach(xx in oo)

注意】

 

 

  • 事件处理机制

Flex标签元素与html元素相似,都有自己的事件触发机制,并且创建方式也相似,通常Flex标签创建事件有两种方式:一种是在标签中定义事件触发属性,另一种是在ActionScript中调用事件触发方法,下面看代码:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="init(event)">
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			
			protected function sure_clickHandler(event:MouseEvent):void
			{
				sure.label = "鼠标点击事件!";
			}
			
			protected function init(event:FlexEvent):void
			{
				this.sure.addEventListener(MouseEvent.MOUSE_OVER,function sure_mouseover(event:MouseEvent):void{
					sure.label = "鼠标移上事件!";
				});
			}
		]]>
	</fx:Script>
	
	<s:Button x="82" y="52" label="确定" id="sure" click="sure_clickHandler(event)" />
</s:Application>

 

  • Java-Flex对象对应表


 

 

 

以上仅仅是Flex的基础知识,要想用好FlexActionscript,则必须学好面向对象编程思想,这样写出来的代码才会优雅、效率、可读可维护。

 

 

  • 大小: 96.9 KB
  • 大小: 24.2 KB
0
0
分享到:
评论
1 楼 winny_46 2014-01-10  
"AS3方法传递,对非基础数据类型是传引用(即对象在方法内的值被改变,外面的值也会改变),对基础数据类型是传值(即对象在方法内的值改变,外面的值也不受影响)。"

对非基础数据类型为什么是传引用?
我的理解是传值,把地址的值传到方法里,所以方法里面指向这个地址去修改值,外面的值实际上也会改变,就像JAVA那样。
请问是我的理解错误码?望指教,谢谢!

相关推荐

    Flex学习笔记-基本语法

    在本文中,我们将深入探讨Flex学习过程中的基础语法,特别是从AS2到AS3的变化。 首先,ActionScript 3(AS3)是AS的一个重大升级,它引入了完全的面向对象编程(OOP)概念。这意味着AS3具有类、继承、封装和多态性...

    FLEX4_Flex4教程 - FLEX4从入门到精通,挺不错的值得一看

    1. **ActionScript 3.0**:Flex4的基础是ActionScript 3.0,这是一种面向对象的编程语言,它在性能和功能上都远超ActionScript 2.0。学习Flex4首先要掌握AS3的基本语法、类和对象、事件处理、数据类型以及包和命名...

    Flex第一步--基于ActionScript 3.0的Flex 2应用开发 第2、 6、 13章

    本资料主要聚焦在Flex 2的应用开发,特别是结合ActionScript 3.0这一强大的编程语言进行的实践操作。ActionScript 3.0是Flash Platform的核心编程语言,它具有更严格的类型系统、更高的性能和更多的面向对象特性。 ...

    跟我StepByStep学FLEX教程------王一松

    - **语法介绍**:介绍ActionScript 3的基本语法,如变量声明、控制流语句等。 - **面向对象编程**:学习类、接口等面向对象编程概念及其在ActionScript中的应用。 - **事件处理**:理解事件模型,学会如何为UI组件...

    flex帮助文档--(flex学习文档)

    ActionScript语法类似于JavaScript,但支持面向对象编程。在Flex中,你可以通过MXML和ActionScript混合编程,实现界面与逻辑的分离。 4. **Flex组件** Flex提供了一系列预定义的UI组件,如按钮、面板、列表等,...

    flex开发之-->葵花宝典(包含ActionScript3,0教程)

    教程可能涵盖基础语法、类和对象、面向对象编程、错误处理、以及与Flex组件的交互等内容。 3. **API文档**:Flex SDK包含了大量的API,这些API提供了构建Flex应用程序所需的各种功能。API文档通常详细描述了每个类...

    Flex4 Declarations in ActionScript

    Flex4允许开发者在ActionScript中使用声明式语法,这扩展了ActionScript的功能,使其能与MXML一起工作。通过在ActionScript类中声明变量和属性,我们可以创建组件实例、设置属性并处理事件,无需像传统面向对象编程...

    Flex完全自学--入门ppt课件

    3. **ActionScript编程**:深入学习ActionScript语法,包括变量、函数、类、对象、事件处理等基础知识。 4. **数据绑定**:理解Flex中的数据绑定机制,如何将数据模型与用户界面元素关联,实现数据的动态更新。 5....

    flex-bootstrap-jsp.zip_bootstrap_flex

    对于Flex,需要熟悉MXML和ActionScript的语法;对于Bootstrap,则需要掌握其网格系统、CSS类和JavaScript插件的使用。 总的来说,这个压缩包为在JSP项目中同时使用Flex和Bootstrap提供了一种便捷方式,有助于开发者...

    Flex开发实例--学习必备

    - **MXML** 和 **ActionScript** 的区别在于它们各自的作用和语法: - **MXML**: 用于定义UI组件和布局。 - **ActionScript**: 用于编写业务逻辑和处理用户交互。 - 在MXML中添加注释使用 `&lt;!-- 注释 --&gt;` 格式。 ...

    Flex基础培训-6-拖放与过滤

    ### Flex基础培训-6-拖放与过滤 #### 拖放操作概念 在现代的交互设计中,拖放操作是一种极为常见的数据处理方式。它不仅简化了用户的操作流程,还提高了应用程序的用户体验。例如,在Windows操作系统中,我们可以...

    flex-mmorpg-server.rar_flex_mmorpg

    1. **Flex框架的使用**:了解如何使用Flex SDK和Flash Builder等工具进行项目搭建,以及MXML和ActionScript的语法特性。 2. **服务器端架构**:研究如何设计和实现一个能够处理大量并发请求的游戏服务器,可能涉及...

    Flex(1-5).rar_flex_flex 散点图

    最后,“Flex3基础”可能是一个关于Flex 3基础概念的教程或者文档集,涵盖了Flex Builder IDE的使用、MXML标记语言、Flex组件库、布局管理器、事件处理以及与服务器的数据通信(如AMF或HTTPService)。Flex 3是Flex...

    30天用帮助文件学Flex基础-01

    ### Flex基础学习知识点 #### 一、Flex简介与学习计划 - **Flex**:一种开源框架,用于构建高性能且跨浏览器、桌面以及操作系统部署的应用程序。由Adobe开发,旨在简化富互联网应用程序(RIA)的创建过程。 - **...

    apache-flex-sdk-4.9.0-asdocs

    相比早期的ActionScript版本,AS3.0具有显著的性能提升和更严谨的语法结构。 **ASDoc工具** ASDoc是Flex SDK中的一个重要组成部分,它是专门用于生成ActionScript类库的文档工具。当开发者在项目中使用ASDoc命令时...

Global site tag (gtag.js) - Google Analytics