- 浏览: 336720 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangjun0603:
学习了,写的真好!
native2ascii的简单应用 -
qq672076266:
...
native2ascii的简单应用 -
loyalboys:
...
native2ascii的简单应用 -
hanjinting1004:
...
Flex开发者需要知道的10件事 -
管好你家猫:
学了,文章,
native2ascii的简单应用
先谈谈Flex的什么什么
动手写过的只有两种文件: .mxml文件和.as文件。
接触到的代码也只有两种: 带<>的标签,和ActionScript代码。
Flex应用中最终将会生成一个个.swf文件。我们通过浏览器浏览到的某个.html页面,其实真正运行的是那个.swf文件。而这个.swf文件是用ActionScript脚本写出来的,中间怎么编译或者解析的,不去理它。ActionScript大概是Flash设计者比较熟悉的一种脚本语言,我以前是没有接触过。毕竟flash设计和web之开发之间还是有很多不同的。为了让web开发人员更容易应用ActionScript做开发,于是.mxml产生了。
.mxml文件到底是什么文件我也不清楚,只知道.mxml文件中使用<>标签,应用大量的<>标签封装了很多组件。这些组件完全是用ActionScript写出来的,只不过做了一层封装,我们可以直接拿来主义。这很象jsp标签,最终还是将被解析成java代码,同样,.mxml中的标签最终也将会被解析成ActionScript代码。所以我想,一个ActionScript高手,完全可以不用写.mxml文件就能完成Flex项目,当然,一个web开发人员绝不会这样去做,当然是选择使用封装好的组件,这样代码工整,结构清晰,书写方便。
.as和.mxml
如果理解到这里,对于Flex中的以下一些写法也就会明白了。
可以写一个.as文件创建一个自定义的组件。(然后可以拿到.mxml中象应用其他组件一样去应用)
可以在.mxml文件中嵌套ActionScript代码。(<mx:Script>组件已经封装好了)
.as文件里面写的就是ActionScript代码,ActionScript是一种比较强大的面向对象的脚本语言,语法和JAVA和象。我们既可以在.as文件中定义我们需要用到的自定义的组件,也可以写一些对数据对组件的逻辑操作。.as文件就相当J2EE中的.class文 件,作为source被应用,这里可以封装对象也可以封装事件,此时actionscript和java在j2ee中扮演的角色很相像。
.mxml 定义了“页面”的布局,也就是各个组件怎么摆放,以及组件的一些逻辑。那.mxml文件就相当于表现层的实现。而在.mxml中也会用<mx: scirpt>标签引入一些逻辑操作,此时的actioncript又跟javascript所扮演的角色很相象。
.as和.mxml给我的感觉就象是一种语言的两种写法。不同的写法有不同的侧重点。
.mxml更侧重于表现形式,而.as更侧重于整体与逻辑。二者关系密切。
比如说一个自定义组件MyCanvas
<mx:Canvas >
<mx:Lable id="lab"></mx:Label>
</mx:Canvas >
编绎时可能就变成了
public class MyCanvas extends Canvas{
public var lab: Label;
puiblic function MyCanvas(){
lab = new Label();
this.addChild(lab);
}
}
事件机制
个人感觉Flex中的事件机制是Flex框架中比较重要的地方,虽然在我的项目中几乎用不到。
比如我有一个自定义的组件MyComponent,在.mxml中应用如下:
<cmn:MyComponent click="myFunction()"></cmn:MyComponent>
cmn相当于是一个名域,不用管它。如上写法,很象javascript中的onclick(也许就是一样,没研究过)。上面这段代码相当于实例化了一个MyComponent组件。click是事件的一个实例,其实它是MouseEvent的一个实例。当组件被创建之后,它就相当于又开辟了一个线程时刻捕获MouseEvent,(Flex中没有线程的概念,这里只是比喻。)当MyComponent中抛出MouseEvent事件时,这里的“抛出”实际上是一个分发的动作,代码如同dispathEvent(new MouseEvent())
,
click就会被触发,myFunction()就会被执行。
换一种想法,click="myFunction()"就相当于是添加了一个监听器,而实际上Flex中确实是有监听器的,所以,上面那段代码也可以用监听器的方式来实现,比如:
<cmn:MyComponent id="mc"
creationComplete="init()"
></cmn:MyComponent>
<mx:Script>
<![CDATA[
private function init():void{
mc.addEventListener("click",myFuntion);
}
]]>
</mx:Script>
绑定机制
绑定机制也是Flex的一大重点。它其实就是事件机制的应用。
绑定的作用在于,将Flex中的变量,类或者方法等与组件的值进行绑定,例如,一个变量被绑定之后,那么引用该变量的组件的相关属性页会发生改变。绑定后的变量就相当于指向同一个变量的两个引用,又好比是在java的类中定义一个static变量,在一个类中改变它的值,在所有类中的该值都会变化,因为都是同一个对象嘛。
绑定的形式我现在接触过的如:
[Bindable]
public var blogName : String = "realsmy";
在.mxml中用<mx:Label text="{blogName}"></mx:Label>表现。
或者
<mx:Binding source="mylabel.text" destination="blogName" />
状态
Flex中用state来表示不同的状态。比较经典的例子还是官方的。
<!--
Simple example to demonstrate the States class.
-->
<
mx:Application
xmlns:mx
="http://www.adobe.com/2006/mxml"
>
<!--
Define one view state, in addition to the base state.
-->
<
mx:states
>
<
mx:State
name
="Register"
>
<
mx:AddChild
relativeTo
="{loginForm}"
position
="lastChild"
>
<
mx:target
>
<
mx:FormItem
id
="confirm"
label
="Confirm:"
>
<
mx:TextInput
/>
</
mx:FormItem
>
</
mx:target
>
</
mx:AddChild
>
<
mx:SetProperty
target
="{loginPanel}"
name
="title"
value
="Register"
/>
<
mx:SetProperty
target
="{loginButton}"
name
="label"
value
="Register"
/>
<
mx:SetStyle
target
="{loginButton}"
name
="color"
value
="blue"
/>
<
mx:RemoveChild
target
="{registerLink}"
/>
<
mx:AddChild
relativeTo
="{spacer1}"
position
="before"
>
<
mx:target
>
<
mx:LinkButton
id
="loginLink"
label
="Return to Login"
click
="currentState=''"
/>
</
mx:target
>
</
mx:AddChild
>
</
mx:State
>
</
mx:states
>
<!--
Define a Panel container that defines the login form.
-->
<
mx:Panel
title
="Login"
id
="loginPanel"
horizontalScrollPolicy
="off"
verticalScrollPolicy
="off"
paddingTop
="10"
paddingLeft
="10"
paddingRight
="10"
paddingBottom
="10"
>
<
mx:Text
width
="100%"
color
="blue"
text
="Click the 'Need to Register?' link to change state. Click the 'Return to Login' link to return to the base state."
/>
<
mx:Form
id
="loginForm"
>
<
mx:FormItem
label
="Username:"
>
<
mx:TextInput
/>
</
mx:FormItem
>
<
mx:FormItem
label
="Password:"
>
<
mx:TextInput
/>
</
mx:FormItem
>
</
mx:Form
>
<
mx:ControlBar
>
<
mx:LinkButton
id
="registerLink"
label
="Need to Register?"
click
="currentState='Register'"
/>
<
mx:Spacer
width
="100%"
id
="spacer1"
/>
<
mx:Button
label
="Login"
id
="loginButton"
/>
</
mx:ControlBar
>
</
mx:Panel
>
</
mx:Application
>
发表评论
-
应用避免访问浏览器缓存
2011-05-12 17:33 1386项目经常遇到这么个问题:程序做了改动之后,由于浏览 ... -
flex皮肤资源
2011-05-05 15:28 1299如果要找flex皮肤,这里的皮肤真是多。http: ... -
flex利用asdoc生成doc和制作chm
2011-04-02 17:33 1629How to set up ASDoc in Flex Bui ... -
restrict的应用实例
2011-04-02 11:54 11321. 限制某个字符的输入,用符号 ^ 跟上要限制的 ... -
flex中as、instanceof、is、 typeof用法
2011-03-24 09:48 4556“as” 我主要用它做类型转化 假设有一个类叫做 ... -
在Chart上画平均线的三种方法
2011-02-16 14:52 1425在Chart上画平均线的三种方法 ... -
Flex Frameworks
2010-11-12 15:32 1000Some say that if a t ... -
flex4国际化
2010-11-11 16:56 2124国际化变得如此简单 <?xml versi ... -
使用ToolTipManager自定义tooltip
2010-11-05 14:52 2621直接贴代码,一看就懂。 <?xml version=& ... -
flex 校验
2010-11-05 14:41 1035①flex中的校验可以使用mx.validator ... -
Flex中的fx、mx和s命名空间
2010-11-05 13:12 3390Flex 4带给我们的 ... -
socket中writeUTF和writeUTFBytes的区别
2010-11-03 10:25 2797Q:用writeUTF发送数据的时候,后台多 ... -
修改flex默认loading
2010-10-18 13:51 2525一: SWF Flex 2 PreloaderSWF ... -
AIR文件操作
2010-09-26 10:01 2928AIR文件操作(一):AIR文件基础 AI ... -
ActionScript 3.0 Socket编程
2010-09-17 17:25 1171在使用ActionScript3.0进行编程的时候需要注 ... -
as 对象深度拷贝
2010-08-20 10:32 992这是一篇关于as3中对象深度拷贝的问题今天自己总结下,便 ... -
Create a FlexUnit TestCase
2010-04-29 20:34 1045Problem How to create a Fle ... -
as3corelib
2010-04-29 20:10 1487google code :http://code. ... -
FusionCharts
2010-04-28 19:26 2370无意中接触到这个产品FusionCharts,3D ... -
flex datagrid自动换行
2010-04-19 17:10 2887以为datagrid的自动换行有多复杂,其实 ...
相关推荐
开发者可以通过ActionScript 3(AS3)编程语言与Flex类库进行交互,实现丰富的图形界面和交互功能。 创建Flex应用程序的步骤主要包括:首先,新建项目工程,定义工程名称和路径,并选择运行环境(如Web或Desktop)...
《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...
本教程是作者精心编写的Flex学习资料,适合初学者入门,通过图文并茂的方式,帮助读者快速掌握Flex的基本概念和核心技能。 1. **Flex基础**:Flex提供了MXML和ActionScript两种编程方式。MXML是一种声明式语言,...
Flex学习笔记概述 Flex是一种由Adobe开发的企业级富互联网应用(RIA)的表示层解决方案,其主要目的是提供高度交互和动态的用户体验。Flex的核心在于它的编程语言MXML和ActionScript(AS),这两种语言结合在一起,...
本压缩包“Flex学习笔记.rar”显然是一份针对初学者的教程资料,旨在帮助新接触Flex的开发者快速上手。 在“FlexBeginner.pdf”这份文档中,你可以期待找到以下关键知识点: 1. **Flex概述**:介绍Flex技术的基本...
### Flex 学习笔记知识点详解 #### 一、Flex 技术概述 - **定义**:Flex 是一种用于构建和部署跨浏览器、跨平台的丰富互联网应用程序 (RIA) 的开源框架。 - **特点**: - 强大的 UI 构建能力:允许开发者创建高度...
Flex开发学习笔记4主要关注的是如何在Flex应用中实现分页列表组件,这对于构建大型数据展示界面至关重要。Flex是一个开源的、基于ActionScript的框架,用于创建富互联网应用程序(RIA)。在这里,我们不仅会探讨Flex...
Flex开发学习笔记6.1主要聚焦于创建Flex Library Project,这是一种在Adobe Flex开发环境中构建可重用组件的方式。Flex Library Project允许开发者创建自定义组件,这些组件可以被多个应用程序共享,提高了代码复用...
Flex是一个用于构建富互联网应用程序(RIA)的框架,基于ActionScript和MXML语言,通常与Adobe Flash Player或Adobe AIR一起使用。 首先,我们来了解Flex Library Project。它是一个特殊类型的Flex项目,不直接编译...
这篇“Flex学习笔记”可能是作者在深入研究Flex技术过程中整理的心得体会和实践案例,结合了《Flex3权威指南》这本书的内容。 在Flex中,ActionScript是核心编程语言,它是基于ECMAScript的一个版本,专门针对富...
- **学习方式**:边翻译边学习的方式,结合个人理解和思考来进行学习笔记的撰写。 - **版权说明**:尊重原作者的版权,鼓励大家自由复制传播,但需标明原作者信息。 #### 三、Flex编程元素 - **MXML**:一种XML...
Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的技术,它主要基于ActionScript和MXML。本笔记将深入探讨Flex的基本概念、架构、组件、布局管理器以及事件处理机制,帮助初学者全面理解并掌握Flex开发。...
《Flex企业应用开发实战》的学习笔记主要探讨了Flex在企业应用开发中的基础知识,包括MXML语言、客户端状态保持、客户端MVC模式以及数据绑定技术。 2.1 MXML语言是Flex应用开发的核心部分,它是一种XML标记语言,与...
在"Flex + Hessian 学习笔记(二)"中,我们可能涉及以下几个关键知识点: 1. **Flex客户端开发**:Flex项目通常使用MXML和ActionScript编写,MXML用于声明式地构建UI,而ActionScript则用于编写应用程序逻辑。开发者...