回调函数

来源:互联网 发布:网络节目收拾排行榜 编辑:程序博客网 时间:2024/05/24 01:46

首先要说明一下什么是回调函数?有什么作用?

        回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另一个方法调用的,用于对该事件或条件进行相应。

        回调函数实现的过程:

        1. 定义一个回调函数;

        2. 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

        3. 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

        回调函数使调用者和被调用者分开,所以调用者不关心谁是被调用者。它只需要知道存在一个具有特定原型和限制条件的被调用函数。

        像之前写过的事件机制中,可以通过button.addEventListener(MouseEvent.Click, buttonClickHandler)的方式监听事件,这里就是一种回调函数的应用,我们先定义了一个buttonClickHandler方法,然后在初始化的时候将buttonClickHandler函数引用注册给addEventListener方法,当MouseEvent.Click发生的时候,通过这个函数引用回调我们写的buttonClickHandler方法,这个过程就是对回调函数的完美的应用。

        下面还是通过代码的方式,自己实现一个回调函数的应用,之前《Flex事件机制(二)》使用事件在父子组件之间传递数据,那么本篇通过回调函数来实现,遵循的过程就是文中提到的回调函数实现的过程。

        主应用文件Main.mxml

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.                xmlns:s="library://ns.adobe.com/flex/spark"   
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"   
  5.                minWidth="955" minHeight="600"   
  6.                xmlns:components="components.*"  
  7.                creationComplete="creationCompleteHandler(event)">  
  8.     <fx:Script>  
  9.         <![CDATA[ 
  10.             import mx.events.FlexEvent;          
  11.             // 2. 初始化的时候,将回调函数的函数指针注册给调用者 
  12.             protected function creationCompleteHandler(event:FlexEvent):void 
  13.             { 
  14.                 component.callbackFunction = showData; 
  15.             }            
  16.             // 1. 定义一个回调函数 
  17.             private function showData(data:String):void 
  18.             { 
  19.                 textArea.text = data; 
  20.             }            
  21.         ]]>  
  22.     </fx:Script>  
  23.     <s:layout>  
  24.         <s:VerticalLayout/>  
  25.     </s:layout>  
  26.     <s:TextArea id="textArea" />  
  27.     <components:component1 id="component" />  
  28. </s:Application>  
        子组件文件components/component1.mxml

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.          xmlns:s="library://ns.adobe.com/flex/spark"   
  4.          xmlns:mx="library://ns.adobe.com/flex/mx">    
  5.     <fx:Script>  
  6.         <![CDATA[ 
  7.             public var callbackFunction:Function;            
  8.             //3. 当按钮被点击的时候,使用函数指针调用回调函数对事件进行处理。 
  9.             protected function buttonClickHandler(event:MouseEvent):void 
  10.             { 
  11.                 // 第一个参数是callbackFunction所在的对象,第二个参数是callbackFunction需要的参数 
  12.                 callbackFunction.call(this.parent, "哈哈"); 
  13.             } 
  14.         ]]>  
  15.     </fx:Script>  
  16.     <s:Button label="显示内容" click="buttonClickHandler(event)"/>  
  17. </s:Group>  

        Flex回调函数的基本应用就介绍完了,非常简单吧。欢迎大家对我的博文提出意见,因为这段时间参与的一个项目主要是Flex开发,所以总结的Flex比较多,也都比较初级,谢谢大家的支持。

0 0
原创粉丝点击