??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱亚洲乱妇24p,亚洲婷婷综合色高清在线,91情国产l精品国产亚洲区 http://m.tkk7.com/kissjava/category/34870.htmlzh-cnFri, 20 Nov 2009 07:18:52 GMTFri, 20 Nov 2009 07:18:52 GMT60Flex Hack 02:DataGrid列尾Q用于数据汇?/title><link>http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html</link><dc:creator>kissjava</dc:creator><author>kissjava</author><pubDate>Mon, 17 Aug 2009 14:27:00 GMT</pubDate><guid>http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html</guid><wfw:comment>http://m.tkk7.com/kissjava/comments/291563.html</wfw:comment><comments>http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/kissjava/comments/commentRss/291563.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/kissjava/services/trackbacks/291563.html</trackback:ping><description><![CDATA[     摘要: Excel的表g会在在一l数据的后面有一行数据来昄q个表格的某一列的q_敎ͼ最大|最值等Q在Flex中做些小动作也能做出cM效果?nbsp; <a href='http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html'>阅读全文</a><img src ="http://m.tkk7.com/kissjava/aggbug/291563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">kissjava</a> 2009-08-17 22:27 <a href="http://m.tkk7.com/kissjava/archive/2009/08/17/291563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Hack 01:labelFunction的?/title><link>http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html</link><dc:creator>kissjava</dc:creator><author>kissjava</author><pubDate>Sun, 16 Aug 2009 02:32:00 GMT</pubDate><guid>http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html</guid><wfw:comment>http://m.tkk7.com/kissjava/comments/291326.html</wfw:comment><comments>http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/kissjava/comments/commentRss/291326.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/kissjava/services/trackbacks/291326.html</trackback:ping><description><![CDATA[     摘要: 写过Swing的h都知道,如果使用List的组件或包含Listlg如JComboBoxQ他们的item需要显C几个字D늚时候,需要做额外的动作,比如在List需要显C的对象d一个toStringҎ便能l合昄出想要的效果Q但是有时候一个POJO或VO又不允许你添加这么一个方法。这个时候就需要在Renderer中利用反的机制能解x需要的Ҏ?<br> <br> 但是在Flex中就能很方便的解册L问题Q对于显CZ个字D,只需要指定对应字D属性给labelField卛_Q当需要上q所需要的功能的时候就得做个{换了Q在Flex的基于List的组仉有一个labelFunctionҎ能很单指定所需要显C的内容?nbsp; <a href='http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html'>阅读全文</a><img src ="http://m.tkk7.com/kissjava/aggbug/291326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">kissjava</a> 2009-08-16 10:32 <a href="http://m.tkk7.com/kissjava/archive/2009/08/16/291326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>actionscript之o?/title><link>http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html</link><dc:creator>kissjava</dc:creator><author>kissjava</author><pubDate>Sun, 26 Jul 2009 14:30:00 GMT</pubDate><guid>http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html</guid><wfw:comment>http://m.tkk7.com/kissjava/comments/288476.html</wfw:comment><comments>http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/kissjava/comments/commentRss/288476.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/kissjava/services/trackbacks/288476.html</trackback:ping><description><![CDATA[滤镜的工作原?br /> 昄对象qo是通过原始对象的副本~存为透明位图来工作的?br /> o镜应用于昄对象后,只要此对象具有有效的滤镜列表QAdobe Flash Player ׃该<br /> 对象~存Z图。然后,此位图用作所有后l应用的滤镜效果的原始图像?br /> 每个昄对象通常包含两个位图Q一个包含原始未qo的源昄对象Q另一个用于过滤后?br /> 最l图像。呈现时使用最l图像。只要显C对象不发生更改Q最l图像就不需要更新? <p>在运行时更改滤镜<br /> 如果已经ҎC对象应用了一个或多个滤镜Q则无法?filters 属性数l添加其它o镜。若<br /> 要添加或更改应用的这lo镜,需要创建整个o镜数l的副本Q然后对此(临时Q数l进?br /> 修改。然后,此数组重新分配l显C对象的 filters 属性,q样才能o镜应用于该对<br /> 象?/p> <p>滤镜和对象变?br /> 在显C对象的Ҏ矩Ş之外的Q何过滤区域(例如投媄Q都不能视ؓ可进行点L(定<br /> 实例是否与其它实例重叠或交叉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<br /> 滤镜动v来,以获得此效果?/p> <p>可用的显Co?br /> ActionScript 3.0 包括 9 个可用于昄对象?BitmapData 对象的o镜类Q?br /> ?斜角滤镜QBevelFilter c)<br /> ?模糊滤镜QBlurFilter c)<br /> ?投媄滤镜QDropShadowFilter c)<br /> ?发光滤镜QGlowFilter c)<br /> ?渐变斜角滤镜QGradientBevelFilter c)<br /> ?渐变发光滤镜QGradientGlowFilter c)<br /> ?颜色矩阵滤镜QColorMatrixFilter c)<br /> ?L滤镜QConvolutionFilter c)<br /> ?|换图o镜(DisplacementMapFilter c)</p> <p>斜角滤镜<br /> BevelFilter cd许您对过滤的对象d三维斜面边缘。此滤镜可对象的硬角或边缘h?br /> 角或边缘被凿削或呈斜面的效果?br /> BevelFilter cd性允许您自定义斜角的外观。您可以讄加亮和阴影颜艌Ӏ斜角边~模p?br /> 斜角角度和斜角边~的位置Q甚臛_以创建挖I效果?/p> <p>模糊滤镜<br /> BlurFilter cd使显C对象及其内容具有涂Ҏ模糊的效果。模p效果可以用于生对象不<br /> 在焦点之内的视觉效果Q也可以用于模拟快速运动,比如q动模糊。通过模po镜的<br /> quality 属性设|ؓ低,可以模拟轻轻d焦点的镜头效果。将 quality 属性设|ؓ高会<br /> 产生cM高斯模糊的^滑模p效果?/p> <p>投媄滤镜<br /> 投媄lh一U目标对象上Ҏ独立光源的印象。可以修Ҏ光源的位|和强度Q以产生各种<br /> 不同的投影效果?br /> 投媄滤镜使用与模po镜的法怼的算法。主要区别是投媄滤镜有更多的属性,您可以修<br /> 改这些属性来模拟不同的光源属性(?Alpha、颜艌Ӏ偏Ud亮度Q?br /> 投媄滤镜q允许您Ҏq样式应用自定义变形选项Q包括内侧或外侧阴媄和挖I(也称?br /> 剪切块)模式?/p> <p>发光滤镜<br /> GlowFilter cd昄对象应用加亮效果Q昄对象看v来像是被下方的灯光照亮,可创?br /> ZU柔和发光效果?br /> 与投影o镜类|发光滤镜包括的属性可修改光源的距R角度和颜色Q以产生各种不同?br /> 果。GlowFilter q有多个选项用于修改发光样式Q包括内侧或外侧发光和挖I模式?/p> <p>渐变斜角滤镜<br /> GradientBevelFilter cd许您ҎC对象或 BitmapData 对象应用增强的斜角效果。在?br /> 角上使用渐变颜色可以大大改善斜角的空间深度,使边~生一U更逼真的三l外观效果?/p> <p>渐变发光滤镜<br /> GradientGlowFilter cd许您ҎC对象或 BitmapData 对象应用增强的发光效果。该?br /> 果可使您更好地控制发光颜Ԍ因而可产生一U更逼真的发光效果。另外,渐变发光滤镜q?br /> 允许您对对象的内侧、外侧或上侧边缘应用渐变发光?/p> <p>颜色矩阵滤镜<br /> ColorMatrixFilter cȝ于操作过滤对象的颜色?Alpha 倹{它允许您进行饱和度更改、色<br /> 相旋转(调色板从一个颜色范围移动到另一个颜色范_、将亮度更改?AlphaQ以及生<br /> 成其它颜色操作效果,Ҏ是用一个颜色通道中的|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> <p> </p> <p>L滤镜<br /> ConvolutionFilter cd用于?BitmapData 对象或显C对象应用广泛的囑փ变ŞQ如?br /> p、边~检、锐化、Q雕和斜角?br /> 从概念上来说Q卷Uo镜会逐一处理源图像中的每个像素,q用像素和它周围的像素的?br /> 来确定该像素的最l颜艌Ӏ指定ؓ数值数l的矩阵可以指示每个特定邻近像素的值对最l结<br /> 果值具有何U程度的影响?/p> <p>|换图o?br /> DisplacementMapFilter cM?BitmapData 对象Q称为置换图囑փQ中的像素值在新对<br /> 象上执行|换效果。通常Q置换图囑փ与将要应用o镜的实际昄对象?BitmapData 实例<br /> 不同。置换效果包括置换过滤的囑փ中的像素Q也是_这些像素移开原始位置一定距<br /> R此滤镜可用于生移位、扭曲或斑点效果?br /> 应用于给定像素的|换位置和置换量q换图囑փ的颜色值确定。用o镜时Q除了指定置<br /> 换图囑փ外,q要指定以下|以便控制|换囑֛像中计算|换的方式:<br /> ?映射点:qo囑փ上的位置Q在该点应用置换o镜的左上角。如果只惛_囑փ的一?br /> 分应用o镜,可以使用此倹{?br /> ?X lgQ媄响像素的 x 位置的置换图囑փ的颜色通道?br /> ?Y lgQ媄响像素的 y 位置的置换图囑փ的颜色通道?br /> ?X ~放比例Q指?x 轴置换强度的乘数倹{?br /> ?Y ~放比例Q指?y 轴置换强度的乘数倹{?br /> 420 qo昄对象<br /> ?滤镜模式Q确定在Ud像素后Ş成的I白区域中, Flash Player 应执行什么操作。在<br /> DisplacementMapFilterMode cM定义为常量的选项可以昄原始像素Qo镜模?br /> IGNOREQ、从囑փ的另一侧环l像素(滤镜模式 WRAPQ这是默认设|)、用最q的U?br /> 位像素(滤镜模式 CLAMPQ或用颜色填充空_滤镜模式 COLORQ?/p> <img src ="http://m.tkk7.com/kissjava/aggbug/288476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">kissjava</a> 2009-07-26 22:30 <a href="http://m.tkk7.com/kissjava/archive/2009/07/26/288476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DataGrid透明昄背景囄Q及表头透明http://m.tkk7.com/kissjava/archive/2009/03/27/262521.htmlkissjavakissjavaFri, 27 Mar 2009 14:59:00 GMThttp://m.tkk7.com/kissjava/archive/2009/03/27/262521.htmlhttp://m.tkk7.com/kissjava/comments/262521.htmlhttp://m.tkk7.com/kissjava/archive/2009/03/27/262521.html#Feedback3http://m.tkk7.com/kissjava/comments/commentRss/262521.htmlhttp://m.tkk7.com/kissjava/services/trackbacks/262521.html阅读全文

kissjava 2009-03-27 22:59 发表评论
]]>
【{】Flex中元数据标签http://m.tkk7.com/kissjava/archive/2009/02/04/253275.htmlkissjavakissjavaWed, 04 Feb 2009 08:38:00 GMThttp://m.tkk7.com/kissjava/archive/2009/02/04/253275.htmlhttp://m.tkk7.com/kissjava/comments/253275.htmlhttp://m.tkk7.com/kissjava/archive/2009/02/04/253275.html#Feedback0http://m.tkk7.com/kissjava/comments/commentRss/253275.htmlhttp://m.tkk7.com/kissjava/services/trackbacks/253275.htmlFlex 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



kissjava 2009-02-04 16:38 发表评论
]]>
用Flex调用SWF查看PDFhttp://m.tkk7.com/kissjava/archive/2008/09/26/231383.htmlkissjavakissjavaFri, 26 Sep 2008 14:17:00 GMThttp://m.tkk7.com/kissjava/archive/2008/09/26/231383.htmlhttp://m.tkk7.com/kissjava/comments/231383.htmlhttp://m.tkk7.com/kissjava/archive/2008/09/26/231383.html#Feedback28http://m.tkk7.com/kissjava/comments/commentRss/231383.htmlhttp://m.tkk7.com/kissjava/services/trackbacks/231383.html阅读全文

kissjava 2008-09-26 22:17 发表评论
]]>
Flex事g讲解【{?/title><link>http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html</link><dc:creator>kissjava</dc:creator><author>kissjava</author><pubDate>Tue, 26 Aug 2008 10:26:00 GMT</pubDate><guid>http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html</guid><wfw:comment>http://m.tkk7.com/kissjava/comments/224539.html</wfw:comment><comments>http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/kissjava/comments/commentRss/224539.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/kissjava/services/trackbacks/224539.html</trackback:ping><description><![CDATA[文章来自Q?a >http://www.riachina.com/showtopic-8747.html</a><br /> 关于flex事g的讲?br /> <br /> 一Q引<br /> <br /> 很多Ch对Flex的事件机刉不太熟悉Q在使用q程中难免会出现各种问题Q这是一个非常普遍的问题Qؓ了更快更好的帮助大家Q将介绍一下Flex中事件的各种机制和用法?br /> <br /> Flex的精髓之一是事g和绑定机Ӟ了解之后Q能帮助大家更灵zȝ设计E序Q也Ҏ手上路有一定的帮助?br /> <br /> 讲解可能不太pȝQ也不全面,有很多没有深入。如果高手看到后有疑问,Ƣ迎指正。当然各位也可以提出自己的看法,或者经验分享,谢谢?br /> <br /> 二.事g机制介绍<br /> <br /> 1.      什么是事g机制<br /> <br /> 事g可以看作是一U触发机Ӟ当满了一定的条g后,会触发这个事件。比如MouseEvent是指的当鼠标进行操作之后触发的一pd的事件。很多控件中都有click事gQ这个事件就是一个MouseEvent的实例,当点击鼠标后Q系l会自动抛出一个名UCؓclick的MouseEvent事gQ这U方法我们将在后面介l到Q。如果此时在click上注册一个方法,那么触发该事件时׃执行q个Ҏ?br /> <br /> 大致C意?br /> <img height="332" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/1.gif" width="494" border="0" /> <br /> 该示意图对应的Flexd用的mxml代码<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><</span><span style="color: #000000">mx:Script</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="color: #000000"><!</span><span style="color: #000000">[CDATA[<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />                import mx.controls.Alert;        <br /> <img id="Codehighlighter1_141_221_Open_Image" onclick="this.style.display='none'; Codehighlighter1_141_221_Open_Text.style.display='none'; Codehighlighter1_141_221_Closed_Image.style.display='inline'; Codehighlighter1_141_221_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_141_221_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_141_221_Closed_Text.style.display='none'; Codehighlighter1_141_221_Open_Image.style.display='inline'; Codehighlighter1_141_221_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />                private </span><span style="color: #0000ff">function</span><span style="color: #000000"> clickHandler(e:MouseEvent)</span><span id="Codehighlighter1_141_221_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_141_221_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                      Alert.show(e.currentTarget.toString());<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />                }</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          ]]</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"></</span><span style="color: #000000">mx:Script</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"><</span><span style="color: #000000">mx:Button id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">testBtn</span><span style="color: #000000">"</span><span style="color: #000000"> click</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">clickHandler(event)</span><span style="color: #000000">"</span><span style="color: #000000"> label</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">试</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"></</span><span style="color: #000000">mx:Button</span><span style="color: #000000">></span></div> <br /> <br /> <br /> 在我们写代码Ӟ~辑器的代码补全提示列表中,有很多不同的图标Q如?br /> <img height="204" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-022.gif" width="153" border="0" /><br /> 那些带有闪电的就是事Ӟ三个块的就是样式,I心圆圈的是属性,实心圆点的是公有ҎQ还有一个是效果?br /> <br /> 我们能在q个列表中看到的事gQ我把它UCZ件注册通道。(官方仍然U它ZӞ但是它又和普通的事g含义不同。关于事件注册通道会再下面讲述刎ͼ<br /> <br /> 2.      事g注册通道<br /> <br /> 上面说到了,q些通道是只能在mxml的代码提CZ可以看到的,他的作用是lmxmllg提供 事g触发时所执行的方法的注册通道Q而且能在代码提示中可见,q样l组件提供了很大的抽象的好处Q我们可以很清楚的告诉组件的使用者,lg里包含哪些事件给你调用?br /> Z么把他区别对待?除了代码提示外,他还有一些实C的不同?br /> <br /> Button的click事g是承自核心cInteractiveObjectQ遗憾我们看不到他的源码Q但是说明了“事g注册通道”是可以承的?br /> <br /> 我们会在自定义事件中讲述到如何声?#8220;事g注册通道”?br /> <br /> 3.      事g触发Ҏ<br /> <br /> 注册通道中如果填入了函数Q那么就代表触发该事件时Q会执行q个Ҏ?br /> <br /> click="clickHandler(event)"<br /> <br /> 我们看到q个Ҏ有一个event对象作ؓ参数传入Q新人可能会问到Q这个event对象哪里来的Q我也没声明q个变量啊。他实际上是注册通道传给他的Q默认变量名是event。我们如果想在事件触发时传其他的参数Q可以通过自定的事件对象来实现?br /> <br /> q个对象是q个lg分发的事件对象,即type?#8220;click”的MouseEvent的一个实例?br /> <br /> q个event对象包含了触发该事g时的各种信息Q比如触发事件对象是哪个Q监听对象是哪个Q触发时鼠标点在哪里{等Q不同的eventcM包含不同的属性,比如KeyboardEvent包含了键盘点M哪个键?br /> <br /> 我们也可以通过自定义一个事件类Q来传递我们自己想要的各种信息。(q在后面介l到Q?br /> <br /> <font color="red">4.      事g分发Q重点了Q?/font><br /> <br /> 最l承自EventDispatcher的对象都会含有dispatchEventq个ҎQ他有一个参敎ͼ事g对象?br /> <br /> 之前说到的事件注册通道Q他只是一个通道Q实际上事g是由q个Ҏ来分发出ȝQ通道只是一个管道而已?br /> <br /> 他的作用是分发一个事件对象,他的分发是没有目的的Q一U广播Ş式的QFlex的事件监听线E会接收到各U各L事gQ我们称之ؓ捕获事gQ这在后面会介绍刎ͼQ那么哪U才是你要的事gQ标识就通过事g的type属性来区分?br /> <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 /> <br /> C意代码<br /> dispatchEvent(new MouseEvent( “click” , false ));<br /> <img height="353" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-07.gif" width="492" border="0" /><br /> 事g对象无法跨越lg本nQ当Ӟ除了之前讲到的注册通道Q这样就很Ş象了吧)<br /> <br /> 因此Q如果没有注册通道Q在Flexd用中Q就无法捕获到这个buttonlg分发出的事g?br /> <br /> 如果我们Bubbles设ؓtrueQ他看v来就是这?br /> dispatchEvent(new MouseEvent( “click” , true ));<br /> <br /> <img height="354" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-03.gif" width="495" border="0" /><br /> 可以看到Q这个事件可以跨q组件本w,到达Flexd用里。不止这P在帮助手册中明确说到Q如果在传递过E中间一直没有被捕获的话Q这个事件会逐层上传Q直到最l的stageQ那时如果还没被捕获Q这个事件就会被销毁掉?<br /> <br /> q样一来,即我们没有click的事仉道Q只要我们在Flexd用中d事g监听器(addEventListenerQ那么我们就可以获得到这个分发出的click事g了?br /> <br /> 那么Q注册通道不是没用了吗Q不是,之前说到q,注册通道是现式的Q可见的Q因此如果你的组件要l其他h使用Q那么就非常一目了Ӟ而不必知道你源码中究竟分发了什么事件。但是,不要监听和注册同一个事Ӟq样会重复执行的。(后面讲刎ͼ<br /> <br /> 5.      事g监听<br /> <br /> 在分发中Q我们讲刎ͼ如果不是通过注册通道来调用触发事Ӟ那么我们是需要一个监听来捕捉的。如何捕捉到分发出的事gQ就是通过事g的type倹{?br /> <br /> 比如:<br /> <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:comp<br />       creationComplete='init()'<br /> > <br /> <mx:Script><br />                 <![CDATA[<br /> private function init(){<br />                     testBtn.addEventListener(“click”, clickHandler);<br /> }<br /> <br /> <br /> Flex的事件中都提供了一些静态常量,让我们调用,避免我们打错了。因此这句话可以q么?br /> <br /> testBtn.addEventListener(MouseEvent.CLICK,clickHandler);<br /> <br /> <br /> 我们看到Q监听的回调Ҏ中没有传递参敎ͼ是的Q这和通道的写法有些不同,q里的回调方法(即clickHandlerQ只是个引用Qƈ不是代表Ҏ的执行,他的含义是,告诉eventLinstenerQ如果捕捉到click事gQ那么就LclickHandlerQƈ执行它,event对象参数在执行时动态的传递。(如果熟悉ajax的朋友这里应该很Ҏ懂了Q?br /> <br /> 他作用v来就是这?br /> <img height="355" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-04.gif" width="510" border="0" /><br /> 如果你又注册了click的事仉道Q那么这两个都会生效Q显然这是多余的?br /> <br />       6.  关于异步和执行顺?br /> <br /> <font color="darkorange">以前的说法有误,as里是不存在线E概늚Q在q程hӞl果事g、错误事仉是异步的。如果你需要处理结果,需要利用监听,q在回调中获取你的远E数据?br /> 而在处理本地事gӞ他们仍然是同步的。(谢谢ltian 的指正)</font><br /> 异步C意?br /> <span id="attach_183" onmouseover="showMenu(this.id, 0, 1)" style="display: none; left: 231px; position: absolute; top: 4906px"><img alt="" src="http://www.riachina.com/images/attachicons/attachimg.gif" border="0" /></span><img height="238" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-05.gif" width="398" border="0" /> <br /> 上图可以看出Q回调方法执行的序甚至q不如dispatchEvent之后的方法。如果接下来的方法依赖于事g回调Q那么把接下来的Ҏ写到回调Ҏ中去<br /> <img height="290" alt="" src="http://m.tkk7.com/images/blogjava_net/kissjava/20090216-06.gif" width="396" border="0" /><br /> <br /> 三.l定机制<br /> <br />       在我们了解了事g机制后,那么理解l定׃难了。绑定其实也是事件机制的q用<br /> <br />       1.  什么是l定<br /> l定的原理就是事Ӟ在被l定的对象上增加了改变事件的监听Q一旦某个被l定对象改变后,׃分发一?#8220;propertyChange”事gQ默认的Q也可以改变成自己定义的事gQ,在其他组件中Q会有propertyChange的事件监听,当捕捉到该事件后Q则会去更新lg的属性ƈ昄?br /> <br /> l定的作用在于,Flex中的变量、类、方法等与组件的D行绑定。例如,一个变量如果被l定后,那么引用该变量的lg的相兛_性也会发生改变。我们用一个实例来表示<br /> <br /> <?xml version="1.0" encoding="utf-8"?><br /> <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:comp<br />       ><br />       <mx:Script><br />           <![CDATA[<br />                 import mx.controls.Alert;            <br />                 [Bindable]<br />                 private var isSelected:Boolean;<br />                 private function clickHandler(e:MouseEvent){<br />                 //Alert.show(e.currentTarget.toString());<br /> isSelected=isSelected?false:true; //q句话的意思是如果isSelected为trueQ改变它为falseQ如果它为falseQ改变它为trueQ?br />                       Alert.show(isSelected.toString());<br />                 }<br />           ]]><br />       </mx:Script><br />       <mx:Button id="testBtn"  click="clickHandler(event)" label="试" /><br />       <mx:CheckBox x="60" selected="{isSelected}" /><br /> </mx:Application><br /> <br /> 上述E序的效果就是,当点击buttonӞbutton不是直接改变checkbox的选中状态,而是改变isSelectedq个变量Q由于isSelected是被l定了的Q那么会兌的改变CheckBox的选中状态?br /> <br /> q样看v来有些多此一举,完全可以直接改变checkbox的selected属性,我只是ؓ了演CZ下效果。如果说你的checkbox是动态构造的上百个,你不会去一个个的改变他吧?br /> <br /> 因此Q我们多C一个数据源q行l定声明Q这样引用了q个数据源的控gQ比如datagridQ在数据源发生了改变Ӟ即你不重新讄dataProviderQ列表的数据也会h。当Ӟq有很多应用{待你去试?br /> <br /> 如果q个代码中取消了[Bindable]的声明,会怎么PisSelected不会改变了吗Q?br /> <br /> isSelected会改变,我们alert出来的结果也会显C结果改变了Q但是checkbox的选择状态不会改变,因ؓ当一个组件由创徏到最l显C出来时是经q很多方法的Q比如addChildQcommitPropertiesQupdateDisplayList{,updataDisplayList则是cMh昄效果一LҎ?br /> <br /> 仅仅改变属性,而不L新显C效果那么组件不会因为属性的改变而发生Q何变化?br />   <br /> l定的原理也是利用的事g分发。更复杂的绑定有待你去自己发C<br /> <br /> <br /> <br /> ?  自定义事件的分发<br /> <br />       q部分就不长大ZQ因为各位应该已l掌握了事g的原理,因此贴出演示源码Qƈq行些简单的解释?br /> <br />       1.  自定义事?components/MyEventTest.as<br />       package components<br /> {<br />       import mx.events.FlexEvent;<br />       public class MyEventTest extends FlexEvent<br />       {<br />           public static const ONCHANGE:String = "onChange";<br />           public var eventInfo:String; //自定义的事g信息<br />           public function  MyEventTest(s:String){<br />                 super(s); //如果在构造时不设bubblesQ默认是falseQ也是不能传递的?br />                 eventInfo="q个事g?"+s;<br />           }<br />       }<br /> }<br /> <br />           2.        自定义组?components/ComponentForEvent.as<br /> package components<br /> {<br />       import flash.events.EventDispatcher;<br />       //q个是声明事g注册通道的方法了。name是事件对应的名称Q也是之前提到的type。Type是该事g的类<br />       [Event(name="onChange", type="components.MyEventTest")]<br />       public class ComponentForEvent extends EventDispatcher<br />       {<br />           private var name:String;<br />           public function changeName(newName:String){<br />                 this.name=newName;<br />                 dispatchEvent(new MyEventTest(MyEventTest.ONCHANGE) );<br />           }<br />       }<br /> }<br /> <br /> 3.        App.mxml<br /> <?xml version="1.0" encoding="utf-8"?><br /> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:comp<br /> > <br /> <mx:Script><br /> <![CDATA[<br /> import mx.controls.Alert;<br /> private function  changeName(){<br />                     cfe.changeName("新名U?);<br /> }<br />                 ]]><br /> </mx:Script><br /> <mx:Button id="testBtn"  click=" changeName ()" label="试" /><br /> <components:ComponentForEvent<br /> id="cfe"  /><br /> </mx:Application><br /> <img src ="http://m.tkk7.com/kissjava/aggbug/224539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">kissjava</a> 2008-08-26 18:26 <a href="http://m.tkk7.com/kissjava/archive/2008/08/26/224539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://783944.com" target="_blank">ִӲִˬƵ</a>| <a href="http://7766qq.com" target="_blank">ƵƷ</a>| <a href="http://773311h.com" target="_blank">ۺ޹</a>| <a href="http://nuosheying.com" target="_blank">AëƬ</a>| <a href="http://kkxzz.com" target="_blank">Ʒ޾Ʒպͼ</a>| <a href="http://ziguang1688.com" target="_blank">ĻƷ</a>| <a href="http://6wss.com" target="_blank">ƵѲ</a>| <a href="http://zhaosifuwang.com" target="_blank">͵͵APP</a>| <a href="http://hxpc28.com" target="_blank">˳һ</a>| <a href="http://aqdav22.com" target="_blank">ձһѸ</a>| <a href="http://c7372.com" target="_blank">þëƬѿһ</a>| <a href="http://zhaoxinwo.com" target="_blank">޾Ʒѹۿ</a>| <a href="http://chinaedubrand.com" target="_blank">ۺϾþþƷ</a>| <a href="http://5gi555.com" target="_blank">þƵ</a>| <a href="http://xxxck.com" target="_blank">ɫavƷר</a>| <a href="http://zaideqin.com" target="_blank">Av뾫Ʒɫҹ</a>| <a href="http://yanyingqiang.com" target="_blank">ձ</a>| <a href="http://btintemet.com" target="_blank">ձһƷƵ</a>| <a href="http://bznys.com" target="_blank">ѹëƬ</a>| <a href="http://gzmsijz.com" target="_blank">þAV뾫Ʒɫҹ鶹 </a>| <a href="http://czhos.com" target="_blank">ĻƵ߹ۿ</a>| <a href="http://166sb.com" target="_blank">޹ŮƷþþþ</a>| <a href="http://gengyufood.com" target="_blank">޾Ʒ㶮վ</a>| <a href="http://wwwnewhtbook.com" target="_blank">һ߹ۿ</a>| <a href="http://5ggy.com" target="_blank">һëƬѲ</a>| <a href="http://hljc988.com" target="_blank">պ޲߹ۿ</a>| <a href="http://pohezi.com" target="_blank">avۺavav</a>| <a href="http://516kd.com" target="_blank">˳Ƶ߹ۿ</a>| <a href="http://23usxx.com" target="_blank">ҹ1000</a>| <a href="http://26uuyy.com" target="_blank">Ѹ</a>| <a href="http://lzqzvip.com" target="_blank">av뾫Ʒ</a>| <a href="http://www398ph.com" target="_blank">޵Ӱһ</a>| <a href="http://888xxss.com" target="_blank">þAAAƬ69</a>| <a href="http://obtainfo.com" target="_blank">ձ˳Ƶ</a>| <a href="http://www99xyxy.com" target="_blank">һëƬ</a>| <a href="http://xy167.com" target="_blank">aëƬ߿Ƭ</a>| <a href="http://7s8s.com" target="_blank">ݹѹۿ</a>| <a href="http://spvec.com" target="_blank">AV˵</a>| <a href="http://znboxcdn107.com" target="_blank">ŷ޸</a>| <a href="http://haodiaose35pao.com" target="_blank">ްv</a>| <a href="http://1444000.com" target="_blank">þþþþþ޾Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>