【问题标题】:Flex/Actionscript textfield autocomplete like interfaceFlex/Actionscript 文本字段自动完成类似界面
【发布时间】:2011-06-07 15:31:01
【问题描述】:

我想在 flex 上实现类似自动完成的文本字段。

实现的 AS3 自动完成需要有一个预定义字符串的列表。

但是,就我而言,我没有预定义的列表,这取决于用户输入的内容。

另一个特点是它应该将文本包装在一个可视组件中。与 macbook 邮件应用程序一样,当您输入电子邮件地址时,它会自动将名称更改为蓝色椭圆形。当您按退格键时,它会删除整个电子邮件地址。

我想结合这些功能。

如果用户输入'a_1 + b_1',在输入a_1时应该会自动变成一个带有a_1标签的椭圆。

有没有我可以查看这些功能的源代码?

【问题讨论】:

  • 投票结束。用户只是要求源代码,应该做更多的研究。

标签: apache-flex actionscript


【解决方案1】:

如果您搜索一下,您会发现大量使用 Flex 构建的 AutoComplete 组件示例。我个人喜欢Flextras AutoComplete Component,因为它是我建造的。它是开源的,完整的源代码在 Apache 许可下可用。

您可以通过 dataProvider 提供“预定义”字符串列表,就像任何其他基于 Flex 列表的组件一样。我不确定您所说的“使用必须提供预定义列表”是什么意思。但是,如果您想存储用户输入的选项列表并让它随着时间的推移而增长,您必须编写自己的代码来长期存储这些值。

基于按键删除整个“输入”不是自动完成的常见用例;但我相信Hillel Coren's AutoComplete 支持它作为其多选功能的一部分。

【讨论】:

    【解决方案2】:

    在 flex 4.5 中,只需几行代码就可以使用组合框构建一个。 Hillel Coren http://hillelcoren.com/flex-autocomplete/ 也有一个很棒的组件,但它不适用于 4.5(它适用于 3 和 4)。

    快速 n' 脏自动完成示例。

    package autoCompleteExample
    {
    import mx.collections.ICollectionView;
    import mx.collections.IList;    
    import spark.components.ComboBox;
    import spark.events.TextOperationEvent;
    
    public class AutoCompleteExample extends ComboBox
    {   
        override protected function textInput_changeHandler(event:TextOperationEvent):void{
            super.textInput_changeHandler(event);
            ICollectionView(dataProvider).refresh();
        }       
        override public function set dataProvider(value:IList):void{
            ICollectionView(value).filterFunction = defaultFilterFunction;
            super.dataProvider = value;
        }       
        private function defaultFilterFunction(item:Object):Boolean{
            return (textInput.text.toLowerCase() == String(item[labelField].toLowerCase()).substr( 0, textInput.text.length ));
        }
    }
    }
    

    现在您只需要确保添加标签字段。您也可以使用我认为的“itemToLabel”功能。

    【讨论】:

    • 你的算法是对的;但是我们必须编写的代码量让我觉得你要么比我们更有效率;要么或过度简化实现。
    • 这不是最强大的解决方案。我已经为 4.5 编写了一个像 Hillel's 这样的自动完成组件,这花了我很长时间。所以是的,这是一个非常简化的版本。但是试一试!它实际上工作得很好。
    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2021-06-21
    • 2018-09-24
    相关资源
    最近更新 更多