??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱亚洲乱妇24p,亚洲婷婷综合色高清在线,91情国产l精品国产亚洲区
http://m.tkk7.com/kissjava/category/34870.htmlzh-cn Fri, 20 Nov 2009 07:18:52 GMT Fri, 20 Nov 2009 07:18:52 GMT 60 Flex Hack 02:DataGrid列尾Q用于数据汇?/title> http://m.tkk7.com/kissjava/archive/2009/08/17/291563.htmlkissjava kissjava Mon, 17 Aug 2009 14:27:00 GMT http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html http://m.tkk7.com/kissjava/comments/291563.html http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html#Feedback 3 http://m.tkk7.com/kissjava/comments/commentRss/291563.html http://m.tkk7.com/kissjava/services/trackbacks/291563.html 阅读全文 ]]> Flex Hack 01:labelFunction的?/title> http://m.tkk7.com/kissjava/archive/2009/08/16/291326.htmlkissjava kissjava Sun, 16 Aug 2009 02:32:00 GMT http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html http://m.tkk7.com/kissjava/comments/291326.html http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html#Feedback 1 http://m.tkk7.com/kissjava/comments/commentRss/291326.html http://m.tkk7.com/kissjava/services/trackbacks/291326.html
但是在Flex中就能很方便的解册L问题Q对于显CZ个字D,只需要指定对应字D属性给labelField卛_Q当需要上q所需要的功能的时候就得做个{换了Q在Flex的基于List的组仉有一个labelFunctionҎ能很单指定所需要显C的内容?nbsp; 阅读全文 ]]> actionscript之o?/title> http://m.tkk7.com/kissjava/archive/2009/07/26/288476.htmlkissjava kissjava Sun, 26 Jul 2009 14:30:00 GMT http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html http://m.tkk7.com/kissjava/comments/288476.html http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html#Feedback 0 http://m.tkk7.com/kissjava/comments/commentRss/288476.html http://m.tkk7.com/kissjava/services/trackbacks/288476.html
昄对象qo是通过原始对象的副本~存为透明位图来工作的?br />
o镜应用于昄对象后,只要此对象具有有效的滤镜列表QAdobe Flash Player ׃该
对象~存Z图。然后,此位图用作所有后l应用的滤镜效果的原始图像?br />
每个昄对象通常包含两个位图Q一个包含原始未qo的源昄对象Q另一个用于过滤后?br />
最l图像。呈现时使用最l图像。只要显C对象不发生更改Q最l图像就不需要更新?
在运行时更改滤镜
如果已经ҎC对象应用了一个或多个滤镜Q则无法?filters 属性数l添加其它o镜。若
要添加或更改应用的这lo镜,需要创建整个o镜数l的副本Q然后对此(临时Q数l进?br />
修改。然后,此数组重新分配l显C对象的 filters 属性,q样才能o镜应用于该对
象?/p>
滤镜和对象变?br />
在显C对象的Ҏ矩Ş之外的Q何过滤区域(例如投媄Q都不能视ؓ可进行点L(定
实例是否与其它实例重叠或交叉Q的表面。由?DisplayObject cȝ点击方法是Z?br />
量的Q因此无法在位图l果上执行点L。例如,如果您对按钮实例应用斜角滤镜Q则?br />
该实例的斜角部分Q点L不可用?br />
滤镜不支持羃放、旋转和倾斜Q如果过滤的昄对象本nq行了羃放(如果 scaleX ?br />
scaleY 不是 100%Q,则o镜效果将不随该实例羃放。这意味着Q实例的原始形状旋转?br />
~放或倾斜Q而o镜不随实例一h转、羃放或倾斜?br />
可以使用滤镜l实例添加动画,以Ş成理想的效果Q或者嵌套实例ƈ使用 BitmapData cM
滤镜动v来,以获得此效果?/p>
可用的显Co?br />
ActionScript 3.0 包括 9 个可用于昄对象?BitmapData 对象的o镜类Q?br />
?斜角滤镜QBevelFilter c)
?模糊滤镜QBlurFilter c)
?投媄滤镜QDropShadowFilter c)
?发光滤镜QGlowFilter c)
?渐变斜角滤镜QGradientBevelFilter c)
?渐变发光滤镜QGradientGlowFilter c)
?颜色矩阵滤镜QColorMatrixFilter c)
?L滤镜QConvolutionFilter c)
?|换图o镜(DisplacementMapFilter c)
斜角滤镜
BevelFilter cd许您对过滤的对象d三维斜面边缘。此滤镜可对象的硬角或边缘h?br />
角或边缘被凿削或呈斜面的效果?br />
BevelFilter cd性允许您自定义斜角的外观。您可以讄加亮和阴影颜艌Ӏ斜角边~模p?br />
斜角角度和斜角边~的位置Q甚臛_以创建挖I效果?/p>
模糊滤镜
BlurFilter cd使显C对象及其内容具有涂Ҏ模糊的效果。模p效果可以用于生对象不
在焦点之内的视觉效果Q也可以用于模拟快速运动,比如q动模糊。通过模po镜的
quality 属性设|ؓ低,可以模拟轻轻d焦点的镜头效果。将 quality 属性设|ؓ高会
产生cM高斯模糊的^滑模p效果?/p>
投媄滤镜
投媄lh一U目标对象上Ҏ独立光源的印象。可以修Ҏ光源的位|和强度Q以产生各种
不同的投影效果?br />
投媄滤镜使用与模po镜的法怼的算法。主要区别是投媄滤镜有更多的属性,您可以修
改这些属性来模拟不同的光源属性(?Alpha、颜艌Ӏ偏Ud亮度Q?br />
投媄滤镜q允许您Ҏq样式应用自定义变形选项Q包括内侧或外侧阴媄和挖I(也称?br />
剪切块)模式?/p>
发光滤镜
GlowFilter cd昄对象应用加亮效果Q昄对象看v来像是被下方的灯光照亮,可创?br />
ZU柔和发光效果?br />
与投影o镜类|发光滤镜包括的属性可修改光源的距R角度和颜色Q以产生各种不同?br />
果。GlowFilter q有多个选项用于修改发光样式Q包括内侧或外侧发光和挖I模式?/p>
渐变斜角滤镜
GradientBevelFilter cd许您ҎC对象或 BitmapData 对象应用增强的斜角效果。在?br />
角上使用渐变颜色可以大大改善斜角的空间深度,使边~生一U更逼真的三l外观效果?/p>
渐变发光滤镜
GradientGlowFilter cd许您ҎC对象或 BitmapData 对象应用增强的发光效果。该?br />
果可使您更好地控制发光颜Ԍ因而可产生一U更逼真的发光效果。另外,渐变发光滤镜q?br />
允许您对对象的内侧、外侧或上侧边缘应用渐变发光?/p>
颜色矩阵滤镜
ColorMatrixFilter cȝ于操作过滤对象的颜色?Alpha 倹{它允许您进行饱和度更改、色
相旋转(调色板从一个颜色范围移动到另一个颜色范_、将亮度更改?AlphaQ以及生
成其它颜色操作效果,Ҏ是用一个颜色通道中的|q将q些值潜U默化地应用于其?br />
通道?br />
从概念上来说Qo镜将逐一处理源图像中的像素,q将每个像素分ؓU、绿、蓝?Alpha l?br />
件。然后,用每个g以颜色矩阵中提供的|结果加在一起以定该像素将昄在屏q?br />
上的最l颜色倹{o镜的 matrix 属性是一个由 20 个数字组成的数组Q用于计最l颜艌Ӏ?br />
有关用于计算颜色值的特定法的详l信息,请参阅《ActionScript 3.0 语言和组件参考?br />
中说?ColorMatrixFilter cȝ matrix 属性的条目?/p>
L滤镜
ConvolutionFilter cd用于?BitmapData 对象或显C对象应用广泛的囑փ变ŞQ如?br />
p、边~检、锐化、Q雕和斜角?br />
从概念上来说Q卷Uo镜会逐一处理源图像中的每个像素,q用像素和它周围的像素的?br />
来确定该像素的最l颜艌Ӏ指定ؓ数值数l的矩阵可以指示每个特定邻近像素的值对最l结
果值具有何U程度的影响?/p>
|换图o?br />
DisplacementMapFilter cM?BitmapData 对象Q称为置换图囑փQ中的像素值在新对
象上执行|换效果。通常Q置换图囑փ与将要应用o镜的实际昄对象?BitmapData 实例
不同。置换效果包括置换过滤的囑փ中的像素Q也是_这些像素移开原始位置一定距
R此滤镜可用于生移位、扭曲或斑点效果?br />
应用于给定像素的|换位置和置换量q换图囑փ的颜色值确定。用o镜时Q除了指定置
换图囑փ外,q要指定以下|以便控制|换囑֛像中计算|换的方式:
?映射点:qo囑փ上的位置Q在该点应用置换o镜的左上角。如果只惛_囑փ的一?br />
分应用o镜,可以使用此倹{?br />
?X lgQ媄响像素的 x 位置的置换图囑փ的颜色通道?br />
?Y lgQ媄响像素的 y 位置的置换图囑փ的颜色通道?br />
?X ~放比例Q指?x 轴置换强度的乘数倹{?br />
?Y ~放比例Q指?y 轴置换强度的乘数倹{?br />
420 qo昄对象
?滤镜模式Q确定在Ud像素后Ş成的I白区域中, Flash Player 应执行什么操作。在
DisplacementMapFilterMode cM定义为常量的选项可以昄原始像素Qo镜模?br />
IGNOREQ、从囑փ的另一侧环l像素(滤镜模式 WRAPQ这是默认设|)、用最q的U?br />
位像素(滤镜模式 CLAMPQ或用颜色填充空_滤镜模式 COLORQ?/p>
]]> DataGrid透明昄背景囄Q及表头透明 http://m.tkk7.com/kissjava/archive/2009/03/27/262521.htmlkissjava kissjava Fri, 27 Mar 2009 14:59:00 GMT http://m.tkk7.com/kissjava/archive/2009/03/27/262521.html http://m.tkk7.com/kissjava/comments/262521.html http://m.tkk7.com/kissjava/archive/2009/03/27/262521.html#Feedback 3 http://m.tkk7.com/kissjava/comments/commentRss/262521.html http://m.tkk7.com/kissjava/services/trackbacks/262521.html 阅读全文 ]]> 【{】Flex中元数据标签 http://m.tkk7.com/kissjava/archive/2009/02/04/253275.htmlkissjava kissjava Wed, 04 Feb 2009 08:38:00 GMT http://m.tkk7.com/kissjava/archive/2009/02/04/253275.html http://m.tkk7.com/kissjava/comments/253275.html http://m.tkk7.com/kissjava/archive/2009/02/04/253275.html#Feedback 0 http://m.tkk7.com/kissjava/comments/commentRss/253275.html http://m.tkk7.com/kissjava/services/trackbacks/253275.html Flex 2 中的元数据标{?br />
——告诉编译器如何~译
虽然多数Flex开发者都?用过[Bindable]标签Q但是很多h都不知道q个标签的作用甚至不知道该标{ؓ何物。[Bindable]是所谓的元数据标{。元数据标签是一U?Ҏ的标{,它在代码中的作用是向编译器提供如何~译E序的信息。实际上Q这些标{ƈ没有被编译到生成的SWF文g中,而只是告诉编译器如何生成SWF 文g。文档中列出的元数据标签共有12个,本文讲解这些元数据标签的定义ƈl出使用它们的示例,在看完这文章之后,你就会明白应该在何时何处在你?Flex 2应用E序中用元数据标签了?br />
[ArrayElementType]
实际上,定义一个数l通常来说是一件很q_的事情,因ؓ数组中的元素可以是Q何类型的。不q,使用ArrayElementType元数据标{֏以让你定义数l元素的数据cd。下面的例子展示了如何用[ArrayElementType]Q?br />
[ArrayElementType(”String”)]
public var arrayOfStrings:Array;
[ArrayElementType(”Number”)]
public var arrayOfNumbers:Array;
[ArrayElementType(”mx.core.UIComponent”)]
public var arrayOfUIComponents:Array;
[Bindable]
Bindable元数据标{是最l常用到的一个元数据标签Q因为它使程序组件之间的数据同步变得很容易。Bindable可以用来l定单数据类型、类、复杂数据类型以及函数。绑定数据的时候,你必d使用元数据标{֮义一下数据,正如Listing 1中所C的那样。图1是Listing 1的代码运行结果?br />
?Q?br />
Bindable也可以用来绑定到事g。Listing 2?CZ如何使用getter和setter函数一个属性绑定到一个事件上。这个例子中有一个叫做phoneNumber的私有变量,q有一个公有的 setter和getter函数。用Bindable标签这个getterҎl定C一个叫做phoneNumberChanged的事件上Q只?数据发生改变setterҎ׃分派phoneNumberChanged事g。通过使用setterҎQ可以在数据赋予U有变量之前对其q行操作?在这个例子中Q数据只有在长度大于{于10的时候才会被格式化。当phoneNumberChanged事g被分z时候,W二个TextInputlg 会被更新Q因Z的text属性绑定到了phoneNumber变量上?br />
?和图3昄了Listing 2代码的运行结果?br />
?Q?br />
?Q?br />
[DefaultProperty]
DefaultProperty元数据标{来将一个单一属性设定ؓ某个cȝ默认属性。它允许在一个容器标{ֆ讑֮属性,而不用定义属性的名字。一个简单的例子是一个自定义ButtoncRListing 3展示了一个简单的Buttonc,它将label属性设定ؓ了DefaultProperty。Listing 4展示了label属性是如何在自定义Button标签中作Z个字W串定义的?br />
[Embed]
Embed元数据标{来导入图片到E序。可以通过两种方式使用Embed。你可以图片嵌入到ActionScript中ƈ其指派l一个变量(如同下面代码中的W一个例子)Q或者你也可以将囄直接指派l组件的属性(使用下面代码中的W二个例子所C的语法规则Q?br />
?Q?/p>
[Embed(source=”myIcon.gif”)]
[Bindable]
public var myIcon:Class;<mx:Button label=”Icon Button 1″ icon=”{myIcon}”/>
<mx:Button label=”Icon Button 2″ icon=”{myIcon}”/>
?Q?/p>
<mx:Button label=”Icon Button 1″ icon=”@Embed(source=myIcon.gif’)”/><mx:Button label=”Icon Button 2″ icon=”@Embed(source=myIcon.gif’)”/>
上面q两个例子生的l果是一L。创建myIconcȝ好处是,它在一个类中只定义一ơƈ可以l定到程序中的多个组件?br />
[Event]
Event元数据标{来声明那些被自定义类分派的事件。将q个元数据标{添加到cd义中之后Q你可以在MXML标签中添加事件处理函数来初始化该自定义类。Listing 5创徏了一个自定义Buttonc,每当它的label属性改变的时候就会分z一个事件。Listing 6所昄的主E序文g初始化了q个自定义Buttonq创Z事g处理函数Q该函数新的labe属性Dl了一个TextArealg以显C当前发生的更改?br />
?昄了Listing 5 ?Listing 6中的代码q行l果?br />
?Q?br />
[Effect]
Effect元数据标{来定义一个自定义效果Q当某个事g发生的时候该效果会被分派。这个示例可以基于前面Event的例子来创徏Q通过单地更改ButtonLabelc?Listing 7)中的一行代码,定义了一个效果,该效果可以在MXML标签中直接?Listing 8)?br />
[IconFile]
IconFile 是用来定义一个jpgQgif或者png文g的文件名的,它在你的自定义类中作为图标来使用。[Embed]元数据标{֏以用来嵌入图片、SWF文g、音 乐文件以及视频文件等Q而IconFile则只是用来嵌入用来作定义cd标的文g。下面是一个IconFile的例子:
[IconFile(”icon.png”)]
public class CustomButton extends Button
{}
[Inspectable]
在用Flex Builder 2的时候,你可能会希望某些自定义组件的属性在代码提示和属性检查器Qproperty inspectorQ中昄QInspectable元数据标{ְ是用来定义那些属性的。Listing 9展示的例子定义了一个inspectable的ccType变量Q它定义了Visa为默认倹{Credit Card为类别ƈ取D围定义ؓ包含了Visa, Mastercard, Discover, ?American Express的枚举?br />
?展示了当组件添加到E序中的时候所昄的代码提C?br />
?Q?br />
?与上面展C的是同L代码Q但是这ơ是设计视图Q所以我们能看到属性检查器。你可以看到属性ccType的类别ؓCredit CardQ它的所有可选的值都在下拉列表中?br />
?Q?br />
[InstanceType]
当在一个模板对象中声明一个像IDeferredInstanceq样的变量时QInstanceType元数据标{ְ用来声明对象的类型。下面是InstanceType的用法:
[InstanceType(”package.className”)]
[NonCommittingChangeEvent]
NonCommittingChangeEvent元数据标{֜某个特定事g发生的时候可以防止变量在事g发生的过E中被更攏VListing 10?CZ它是如何工作的。一个名为s的字W串cd的私有变量被l定C名ؓti2的TextInputlg上。另外一个id为ti1的TextInputlg 在它的text发生更改的时候就会将s的D|ؓ它的text属性的倹{另外,当triggerBinding 事g被分z时候,附加在s变量上的Binding元数据标{ְ会进行绑定。只有在Enter键在ti1 TextInputlg中被按下时才会分ztriggerBinding事g?br />
[RemoteClass]
RemoteClass 可以用来一个ActionScriptcȝ定到一个JavacL一个ColdFusion CFC。这样做可以自动转换数据cd。下面的例子包com.mydomain中的名ؓMyClass的ActionScriptcȝ定到了同一个包中名 为MyClass的Javac:
package com.mydomain {
[Bindable]
[RemoteClass(alias=”com.mydomain.MyClass”)]
public class MyClass {
public var id:int; public var myText:String;
}
}
[Style]
Style元数据标{来ؓlg定义自定义样式属性的。只需要简单地Sytle元数据标{添加到cȝ定义当然Q然后就可以使用getSytleҎ获取它的g。Listing 11 ?12中的例子定义了两个样式,分别为borderColor 和fillColorQ它们的数据cd都是uint。当cd始化的时候这两个样式׃在标{中被设定。代码中覆写了updateDisplayList函数Q用自定义的样式M一个圆形边框ƈ其填充?br />
?展示了Listing 11 ?Listing 12中代码运行的l果?br />
?Q?br />
现在你应该会有这L感觉了:“喔,现在我知道在哪里可以使用它们?#8221;或?#8220;嗯,我想我会在新的项目中试使用q些元数据标{?#8221;。如果你没有Q那么你可能需要回q头d看一遍这文章。OKQ我惌的是Adobe Flex组提供l我们的元数据标{不只是非常的强大,可以让我们扩展或自定义我们要做的东西Q而且它还非常易于使用。通过使用它们Q仅仅几行代码就可以完成一大堆事情。如果不使用q些标签Q你会发现在Flex 2中实C些东西是很辛苦的?br />
本文来源?冰山上的播客 http://xinsync.xju.edu.cn , 原文地址Qhttp://xinsync.xju.edu.cn/index.php/archives/1615
]]>用Flex调用SWF查看PDF http://m.tkk7.com/kissjava/archive/2008/09/26/231383.htmlkissjava kissjava Fri, 26 Sep 2008 14:17:00 GMT http://m.tkk7.com/kissjava/archive/2008/09/26/231383.html http://m.tkk7.com/kissjava/comments/231383.html http://m.tkk7.com/kissjava/archive/2008/09/26/231383.html#Feedback 28 http://m.tkk7.com/kissjava/comments/commentRss/231383.html http://m.tkk7.com/kissjava/services/trackbacks/231383.html 阅读全文 ]]> Flex事g讲解【{?/title> http://m.tkk7.com/kissjava/archive/2008/08/26/224539.htmlkissjava kissjava Tue, 26 Aug 2008 10:26:00 GMT http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html http://m.tkk7.com/kissjava/comments/224539.html http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html#Feedback 0 http://m.tkk7.com/kissjava/comments/commentRss/224539.html http://m.tkk7.com/kissjava/services/trackbacks/224539.html http://www.riachina.com/showtopic-8747.html
关于flex事g的讲?br />
一Q引
很多Ch对Flex的事件机刉不太熟悉Q在使用q程中难免会出现各种问题Q这是一个非常普遍的问题Qؓ了更快更好的帮助大家Q将介绍一下Flex中事件的各种机制和用法?br />
Flex的精髓之一是事g和绑定机Ӟ了解之后Q能帮助大家更灵zȝ设计E序Q也Ҏ手上路有一定的帮助?br />
讲解可能不太pȝQ也不全面,有很多没有深入。如果高手看到后有疑问,Ƣ迎指正。当然各位也可以提出自己的看法,或者经验分享,谢谢?br />
二.事g机制介绍
1. 什么是事g机制
事g可以看作是一U触发机Ӟ当满了一定的条g后,会触发这个事件。比如MouseEvent是指的当鼠标进行操作之后触发的一pd的事件。很多控件中都有click事gQ这个事件就是一个MouseEvent的实例,当点击鼠标后Q系l会自动抛出一个名UCؓclick的MouseEvent事gQ这U方法我们将在后面介l到Q。如果此时在click上注册一个方法,那么触发该事件时׃执行q个Ҏ?br />
大致C意?br />
该示意图对应的Flexd用的mxml代码
< mx:Script >
<! [CDATA[
import mx.controls.Alert;
private function clickHandler(e:MouseEvent) {
Alert.show(e.currentTarget.toString());
}
]]>
</ mx:Script >
< mx:Button id = " testBtn " click = " clickHandler(event) " label = " 试 " >
</ mx:Button >
在我们写代码Ӟ~辑器的代码补全提示列表中,有很多不同的图标Q如?br />
那些带有闪电的就是事Ӟ三个块的就是样式,I心圆圈的是属性,实心圆点的是公有ҎQ还有一个是效果?br />
我们能在q个列表中看到的事gQ我把它UCZ件注册通道。(官方仍然U它ZӞ但是它又和普通的事g含义不同。关于事件注册通道会再下面讲述刎ͼ
2. 事g注册通道
上面说到了,q些通道是只能在mxml的代码提CZ可以看到的,他的作用是lmxmllg提供 事g触发时所执行的方法的注册通道Q而且能在代码提示中可见,q样l组件提供了很大的抽象的好处Q我们可以很清楚的告诉组件的使用者,lg里包含哪些事件给你调用?br />
Z么把他区别对待?除了代码提示外,他还有一些实C的不同?br />
Button的click事g是承自核心cInteractiveObjectQ遗憾我们看不到他的源码Q但是说明了“事g注册通道”是可以承的?br />
我们会在自定义事件中讲述到如何声?#8220;事g注册通道”?br />
3. 事g触发Ҏ
注册通道中如果填入了函数Q那么就代表触发该事件时Q会执行q个Ҏ?br />
click="clickHandler(event)"
我们看到q个Ҏ有一个event对象作ؓ参数传入Q新人可能会问到Q这个event对象哪里来的Q我也没声明q个变量啊。他实际上是注册通道传给他的Q默认变量名是event。我们如果想在事件触发时传其他的参数Q可以通过自定的事件对象来实现?br />
q个对象是q个lg分发的事件对象,即type?#8220;click”的MouseEvent的一个实例?br />
q个event对象包含了触发该事g时的各种信息Q比如触发事件对象是哪个Q监听对象是哪个Q触发时鼠标点在哪里{等Q不同的eventcM包含不同的属性,比如KeyboardEvent包含了键盘点M哪个键?br />
我们也可以通过自定义一个事件类Q来传递我们自己想要的各种信息。(q在后面介l到Q?br />
4. 事g分发Q重点了Q?/font>
最l承自EventDispatcher的对象都会含有dispatchEventq个ҎQ他有一个参敎ͼ事g对象?br />
之前说到的事件注册通道Q他只是一个通道Q实际上事g是由q个Ҏ来分发出ȝQ通道只是一个管道而已?br />
他的作用是分发一个事件对象,他的分发是没有目的的Q一U广播Ş式的QFlex的事件监听线E会接收到各U各L事gQ我们称之ؓ捕获事gQ这在后面会介绍刎ͼQ那么哪U才是你要的事gQ标识就通过事g的type属性来区分?br />
1Q事件对?br />
在分发事件时Q将会分发一个事件对象出厅R不是那个事gc,都是l承自flash.events.Event对象的,他包含一些比较重要的属性,type和bubbles?br />
type是事件的cdQ事件监听通过q个参数来识别是否是自己所监听的事件?br />
bubbles是个布尔|军_了该对象是否会向上传递。默认是false。什么意思呢Q画个图明白了?br />
比如_当buttonlg分发click事g对象Ӟ讄的bubbles为falseQ那么他的分发是q样?br />
C意代码
dispatchEvent(new MouseEvent( “click” , false ));
事g对象无法跨越lg本nQ当Ӟ除了之前讲到的注册通道Q这样就很Ş象了吧)
因此Q如果没有注册通道Q在Flexd用中Q就无法捕获到这个buttonlg分发出的事g?br />
如果我们Bubbles设ؓtrueQ他看v来就是这?br />
dispatchEvent(new MouseEvent( “click” , true ));
可以看到Q这个事件可以跨q组件本w,到达Flexd用里。不止这P在帮助手册中明确说到Q如果在传递过E中间一直没有被捕获的话Q这个事件会逐层上传Q直到最l的stageQ那时如果还没被捕获Q这个事件就会被销毁掉?
q样一来,即我们没有click的事仉道Q只要我们在Flexd用中d事g监听器(addEventListenerQ那么我们就可以获得到这个分发出的click事g了?br />
那么Q注册通道不是没用了吗Q不是,之前说到q,注册通道是现式的Q可见的Q因此如果你的组件要l其他h使用Q那么就非常一目了Ӟ而不必知道你源码中究竟分发了什么事件。但是,不要监听和注册同一个事Ӟq样会重复执行的。(后面讲刎ͼ
5. 事g监听
在分发中Q我们讲刎ͼ如果不是通过注册通道来调用触发事Ӟ那么我们是需要一个监听来捕捉的。如何捕捉到分发出的事gQ就是通过事g的type倹{?br />
比如:
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:comp
creationComplete='init()'
>
<mx:Script>
<![CDATA[
private function init(){
testBtn.addEventListener(“click”, clickHandler);
}
Flex的事件中都提供了一些静态常量,让我们调用,避免我们打错了。因此这句话可以q么?br />
testBtn.addEventListener(MouseEvent.CLICK,clickHandler);
我们看到Q监听的回调Ҏ中没有传递参敎ͼ是的Q这和通道的写法有些不同,q里的回调方法(即clickHandlerQ只是个引用Qƈ不是代表Ҏ的执行,他的含义是,告诉eventLinstenerQ如果捕捉到click事gQ那么就LclickHandlerQƈ执行它,event对象参数在执行时动态的传递。(如果熟悉ajax的朋友这里应该很Ҏ懂了Q?br />
他作用v来就是这?br />
如果你又注册了click的事仉道Q那么这两个都会生效Q显然这是多余的?br />
6. 关于异步和执行顺?br />
以前的说法有误,as里是不存在线E概늚Q在q程hӞl果事g、错误事仉是异步的。如果你需要处理结果,需要利用监听,q在回调中获取你的远E数据?br />
而在处理本地事gӞ他们仍然是同步的。(谢谢ltian 的指正)
异步C意?br />
上图可以看出Q回调方法执行的序甚至q不如dispatchEvent之后的方法。如果接下来的方法依赖于事g回调Q那么把接下来的Ҏ写到回调Ҏ中去
三.l定机制
在我们了解了事g机制后,那么理解l定׃难了。绑定其实也是事件机制的q用
1. 什么是l定
l定的原理就是事Ӟ在被l定的对象上增加了改变事件的监听Q一旦某个被l定对象改变后,׃分发一?#8220;propertyChange”事gQ默认的Q也可以改变成自己定义的事gQ,在其他组件中Q会有propertyChange的事件监听,当捕捉到该事件后Q则会去更新lg的属性ƈ昄?br />
l定的作用在于,Flex中的变量、类、方法等与组件的D行绑定。例如,一个变量如果被l定后,那么引用该变量的lg的相兛_性也会发生改变。我们用一个实例来表示
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:comp
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable]
private var isSelected:Boolean;
private function clickHandler(e:MouseEvent){
//Alert.show(e.currentTarget.toString());
isSelected=isSelected?false:true; //q句话的意思是如果isSelected为trueQ改变它为falseQ如果它为falseQ改变它为trueQ?br />
Alert.show(isSelected.toString());
}
]]>
</mx:Script>
<mx:Button id="testBtn" click="clickHandler(event)" label="试" />
<mx:CheckBox x="60" selected="{isSelected}" />
</mx:Application>
上述E序的效果就是,当点击buttonӞbutton不是直接改变checkbox的选中状态,而是改变isSelectedq个变量Q由于isSelected是被l定了的Q那么会兌的改变CheckBox的选中状态?br />
q样看v来有些多此一举,完全可以直接改变checkbox的selected属性,我只是ؓ了演CZ下效果。如果说你的checkbox是动态构造的上百个,你不会去一个个的改变他吧?br />
因此Q我们多C一个数据源q行l定声明Q这样引用了q个数据源的控gQ比如datagridQ在数据源发生了改变Ӟ即你不重新讄dataProviderQ列表的数据也会h。当Ӟq有很多应用{待你去试?br />
如果q个代码中取消了[Bindable]的声明,会怎么PisSelected不会改变了吗Q?br />
isSelected会改变,我们alert出来的结果也会显C结果改变了Q但是checkbox的选择状态不会改变,因ؓ当一个组件由创徏到最l显C出来时是经q很多方法的Q比如addChildQcommitPropertiesQupdateDisplayList{,updataDisplayList则是cMh昄效果一LҎ?br />
仅仅改变属性,而不L新显C效果那么组件不会因为属性的改变而发生Q何变化?br />
l定的原理也是利用的事g分发。更复杂的绑定有待你去自己发C
? 自定义事件的分发
q部分就不长大ZQ因为各位应该已l掌握了事g的原理,因此贴出演示源码Qƈq行些简单的解释?br />
1. 自定义事?components/MyEventTest.as
package components
{
import mx.events.FlexEvent;
public class MyEventTest extends FlexEvent
{
public static const ONCHANGE:String = "onChange";
public var eventInfo:String; //自定义的事g信息
public function MyEventTest(s:String){
super(s); //如果在构造时不设bubblesQ默认是falseQ也是不能传递的?br />
eventInfo="q个事g?"+s;
}
}
}
2. 自定义组?components/ComponentForEvent.as
package components
{
import flash.events.EventDispatcher;
//q个是声明事g注册通道的方法了。name是事件对应的名称Q也是之前提到的type。Type是该事g的类
[Event(name="onChange", type="components.MyEventTest")]
public class ComponentForEvent extends EventDispatcher
{
private var name:String;
public function changeName(newName:String){
this.name=newName;
dispatchEvent(new MyEventTest(MyEventTest.ONCHANGE) );
}
}
}
3. App.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:comp
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function changeName(){
cfe.changeName("新名U?);
}
]]>
</mx:Script>
<mx:Button id="testBtn" click=" changeName ()" label="试" />
<components:ComponentForEvent
id="cfe" />
</mx:Application>
]]>
վ֩ģ壺
ִӲִˬƵ |
ƵƷ |
ۺ |
AëƬ |
ƷƷպͼ |
ĻƷ |
ƵѲ |
͵͵APP |
˳һ |
ձһѸ |
þëƬѿһ |
Ʒѹۿ |
ۺϾþþƷ |
þƵ |
ɫavƷר |
Av뾫Ʒɫҹ |
ձ |
ձһƷƵ |
ѹëƬ |
þAV뾫Ʒɫҹ鶹
|
ĻƵ߹ۿ |
ŮƷþþþ |
Ʒ㶮վ |
һ߹ۿ |
һëƬѲ |
պ߹ۿ |
avۺavav |
˳Ƶ߹ۿ |
ҹ1000 |
Ѹ |
av뾫Ʒ |
Ӱһ |
þAAAƬ69 |
ձ˳Ƶ |
һëƬ |
aëƬ߿Ƭ |
ݹѹۿ |
AV˵ |
ŷ |
ްv |
þþþþþƷ |