`
nianshi
  • 浏览: 420660 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex 3快速入门(9): 构建简单的用户界面 添加效果

    博客分类:
  • Flex
阅读更多

 

添加效果


效果是在较短时间上发生的对组件的更改。效果的例子有: 淡化组件、调整组件大小和移动组件。一种效果与一个触发器相结合才能形成一个行为, 如组件上的鼠标单击、组件获得焦点或组件变成可见的。 在 MXML 中, 您将效果应用为控件或容器的属性。 Adobe® Flex™ 提供具有默认属性的一组内置效果。

作为对某些用户或编程操作的响应, 行为使您可以将动画、动作和声音添加到应用程序中。 例如, 您可使用行为在获得焦点时弹出对话框, 或是在用户输入无效的值时发出声音。

Flex 触发器属性是作为层叠样式表 (CSS) 样式被实施的。

若要创建行为, 您定义一个具有唯一 ID 的特定效果并将它绑定到触发器。 例如, 下面的代码创建两个缩放效果: 一个用于轻微缩小组件, 一个用于将组件还原至其原始大小。 这些效果通过使用它们的唯一 ID 被分配到“按钮”组件上的 mouseDownEffect 和 mouseUpEffect 触发器上。

注意  如何将 Panel 容器的 autoLayout 属性设置为 "false"。这样是为了阻止在按钮改变大小时面板改变大小。

示例


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

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml " width="170" height="140"
>
    <!-- Define effects -->
    <mx:Zoom id="shrink" duration ="100" zoomHeightTo=".9" zoomWidthTo=".9" />

    <mx:Zoom id="revert" duration="50" zoomHeightTo="1" zoomWidthTo="1" />
   
    <mx:Panel
        title="Bouncy Button" paddingTop="10" paddingBottom="10"
        paddingLeft="10" paddingRight="10" autoLayout="false"
     left="41" top="24" right="42">

        <!-- Assign effects to target -->
        <mx:Button
            id="bouncyButton" label="Click me!"
            mouseDownEffect="{shrink}" mouseUpEffect="{revert}"
        />

    </mx:Panel>
</mx:Application>

结果

 

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

 

 

 

 

使用效果方法和事件

您可以调用效果上的方法来改变它们播放的方式。 例如, 可以通过调用效果的 pause() 方法来暂停效果, 并通过使用其 resume() 方法来继续该效果。可以通过调用效果的 end() 方法来结束该效果。

当效果开始和效果结束时, 它也会发出 startEffect 和 endEffect 事件。 您可以监听这些事件并响应您的事件状态中的更改。

下面的示例使用“移动”效果的方法和事件来创建一个简单的游戏。 该游戏的目标是使直升飞机尽可能接近靶而又不撞到它。 靠得越近, 赢得的点数越多。

该游戏使用取自 SWF 文件库的电影剪辑符号来表示靶、直升飞机和爆炸动画。 有关这如何工作的详细信息, 请参阅嵌入资源。

示例


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

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml " width="525" height="450"
     viewSourceURL="src/EffectsChopperGame/index.html"
>
    <mx:Script>

        <![CDATA[
            // Easing equations have to be explicitly imported.   
            import mx.effects.easing.Quadratic;

            // Embed movie clip symbols from the library of a Flash SWF.

            [Embed(source="assets/library.swf", symbol="DartBoard")]

            public var DartBoard:Class;
           
            [Embed(source="assets/library.swf", symbol="Helicopter")]

            public var Helicopter:Class;

            [Embed(source="assets/library.swf", symbol="Explosion")]

            public var Explosion:Class;

            // Event handler for the effectEnd event.           
            private function endEffectHandler():void
            {

                helicopter.visible = false;
                explosion.visible = true;
                score.text = "0";
                pauseButton.enabled = resumeButton.enabled =
                    selfDestructButton.enabled = false;
            }

            // Event handler for the "Play Again!" button.           
            private function playAgainHandler():void
            {

                // Call resume() to make sure effect is not

                // in paused state before it ends or calling
                // pause() on it later will not work.
                flyChopper.resume();
               
                // End the effect
                flyChopper.end();
               
                // Reset assets to their original states.
                helicopter.visible = true;
                explosion.visible = false;
                startButton.enabled = pauseButton.enabled =
                    resumeButton.enabled = selfDestructButton.enabled = true;
            }

           
            private function pauseChopperHandler():void
            {
                // Pause the Move effect on the helicopter.
                   flyChopper.pause();
                  
                   // Calculate player's score based on the inverse of the


                   // distance between the helicopter and the dart board.
                   score.text = String(Math.round(1/(helicopter.x - dartBoard.x)*10000));
                  
                   pauseButton.enabled = false;
                   resumeButton.enabled = true;
            }

           
            private function resumeChopperHandler():void
            {
                flyChopper.resume();
                resumeButton.enabled = false; pauseButton.enabled = true;
            }

        ]]>
    </mx:Script>
   
    <!-- Create a Move effect with a random duration between .5 and 1.5 seconds -->
    <mx:Move
        id="flyChopper" target="{helicopter}"
        xBy="-290" easingFunction="mx.effects.easing.Quadratic.easeIn"

        duration="{Math.round(Math.random()*1500+500)}"
        effectEnd="endEffectHandler();"
    />

   
    <mx:Panel
        title="Effects Chopper Game" width="100%" height="100%"
        paddingTop="10" paddingLeft="10" paddingRight="10"
        paddingBottom="10" horizontalAlign="right"

    >

        <!-- The game canvas -->
        <mx:Canvas width="100%" height="100%">

            <mx:Image
                id="dartBoard" width="100" height="150.2"
                source="{DartBoard}" x="10" y="20"

            />

            <!-- Hide the explosion animation initially. -->
            <mx:Image
                id="explosion" source="{Explosion}"
                y="50" x="0" added="explosion.visible = false;"

            />           

            <mx:Image
                id="helicopter" width="80" height="48.5"
                source="{Helicopter}" right="0" y="67"

            />

        </mx:Canvas>

        <!-- Instructions -->
        <mx:Text
            width="100%" color="#ff0000"
            text="Pause the helicopter as close as possible to the dartboard without hitting it."
            textAlign="center" fontWeight="bold"

        />

           
        <mx:HBox>
            <mx:Label text="Score:" fontSize="18"/>
            <mx:Label id="score" text="0" fontSize="18"/>       
        </mx:HBox>

    
        <mx:ControlBar horizontalAlign="right">
            <mx:Button
                id="startButton" label="Start"
                click="flyChopper.play(); startButton.enabled=false;"

            />

            <mx:Button id="pauseButton" label="Pause" click="pauseChopperHandler();"/>

            <mx:Button id="resumeButton" label="Resume" click="resumeChopperHandler();"/>

            <mx:Button
                id="selfDestructButton" label="Self destruct!"
                click="flyChopper.resume(); flyChopper.end();"

            />
            <mx:Button label="Play again!" click="playAgainHandler();"/>

        </mx:ControlBar>

      
    </mx:Panel>   
</mx:Application>

提示: 如果调用某个效果的 end() 方法时, 该效果被暂停, 则当您再次显示相同的效果时, 调用其 pause() 方法将不会有效果。 若要解决此问题, 请在调用其 end() 方法之前调用效果上的 resume() 方法。换句话说, 在首先继续暂停的效果之前, 不要结束它。

结果

 

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

分享到:
评论

相关推荐

    FLEX简单的入门快速总结

    Flex提供了一套丰富的预定义组件,如按钮、文本框、列表等,这些组件可以快速构建用户界面。通过设置组件属性、样式和事件监听器,你可以定制组件的行为和外观。 总之,Flex入门需要掌握数据绑定的概念,学会使用...

    flex4.0快速入门

    6. **Effect和动画**:Flex 4.0加强了对效果(Effect)和动画的支持,通过Effect类和Animate类,开发者可以轻松添加过渡效果和自定义动画,提升用户界面的动态性。 7. **事件模型**:Flex 4.0的事件模型基于观察者...

    flex快速入门“flex3_quickstart”

    本文旨在为初学者提供一个全面的Flex3快速入门指南,涵盖从基础编码到高级用户界面构建的关键知识点。 ### 一、使用MXML和ActionScript进行编码 #### MXML:用户界面布局的XML语言 MXML(Flex Markup Language)...

    Flex教程大全 flex快速入门

    本文旨在为初学者提供一个全面的Flex入门指南。 #### 二、MXML基础 MXML是一种用于构建Flex应用程序用户界面的语言。它基于XML标准,使得开发者可以通过简单的标签语法来构建复杂的UI组件。 ##### 1. MXML的基本...

    Flex3基础入门PPT

    4. **MXML**:MXML是Flex的声明式语言,用于构建用户界面。讲解了MXML的基本结构,组件的使用,以及如何将AS3代码与MXML结合。 5. **Flex组件库**:详述了Flex组件库中的各种UI组件,如按钮、文本框、面板、列表等...

    Flex从入门到精通

    Flex的应用程序构建基于组件模型,这意味着你可以使用预定义的UI元素(如按钮、文本框等)来构建用户界面。MXML是一种声明式语言,它允许开发者以XML格式定义界面布局和组件属性。ActionScript则是Flex的编程语言,...

    Flex3学习指南-是初学者学习Flex必备资料2

    3. **Flex组件库**: Flex SDK提供了一个丰富的组件库,包括按钮、面板、数据网格等,这些组件使得开发者能够快速构建复杂的用户界面。 4. **数据绑定**: Flex支持数据绑定,允许UI组件的状态与应用程序数据模型自动...

    Flex教程flex 入门教材,简单易学

    3. **Flex组件库**:Flex提供了一系列预定义的UI组件,如按钮、文本框、列表等,这些组件可以方便地进行定制和扩展,满足各种用户界面需求。 4. **数据绑定**:Flex支持数据绑定,这是一种机制,使得视图组件的状态...

    Flex完全自学入门手册

    3. **MXML**:Flex的主要标记语言,用于定义用户界面的布局和外观,支持动态加载和数据绑定等功能。 4. **ActionScript**:Flex使用的脚本语言,用于编写程序逻辑。ActionScript 3.0是Flex最常用的版本,它提供了...

    flex入门练习

    5. **Flex组件库**:Flex提供了一系列预定义的组件,如按钮、文本框、面板等,方便快速构建用户界面。开发者可以通过自定义组件来扩展功能。 6. **事件处理**:在Flex中,事件是驱动用户界面交互的关键。事件监听器...

    Flex3入门,介绍性,适合未接触flex人群

    它基于ActionScript 3.0编程语言,利用MXML(标记语言)和ActionScript来构建用户界面和业务逻辑,非常适合创建动态且交互性强的应用程序。 #### 二、Flex3编程入门 Flex3提供了丰富的工具和资源,帮助开发者快速...

    MapGIS IGServer Flex快速入门手册

    ### MapGIS IGServer Flex 快速入门手册关键知识点解析 #### 一、MapGIS IGServer Flex 二次开发简介 MapGIS IGServer Flex 是一款由武汉中地数码科技有限公司开发的地理信息系统(GIS)服务平台,主要面向Web应用...

    自创Flex入门教程

    ### 自创Flex入门教程 #### 一、技术背景与范围 本教程主要涉及以下几个方面的内容: - **Java**:作为后端开发的主要语言之一,Java提供了丰富的类库和框架支持,便于开发各种复杂的应用程序。 - **JavaServlet*...

    Flex 入门.pdf

    描述:本篇文档旨在引导初学者快速掌握Flex技术,通过学习MXML和ActionScript,理解如何构建用户界面组件,并实现数据绑定等功能。 标签:Flex入门,flex,flex教程 知识点: 1. **Flex概述**: - Flex是由Adobe...

    Flex3基础教程PPT(1-5)

    Flex Builder 3作为一个强大的集成开发环境(IDE),提供了图形化的设计视图,让开发者能够直观地拖放组件来构建用户界面,同时支持编写ActionScript 3代码,这是Flex应用程序的主要编程语言,与Flash CS3兼容。...

    Flex 的 Adobe AIR快速入门

    ### Flex的Adobe AIR快速入门知识点解析 #### 一、处理文件和数据 1. **构建目录搜索应用程序** - **异步读取文件**: 在构建目录搜索应用程序时,使用`getDirectoryListingAsync()`方法来异步获取目录列表,这样...

    flex for android 90分钟 完全入门

    3. **Flex组件库**:了解Flex提供的丰富组件库,如Button、TextInput、Label等基本UI元素,以及Canvas、Accordion、TabNavigator等高级组件,这些组件可以帮助快速构建复杂的用户界面。 4. **数据绑定**:熟悉Flex...

    FLEX4_Flex4教程 - FLEX4从入门到精通,挺不错的值得一看

    Flex4的出现极大地提升了开发者的创造力,使得应用程序不仅有丰富的用户界面,还具备了高效的性能。 Flex4教程通常会涵盖以下几个关键知识点: 1. **ActionScript 3.0**:Flex4的基础是ActionScript 3.0,这是一种...

    FLEX富互联网应用快速入门

    MXML是一种声明式语言,用于构建用户界面,而ActionScript则是一种面向对象的编程语言,负责处理程序逻辑。通过MXML,开发者可以轻松地定义组件布局,设置属性和事件监听器,而ActionScript则提供了一种强大而灵活的...

Global site tag (gtag.js) - Google Analytics