日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flex的事件(六)

發(fā)布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flex的事件(六) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用嵌套的函數(shù)作為事件監(jiān)聽器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

?

???????? 除了將事件監(jiān)聽器函數(shù)的名字傳遞給addEventListener()方法,你還可以定義一個內(nèi)部函數(shù)(也可以理解為閉包)。

?

???????? 在下面的例子中,當按鈕被點擊,嵌套的函數(shù)就被調(diào)用:

?

<!-- events/AddingInnerFunctionListener.mxml -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">

<mx:Script><![CDATA[

import mx.controls.Alert;

private function initApp():void {

b1.addEventListener("click",

function(e:Event):void {

Alert.show("The button was clicked.");

}

);

}

]]></mx:Script>

<mx:Button id='b1' label="Click Me"/>

</mx:Application>

?

???????? 閉包函數(shù)除了可以在對象或類中創(chuàng)建,還可以在一個方法被調(diào)用時創(chuàng)建。閉包函數(shù)將保持它被定義時的范圍。當它作為一個參數(shù)或一個返回值被傳遞到不同的范圍時,將產(chǎn)生有趣的結(jié)果。

?

???????? 例如,下面的代碼創(chuàng)建了兩個函數(shù)。叫做foo()的函數(shù)返回一個叫做retArea()的用來計算矩形面積的嵌套函數(shù),叫做bar()的函數(shù)調(diào)用foo()并且將它返回的閉包函數(shù)保存在一個叫做myProduce的變量中,bar()還定義了叫做x的本地變量,并賦值2。當閉包函數(shù)myProduct()被調(diào)用時,它繼續(xù)持有在foo()中定義的變量x。bar()函數(shù)將返回的數(shù)值顯示在TextInput控件中,但不是8。

?

<?xml version="1.0"?>

<!-- events/FunctionReturnsFunction.mxml -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="foo()">

<mx:Script><![CDATA[

[Bindable]

private var answer:String;

private function foo():Function {

var x:int = int(ti1.text);

function rectArea(y:int):int { // function closure defined

return x * y;

}

return rectArea;

}

private function bar():void {

var x:int = 2; // ignored

var y:int = 4; // ignored

var myProduct:Function = foo();

answer = myProduct(int(ti2.text)); // function closure called

}

]]></mx:Script>

<mx:Form width="107">

<mx:FormItem label="X">

<mx:TextInput id="ti1" text="10" width="37" textAlign="right"/>

</mx:FormItem>

<mx:FormItem label="Y" width="71">

<mx:TextInput id="ti2" text="20" width="38" textAlign="right"/>

</mx:FormItem>

<mx:Label id="label1" text="{answer}" width="71" textAlign="right"/>

</mx:Form>

<mx:Button id='b1' label="Compute Product" click="bar()"/>

</mx:Application>

????????

???????? 如果你傳遞給addEventListener()方法的監(jiān)聽器是一個嵌套的內(nèi)部函數(shù),那就不要將useWeakReference參數(shù)的值設(shè)定為true。例如:

?

addEventListener("anyEvent",

function(e:Event) { /* My listener function. */ },

false, 0, true)

?

???????? 在這個例子中,如果將ture作為最后一個參數(shù)的值將導致意料之外的結(jié)果。對于Flex,內(nèi)部函數(shù)其實就是一個對象,并且可以被垃圾回收釋放。如果你將useWeakReference參數(shù)設(shè)定為true,就像上面例子里展示的那樣,那么將不會有內(nèi)部函數(shù)的長久的引用,在下一次回收時,可能會釋放這個函數(shù),并且當事件再次被觸發(fā)時,函數(shù)將無法被調(diào)用。

?

???????? 如果還有內(nèi)部函數(shù)的其他引用,那么垃圾回收就不會釋放它。

?

?????? 類級的成員函數(shù)將不會被垃圾回收,這樣你就可以將useWeakReference參數(shù)設(shè)定為true

轉(zhuǎn)載于:https://blog.51cto.com/flexria/154533

總結(jié)

以上是生活随笔為你收集整理的Flex的事件(六)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。