列表
/*
不知道这叫什么. 算不算列表
实现具有纵向排列的可以翻页的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;
}
浙公网安备 33010602011771号