FLEX 仿Google联想框效果

所属分类: 网页制作 / Flash 阅读数: 1221
收藏 0 赞 0 分享
首先是事件源,也就是从何而起,如下的一个输入框:
复制代码 代码如下:

<mx:FormItem label="集团客户:" width="42%">
<!--change1-->
<mx:TextInput id="txtAssociation" width="235" maxChars="32" change="associate();"/>
</mx:FormItem>

然后就是处理效果,这些内容都是从数据库得到的数据,动态的查出的。
复制代码 代码如下:

import mx.collections.ArrayCollection;
            import mx.events.FlexMouseEvent;
            import mx.events.ListEvent;
            import mx.managers.PopUpManager;

            import resources.com.list.Association;

            // 经过渲染的联想结果List
            private var list:Association;
            // 临时字符串,用于判断当keyUp事件发生时,联想框的值是否发生改变,如未改变则不联想
            private var temp:String = '';
            private function changeAssociation():void{
                temp='';
                txtAssociation.text='';
                associationResult=null;
                if(list != null){
                    PopUpManager.removePopUp(list);
                    list = null;
                    // 清空临时字符串
                }
        }
            private function associate():void {
                var str:String = txtAssociation.text;
                if(str.length<2){
                    associationResult=null;
                }
                if (str != temp) {
                    if(str.length < 2){
                         if(list != null){
                             PopUpManager.removePopUp(list);
                             list = null;
                             // 清空临时字符串
                            temp = '';
                        }
                         return;
                    }
                    temp = str;

                    var params:Object = {};
                    params['areaNO'] = cbxArea.selectedItem.data;
                 params['netType'] = cbxNetType.selectedItem.data;
                    params['str'] = str;
                    params['handle'] = 'associate';
                    service4association.send(params);
                }
            }
            private function openAssociation():void {
                if(service4association.lastResult.items != null)
                     createAndShow(service4association.lastResult.items.item);

                else if(list != null){
                    PopUpManager.removePopUp(list);
                    list = null;
                    // 清空临时字符串
                    temp = '';
                }
            }
            private function createAndShow(dp:Object):void {
                // 每次打开联想框以前, 先清理缓存
                if(list != null){
                    // 将联想框从PopUpManager中移除
                    PopUpManager.removePopUp(list);
                    // 清空联想框实例
                    list = null;
                }

                list = new Association();
                //指定数据源
                list.dataProvider = dp;
                //获取鼠标坐标并赋值给list
                list.x = txtAssociation.x + 219;
                list.y = txtAssociation.y + 205;
                //大小
                list.minWidth = 400;
                list.maxHeight = 270;
                //注册list外鼠标按下和项目单击事件
                list.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, mouseDownOutsideHandler);
                list.addEventListener(ListEvent.ITEM_CLICK, itemClik);

                //弹出并显示list
                PopUpManager.addPopUp(list, this, false);
            }
            private var associationResult:Object;
            private function itemClik(event:ListEvent):void{
                associationResult = ArrayCollection(Association(event.target).dataProvider).getItemAt(event.rowIndex);
                txtAssociation.text = associationResult.label;
                //Alert.show(associationResult.data);
                removePopUpIDisplay(Association(event.target));
            }
            private function mouseDownOutsideHandler(event:MouseEvent):void{
                removePopUpIDisplay(Association(event.target));
            }
            private function removePopUpIDisplay(obj:Association):void{
                // 清空临时字符串
                temp = '';
                obj.removeEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, mouseDownOutsideHandler);
                PopUpManager.removePopUp(obj);
            }
            /**--------------------------联想-------------------------------**/

还有一个类,这里也贴出来吧。呵呵,共享原则,完全可实现。
复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initApp();" xmlns:filters="flash.filters.*"
    alternatingItemColors="[#EEEEEE, white]" buttonMode="true" >

    <mx:Script>
        <!--[CDATA[
            private function initApp():void{
                showEffect.play();
            }
        ]]-->
    </mx:Script>

    <mx:itemRenderer>
        <mx:Component>
            <mx:HBox horizontalGap="0" paddingLeft="5">
                <mx:Image source="@Embed('resources/icons/building.png')"/>
                <mx:Text text="{data.prefix}" paddingLeft="5"/>
                <mx:Text text="{data.str}" color="green"/>
                <mx:Text text="{data.suffix}"/>
            </mx:HBox>
        </mx:Component>
    </mx:itemRenderer>

    <mx:Parallel id="showEffect" target="{this}" duration="300">
        <mx:Fade />
        <mx:WipeDown />
    </mx:Parallel> 
</mx:List>

FLEX--仿Google联想框效果--现在好多地方都用到了这样的效果,当然,现在Google下线了,不让用了,但是跟网上说的一样,想办法,它还是能出来的.呵呵,不过对于我们没有多少必要了.这里在Flex当中也是为了能够更好的实现查询效果.所以也要求做这么一个,动态查询.
更多精彩内容其他人还在看

AS3中的反射(速记) 分析

详细了解AS3的反射,请google相关文章,这里只是速记一下
收藏 0 赞 0 分享

flash与asp/php/asp.net通信的方法第1/3页

flash与后台程序通信
收藏 0 赞 0 分享

火山动态文本滚动条V5[AS3版]

功能说明:本版滚动条除了继续保持体积小(小于2K),界面容易修改,资源占用率小的优势外,主要有以下几点改进: 1,使用AS3编写。 2,宽高动态指定。 3,增加滚动条背景点击事件。 4,消除了鼠标滚轮无法同时准确控制多个文本框的重大BUG。
收藏 0 赞 0 分享

AS打造的复制粘贴等功能类

真不错漂亮大方的flash复制粘贴剪切等效果
收藏 0 赞 0 分享

关于类、私有属性与继承的理解

学习FLASH的时间也不短了,但总觉得还有很多的东西在等我去弄清楚。而且有很多东西也是搞得似懂非懂。在这里,把类、私有属性跟继承的理解讲一下。也希望大家能无私补充,以臻佳景。
收藏 0 赞 0 分享

FLASH自动判断域名然后转向等操作

FLASH自动判断域名,如果不是你的域名,然后干什么你来定吧! 首先说一下FLASH自已可以干什么!FLASH他可以判断自已在哪个路径下面,例如:
收藏 0 赞 0 分享

Flex程序开发心得小结

和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率。
收藏 0 赞 0 分享

关于FLASH与XML交互应用中的理解

关于XML在FLASH中的应用,以前写过几篇。也收集了几篇来自网络的。不过,都是一些非常简单而常用的。在这里,我把XML的其他相关说明总结一下。有不足之处,希望大家能相互补充。只为了一个共同的目的:共同提高。
收藏 0 赞 0 分享

Flash Event写法

flash下event事件驱动方法
收藏 0 赞 0 分享

AS3自写类整理笔记 ClassLoader类第1/2页

在用flash做项目的时候,把一些元件,通过设置链接类,然后使用这个类,通过getClass方法即可把这个素材拿下来
收藏 0 赞 0 分享
查看更多