凡人而已。

导航

列表

/*

不知道这叫什么. 算不算列表

实现具有纵向排列的可以翻页的list..
随手写的.看着乱了点. 先放这里.有时间整理下,提醒自己别忘记了.
*/
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;

var container:Sprite = new Sprite();

this.addChild(container);
// 当前页面
var currentLabelNum:uint = 0;
// 最多的几个页面
var maxLabelNum:uint = 0;
//最后一个页面的个数;
var maxLabelHasNum:uint = 0;
// 一个页面最大显示多少个
var maxShowNum:uint = 10;

// 声明一个用来控制列表y轴的变量
var YYY:Number = 0;

var arr:Array = [];

for(var i:int = 0;i<Math.random()*78;i++)
{
arr.push(createRect());
}

maxLabelNum = Math.ceil(arr.length/10)
if(maxLabelNum>1)
{
maxLabelHasNum = arr.length%10;
}

updataView(arr);

lastBtn.addEventListener(MouseEvent.CLICK,lastHandler);
nextBtn.addEventListener(MouseEvent.CLICK,nextHandler);

function lastHandler(e:MouseEvent):void
{
if(currentLabelNum > 1)
{
currentLabelNum--;
YYY = 0;
updataView(arr);
}

}
function nextHandler(e:MouseEvent):void
{
trace(currentLabelNum+"::::::::currentLabelNum");
trace(maxLabelNum+":::::::maxLabelNum");
if(currentLabelNum < maxLabelNum-1)
{
currentLabelNum++;
YYY = 0;
updataView(arr);
}
trace(currentLabelNum+"::::::::currentLabelNum");

}

function updataView(arr:Array):void
{
while(container.numChildren)
{
container.removeChildAt(0);
}

/* 开始索引: 当前页面*maxShowNum 推理下:
第一次: 0乘10等于 0
当前=0,maxShowNum = 10
第二次: 1乘10等于 10
当前=1,maxShowNum = 10
第三次: 2乘10等于 20
当前=2,maxShowNum = 10
...
好像符合我的要求哦!
(不包括它自己呀)
结束索引: (当前页面+1)*maxShowNum 继续推:
第一次: 1乘10 = 10
当前=0;maxShowNum = 10;
第二次: 2乘10 = 20
当前=1;maxShowNum = 10;
第三次: 3乘10 = 30
当前=2;maxShowNum = 10;
...
好像符合我的要求哦!
不知道行不行. 试试看吧.

突然想起来了. 这是一个数组. 数组长度不定. 那么结束的索引就不一定刚好排到最后一个.
尼玛呀.. 还记得有多少页面是由数组长度而定的. 那也就是说.余下的就是最后页面里拥有的数量
化与公式: 最大页面*maxShowNum-(最大页面-1)*maxShowNum

怎么感觉这么麻烦. 是不是算法不对.


哦...忘记了..求余能算出多余的个数
*/

var startIndex:uint = currentLabelNum*maxShowNum;
var endIndex:uint //= currentLabelNum

if(currentLabelNum == maxLabelNum-1)
{
endIndex = arr.length;//maxLabelHasNum;
}
else
{
endIndex = (currentLabelNum+1)*maxShowNum
}

for(var i:int = startIndex;i<endIndex;i++)
{
YYY++;
container.addChild(arr[i]);
arr[i].y = YYY*arr[i].height;
}
}

 


function createRect():Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.lineStyle(2,0xff0000,1);
sp.graphics.beginFill(0xff,0.5);
sp.graphics.drawRect(0,0,200,30);
sp.graphics.endFill();
var t:TextField = new TextField();
t.width = 200;
t.height = 30;
t.text = String(Math.random()*100);
sp.addChild(t);

return sp;
}

posted on 2013-08-21 16:00  凡人而已。  阅读(175)  评论(0)    收藏  举报