我有一个flashlite3应用程序,导航由图标组成,用户可以无限地浏览左边或右侧。
我现在使用的基本算法(对于这个项目来说已经足够了),但是解决方案的一部分取决于图标数组的复制。根据数组中的项数和/或元素内容的大小,此解决方案可能会变得效率较低。我对一种解决方案或算法(在任何语言中)都感兴趣,这种解决方案或算法可以在可伸缩和高效的同时实现同样的目标。
以下是setter函数中用于突变“_selectedItem”属性的部分相关代码,其中:
的中心。
此代码使用3个数组运行:
的循环条件。
/活动脚本2/
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;
}发布于 2009-04-25 16:39:03
为什么_viewArray的每个元素必须实际存储图标,而不是只将索引存储到_icons数组中?通过这种方式,您只存储了一次图标,而_viewArray只存储它们的演示顺序。
https://stackoverflow.com/questions/788428
复制相似问题