@ixenos 2020-10-29 11:19:38
1.繼承修改了list
1/**2* 改良list
3* 改良目標:單列列表,item不規則大小4*
5* @author ixenos 2020-10-27 14:40:00 6*
7*/8public
class clist extends
list919
20/**21
* 渲染乙個單元格。
22* @param cell 需要渲染的單元格物件。
23* @param index 單元格索引。
24*/
25 override protected function renderitem(cell:*, index:int):void
else cell.datasource =_array[index];
3334
if (!cachecontent)
38if
(haslistener(event.render)) event(event.render, [cell, index]);
39if
(renderhandler) renderhandler.runwith([cell, index]);
40 } else44}
4546/**
47* @private
48* 滾動條的
event.change
事件偵聽處理函式。49*/
50 override protected function onscrollbarchange(e:event = null):void
else
7071
break;72
}73}74
}7576if (!cachecontent) else
if (index <_startindex)
9192
for (var i:int = 0; i < num; i++) else
102 pos = math.floor(cellindex / linex) *_cellsize;
103 _isvertical ? cell.y = pos : cell.x =pos;
104renderitem(cell, cellindex);
105}
106 _startindex =index;
107changeselectstatus();
108 } else
115}
116117
var r:rectangle =_content.scrollrect;
118if
(_isvertical) else
125 _content.scrollrect =r;
126}
127128
private
function _createitems(starty:int, numx:int, numy:int):void
else
148 _cells.length = 0;
149}
150151
for (var k:int = starty; k < numy; k++) else
158 cell.x = (_isvertical ? l : k) * cellwidth -box.x;
159 cell.y = (_isvertical ? k : l) * cellheight -box.y;
160 cell.name = "item" + (k * numx +l);
161box.addchild(cell);
162addcell(cell);
163}
164}
165}
166167
private
function
_getonecell():box
174return _cells[0];
175}
176177
private
function poscell(cell:box, cellindex:int):void
188189
private
function _binddata(cell:*, data:object):void
198}
199200/**
201* @private
202* 更改單元格的資訊。
203* @internal 在此銷毀、建立單元格,並設定單元格的位置等屬性。相當於此列表內容傳送改變時呼叫此函式。
204*/
205 override protected function changecells():void
238}
239}
240 }
2.業務偽**
1private
function init():void27
8private
function ontogglecate(index:int):void
1516
private
function
getopennumbeforecuridx(curidx:int):int23}
24return
ret;25}
2627
private
function getlistcontentheight():number
33 ret -=lui.listcate.spacey;
34return
ret;35}
3637
private
function listcatepos(isvertical:boolean,cell:box, pos:number, index:int):number
else
4647
return
pos;48}
4950
private
function listcaterender(cell:stageselectitem, index:int):void
C 帶有歷史資訊的選單
1.將歷史資訊加入到ini檔案 2.每次load窗體時自動載入ini檔案中資訊到選單 3.新開啟的路徑記錄到ini檔案中 將開啟檔案路徑寫入ini檔案的實現 如下 private void 開啟toolstripmenuitem click object sender,eventargs e 讀取i...
最長上公升子串行LIS演算法實現
介紹一 lis longest increasing subsequence 最長上公升 不下降 子串行,有兩種演算法複雜度為o n logn 和o n 2 在上述演算法中,若使用樸素的順序查詢在d1.dlen查詢,由於共有o n 個元素需要計算,每次計算時的複雜度是o n 則整個演算法的時間複雜度...
最長上公升子串行的長度(LIS)
o nlogn 做法 貪心 二分 該想法是在o n 2 的動態規劃中進一步演化而來 p i 表示第i個元素,dp i 表示長度為i 1的lis結尾元素的最小值 利用貪心的思想,對於乙個上公升子串行,最後面的乙個元素越小,越有利於新增新的元素,這樣lis長度更長,所以我們要維護dp陣列,其表示的就是長...