首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种不复制的数组堆栈算法

一种不复制的数组堆栈算法
EN

Stack Overflow用户
提问于 2009-04-25 07:09:10
回答 1查看 313关注 0票数 1

我有一个flashlite3应用程序,导航由图标组成,用户可以无限地浏览左边或右侧。

我现在使用的基本算法(对于这个项目来说已经足够了),但是解决方案的一部分取决于图标数组的复制。根据数组中的项数和/或元素内容的大小,此解决方案可能会变得效率较低。我对一种解决方案或算法(在任何语言中)都感兴趣,这种解决方案或算法可以在可伸缩和高效的同时实现同样的目标。

以下是setter函数中用于突变“_selectedItem”属性的部分相关代码,其中:

  1. 根据步骤1计算当前的'_selectedItem‘和新的'_value’
  2. ,弹出左
  3. 重复步骤2,直到匹配'_selectedItem‘的图标位于数组

的中心。

此代码使用3个数组运行:

  1. 静态位置数组。一次有5个图标,3个是可见的,所以位置0离开了舞台,位置1是1/3,位置2是1/2。当创建图标2数组时,
  2. :_viewArray & _icons。_viewArray的顺序模拟要显示的顺序,而_icons被单独保留,用于检查

的循环条件。

/活动脚本2/

代码语言:javascript
复制
    public function set selectedItem(value:Number)
    {
        var w=Stage.width;

        if(value > _icons.length-1)
        {
            value=0;
        }else if(value < 0)
        {
            value=_icons.length-1;
        }

        if(value > _selectedIndex)
        {
            while(_viewArray[Math.floor(_icons.length*.5)] != _icons[value])
            {
                var element;
                element=_viewArray.pop();
                _viewArray.unshift(element);
            }
        }else if(value < _selectedIndex)
        {
            while(_viewArray[Math.floor(_icons.length*.5)]!=_icons[value])
            {
                var element;
                element=_viewArray.shift();
                _viewArray.push(element);
            }           
        }




        for(var i:Number=0;i<_viewArray.length;i++)
        {
            if(i>=1 && i<= _icons.length-2)
            {
                _viewArray[i]._visible=true;
            }else
            {
                _viewArray[i]._visible=false;
            }
            Tweener.addTween(_viewArray[i],{_x:positions[i],_alpha:80,time:.5,transition:'elasticIn'})
        }


        Tweener.addTween(_icons[(_viewArray.length*.5)-1],{_alpha:100,time:.0,transition:'elasticIn'});
        Tweener.addTween(_selectedServiceIndicator,{_alpha:0,time:.3,transition:'elasticIn',onComplete:function() {Tweener.addTween(this,{_alpha:100,time:.2,transition:'elasticIn'});}});

        var eventObject:Object = {target:this, type:'SelectedItemChange'};
        eventObject.value=value;

        for(var key in _serviceData[value])
        eventObject[key]=_serviceData[value][key];

        dispatchEvent(eventObject);
        _selectedIndex=value;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-25 16:39:03

为什么_viewArray的每个元素必须实际存储图标,而不是只将索引存储到_icons数组中?通过这种方式,您只存储了一次图标,而_viewArray只存储它们的演示顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/788428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档