Flex Quick Starts中文翻译(三) -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    中文

    Adobe® Flex™应用程序是事件驱动的,

Flex Quick Starts中文翻译(三)

。当用户与界面组件交互时事件会通知程序员,

    当一个组件的外观或者生命周期发生重要改变,比如创建或者销毁一个容器,或改 变一个容器的大小的时候,事件也会通知程序员。

    当一个组件的实例分派一个事件时,你为那个事件注册的 对象就会被通知。 你可以在 ActionScript. 中定义事件 (或者叫做事件处理器)来处理事件。你 既可以在 MXML 声明中为一个组件注册事件 ,也可以在 ActionScript. 中实现 相同的功能。

    接收事件通知有三种方式:

     在 MXML 中注册一个事件处理器

     在 MXML 中创建一个内联(inline)的事件处理器

     通过 ActionScript. 注册一个事件处理器

    在 MXML 中注册一个事件处理器

    第一个,而且是最广泛地被用来接收事件通知的方法就是在 MXML 中定义一个事件处 理器,当事件发生时就调用它。

    在这个例子中,你为一个 Button 控件的 click(点击)事件定义了一个事件处理器。 当用户点击这个 Button 控件时,事件处理器会把 Label 控件的 text 属性设成 "Hello,World!"。

    示例

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application

    xmlns:mx="http://www.adobe.com/2006/mxml"

    width="300" height="200"

    horizontalAlign="center" verticalAlign="middle"

    viewSourceURL="src/HandlingEventsEventHandler/">

    <mx:Script.>

    <![CDATA[

    import flash.events.MouseEvent;

    private function clickHandler ( event:MouseEvent ):void

    {

    myLabel.text = "Hello,World!";

    }

    ]]>

    </mx:Script.>

    <mx:Panel

    title="My Application" horizontalAlign="center"

    paddingTop="10" paddingBottom="10" paddingLeft="10"

    paddingRight="10" >

    <mx:Label id="myLabel" width="180" fontWeight="bold"

    fontSize="24"/>

    <mx:Button id="myButton" label="Click Me!"

    click="clickHandler(event);" />

    </mx:Panel>

    </mx:Application>

    运行结果图示:

   

    译注:由于文档中无法嵌入 SWF 文件,代码运行结果请查看原文中相应的部分。

    在 MXML 中创建一个内联(inline)的事件处理器

    有时响应事件的最简单的方法就是完全在一个组件的 MXML 声明中定义事件处理器。 这就是使用一个内联(inline)的事件处理器。

    在下面的例子中,你设定了<mx:Button>标签的click属性,所以它可以直接设定 Label控件的text属性,而不需要调用一个事件处理器方法。

    提示:使用内联事件处理器可能比较快而且代码较少,但是它也可以影响代码的易读性,可维护性和可扩展性。一个好的经验法则就是不要在内联事件处理器中包含 一条语句以上的 ActionScript。如果你必须包含更复杂的逻辑,就把它放到一个 ActionScript. helper 方法(即第一种方法)或者一个 ActionScript. 事件处理器(即 第三种方法)中。

    示例

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application

    xmlns:mx="http://www.adobe.com/2006/mxml"

    viewSourceURL="src/HandlingEventsInlineMethod/"

    horizontalAlign="center" verticalAlign="middle"

    width="300" height="200">

    <mx:Panel

    title="My Application" horizontalAlign="center"

    paddingTop="10" paddingBottom="10" paddingLeft="10"

    paddingRight="10">

    <mx:Label id="myLabel" width="180" fontWeight="bold"

    fontSize="24"/>

    <mx:Button id="myButton" label="Click Me!" click="myLabel.text =

    'Hello, World!'" />

    </mx:Panel>

    </mx:Application>

    运行结果图示:

   

    通过 ActionScript. 注册一个事件

    你也可以通过使用 ActionScript. 注册一个事件处理器来响应事件,

电脑资料

Flex Quick Starts中文翻译(三)》(https://www.unjs.com)。 在这个例子中,使用ActionScript中的addEventHandler() 方法注册了一个事件监

    听器。这个addEventHandler()方法被放在了用来处理Application容器的

    creationComplete事件的事件处理器中。

    提示:程序开始运行的时候,在Application的外观和它的子组件初始化完毕之后, Application的creationComplete事件就会发生。creationComplete事件的处理器提 供了一个很方便的地方来放置注册事件 的ActionScript代码。

    示例

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application

    xmlns:mx="http://www.adobe.com/2006/mxml"

    viewSourceURL="src/HandlingEventsActionScript/"

    horizontalAlign="center" verticalAlign="middle"

    width="300" height="200"

    creationComplete="creationCompleteHandler(event);">

    <mx:Script.>

    <![CDATA[

    import flash.events.MouseEvent;

    import mx.events.FlexEvent;

    private function

    creationCompleteHandler(event:FlexEvent):void

    {

    clickHandler);

    }

    // Listen for the click event on the Button control

    myButton.addEventListener (MouseEvent.CLICK,

    private function clickHandler ( event:Event ):void

    {

    myLabel.text = "Hello, World!";

    }

    ]]>

    </mx:Script.>

    <mx:Panel

    title="My Application" horizontalAlign="center"

    paddingTop="10" paddingBottom="10" paddingLeft="10"

    paddingRight="10">

    <mx:Label id="myLabel" width="180" fontWeight="bold"

    fontSize="24"/>

    <mx:Button id="myButton" label="Click Me!" />

    </mx:Panel>

    </mx:Application>

    运行结果图示:

   

    小编物语:本文援引Dreamer's Blog,特此感谢作者的努力。大家如果觉得这篇教程正是你所需要的话,请别忘了去作者的博客打打气啊。

最新文章