行排序的逻辑

1.lua脚本部分

--------------------------此部分封装了排序的方法-------------------------------------

        
function
unlock(sender)
            
local
senderName=sender:getPropertyByName("name");
            
move[senderName]=0;
        
end;

         function
lock(sender)
           
local
senderName=sender:getPropertyByName("name");
            
move[senderName]=1;
        
end;

         function
initSort(rowNames)
           
sort,revSort,move={},{},{};
           
for rowNum,rowName in pairs(rowNames)
do
                  
sort[rowNum]=rowName;
                  
revSort[rowName]=rowNum;
           
end;
         
end;

         function
moveRow(rowName,moveY)
                 
local
onclick=revSort[rowName];
                 
if moveY<0
then
                     
near=onclick-1;                                 
 
                 
elseif moveY>0
then
                     
near=onclick+1;
                 
end
                 
local rowNear=sort[near];
 
                 
local
senderOnclick=document:getElementsByName(rowName);
                 
local
senderNear=document:getElementsByName(rowNear);
                 
transition:setStopListener(senderOnclick,unlock);
                 
transition:setStopListener(senderNear,unlock);
                 
transition:setStartListener(senderOnclick,lock);
                 
transition:setStartListener(senderNear,lock);
                 
transition:translateY(senderOnclick,moveY,1);               
 
                 
transition:translateY(senderNear,-moveY,1);

                 
sort[onclick],sort[near]=sort[near],sort[onclick];

revSort[rowName],revSort[rowNear]=revSort[rowNear],revSort[rowName];

         end;

------------------------初始化排序--------------------------------------
        
--参数:需要排序的控件名称,在table中的位置与初始位置需相同
        
initSort({"div1","div2","div3","div4"});

------------------------针对该页面调用排序-----------------------------------------     
 
        
 
         local
y=0;

         function
clickFun(argument,sender)

           
y=y+argument["y"];
           
alert(y);
           
local
rowName=sender:getPropertyByName("name");
           
local
position=revSort[rowName];            
 
           
local
moving=0;
           
for i,v in pairs(move)
do
               
moving=moving+move[v]                              
 
           
end;                  
 
         
--以下是向下移动的代码
              
if y>=30 and position~=4 and moving==0 then 
 
                 
moveRow(rowName,60);
                 
y=0;
 
               
end;        
 
         
--以下是向上移动的代码
               
if y<=-30 and  position~=1 and moving==0
then
                 
moveRow(rowName,-60);
                 
y=0;                
 
                
end;         
 
           end;

---------------------------设置监听-------------------------------
           
local div2 =
document:getElementsByTagName("div2");
           
gesture:setDragListener(div2, clickFun);

2.页面部分(样式略)

<body name="body">
    <div
class="div_test1" name ="div1" border="0">
      
  <label>row1</label>
   
</div>
    <div class="div_test2" name ="div2"
border="0">
        
<label>row2</label>
   
</div>
    <div class="div_test3" name ="div3"
border="0">
        
<label>row3</label>
   
</div>
    <div class="div_test4" name ="div4"
border="0">
         
<label>row4</label>
   
</div>
    </body>

行排序的逻辑,布布扣,bubuko.com

时间: 2024-10-07 05:29:32

行排序的逻辑的相关文章

Javascript实现表格行排序

网站开发中凡是用到表格来展示数据的,往往都要根据某个列来对行排序,下面是我从书上看到的一个行排序例子,看过后受益匪浅,故分享出来. 直接献上完整代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Javascript原生代码实现表格排序</title> <script type="

JavaScript --- Date():轮值行排序

这几天师傅开始做一个项目,要给多个金融机构按周排值.根据项目的后台代码,师傅交代我用 javascript 写前台轮值排班的代码,实现四个轮值行按周循环值班的功能. 以下是代码,为了解决引用的问题,代码写得有点罗嗦.虽然解决了问题,感觉应该能有更简单实现方法,但是现在想不出更好的方法~~~~~希望大家给个建议,谢谢啦! 1 var bank =["工行","农行","中行","建行"], 2 result = []; 3 4

Excel小技巧-你是否只知道表格按列排序?其实也可以按行排序!excel数据按行排序

Excel小技巧-你是否只知道表格按列排序?其实也可以按行排序!excel数据按行排序.系统默认情况下,数据都是按列进行排序的,可以通过简单的操作,让其进行按行进行排序. [解决方法,教程视频资料如下] 本教程视频资料来源:http://edu.51cto.com/course/15404.html 完整博客资料:http://blog.51cto.com/13172026/2292179 完整视频资料:http://edu.51cto.com/lecturer/13162026.html 原文

matlab中排序(矩阵的行排序及列排序)

>> a=[1,2,3;4,6,0;0,5,2] a = 1 2 3 4 6 0 0 5 2 >> sort(a) ans = 0 2 0 1 5 2 4 6 3 >> sort(a,'descend') ans = 4 6 3 1 5 2 0 2 0 即matlab中对矩阵默认按列升序排序;如果降序排序使用sort(a,'descend'),升序使用sort(a,'ascend'), 1 >> sort(a,'ascend') 2 3 ans = 4 5

UITableView 删除行和行排序 这里只介绍代理方法

#pragma mark -代理方法 #pragma mark 设置cell表格高度 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 60; } #pragma mark 当cell实行编辑功能时调用 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableVi

PostgreSQL 行排序详解

在查询生成输出表之后,也就是在处理完选择列表之后,你还可以对输出表进行排序. 如果没有排序,那么行将以不可预测的顺序返回(实际顺序将取决于扫描和连接规划类型和在磁盘上的顺序, 但是肯定不能依赖这些东西).确定的顺序只能在明确地使用了排序步骤之后才能保证. ORDER BY子句用于声明排序顺序: SELECT _select_list_ FROM _table_expression_ ORDER BY _sort_expression1_ [ASC | DESC] [NULLS { FIRST |

C语言之基本算法42—矩阵转置及按行按列排序

//矩阵转置 按行按列排序 /* ================================================================== 题目:输入m*n矩阵,按行升序排列输出. 输入: 4 3 5 6 2 9 8 1 2 8 7 1 2 3 8 输出: 2 3 4 5 6 1 2 8 8 9 1 2 3 7 8 ================================================================== */ #includ

逻辑行和物理行

物理行是你在编写程序时所 看见 的.逻辑行是Python 看见 的单个语句.Python假定每个 物理行 对应一个 逻辑行 .逻辑行的例子如print 'Hello World'这样的语句——如果它本身就是一行(就像你在编辑器中看到的那样),那么它也是一个物理行.默认地,Python希望每行都只使用一个语句,这样使得代码更加易读.如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法.分号 #例如: i = 5 print i #与下面这个相同: i = 5;

Python 逻辑行/物理行

物理行是你在编写程序时所看见的. 逻辑行是Python看见的单个语句.Python假定每个物理行对应一个逻辑行 . 默认地,Python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法.分号表示一个逻辑行/语句的结束. 例如: i = 5 print i 与下面这个相同: i = 5; print i; 同样也可以写成: i = 5; print i; 甚至可以写成: i = 5; print i 然而,我