Guest User

Code example

a guest
Sep 24th, 2015
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var SortLayer = cc.Layer.extend({
  3.     ctor: function()
  4.     {
  5.         this._super();
  6.  
  7.         this.scheduleUpdate();
  8.     },
  9.  
  10.     _sprOrder:0,
  11.     _graphCreated: false,
  12.  
  13.  
  14.     update: function(dt)
  15.     {
  16.         var children = this.getChildren();
  17.         var childCount = this.getChildrenCount();
  18.  
  19.         this._sprOrder = 0;
  20.  
  21.         for(var i=0; i < childCount; ++i)
  22.         {
  23.             var a_max = cc.p(1,1);
  24.  
  25.                 if(!children[i].hasOwnProperty("spritesBehind"))
  26.                 {
  27.                     children[i]["spritesBehind"] = new Array(childCount);
  28.                     children[i].behindCount = 0;
  29.                     children[i].visited = false;
  30.                 }
  31.  
  32.                 for(var j=0; j < childCount; ++j)
  33.                 {
  34.                     if(i!=j)
  35.                     {
  36.                         var b_min = cc.p();
  37. ;                        if(b_min.x < a_max.x && b_min.y > a_max.y)
  38.                             children[i].spritesBehind[children[i].behindCount++] = children[j];
  39.                     }
  40.                 }
  41.             }
  42.  
  43.  
  44.         for(var i=0; i < childCount; ++i) {
  45.             this._visitSprite(children[i]);
  46.         }
  47.  
  48.         for(var i=0; i < childCount; ++i) {
  49.             children[i].visited = false;
  50.         }
  51.  
  52.     },
  53.  
  54.     _visitSprite: function(spr)
  55.     {
  56.         if(!spr.visited)
  57.         {
  58.             spr.visited = true;
  59.  
  60.             var behindCount =  spr.behindCount;
  61.  
  62.             for(var i=0; i < behindCount; ++i)
  63.             {
  64.                 if(!spr.spritesBehind[i])
  65.                 {
  66.                     break;
  67.                 }
  68.                 else
  69.                 {
  70.                     this._visitSprite(spr.spritesBehind[i]);
  71.  
  72.                         --spr.behindCount;
  73.                         spr.spritesBehind[i] = null;
  74.  
  75.                 }
  76.             }
  77.  
  78.             spr.setLocalZOrder(this._sprOrder++);
  79.         }
  80.     }
  81. });
  82.  
  83.  
  84. var HelloWorldLayer = ccui.Layout.extend({
  85.     _layout:null,
  86.     ctor:function () {
  87.         this._super();
  88.  
  89.         this.setContentSize(cc.director.getWinSize());
  90.  
  91.         var sort =  new SortLayer();
  92.  
  93.         this.addChild(sort);
  94.  
  95.         for(var  i =0 ; i < 10; ++i)
  96.         {
  97.             var img = new ccui.ImageView(res.HelloWorld_png);
  98.             img.setScale(1/10);
  99.             img.setPosition(cc.rand() % cc.director.getWinSize().width, cc.rand() % cc.director.getWinSize().height);
  100.             sort.addChild(img);
  101.         }
  102.  
  103.         var listView = new ccui.ListView();
  104.         listView.setDirection(ccui.ScrollView.DIR_VERTICAL);
  105.  
  106.         this.addChild(listView);
  107.  
  108.         var layout =  new ccui.Layout();
  109.         layout.setLayoutType(ccui.Layout.RELATIVE);
  110.         layout.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);
  111.         layout.setBackGroundColor(cc.color(cc.rand()%255, cc.rand()%255, cc.rand()%255));
  112.  
  113.         layout.setContentSize(200, 200);
  114.  
  115.         var label =  new ccui.Text("Test Text", "Arial", 18);
  116.  
  117.         layout.addChild(label);
  118.  
  119.         listView.pushBackCustomItem(layout);
  120.  
  121.         var clonnedLayout = layout.clone();
  122.         clonnedLayout.setBackGroundColor(cc.color(cc.rand()%255, cc.rand()%255, cc.rand()%255));
  123.         listView.pushBackCustomItem(clonnedLayout);
  124.  
  125.         listView.setContentSize(200, 300);
  126.  
  127.         return true;
  128.     }
  129. });
  130.  
  131. var HelloWorldScene = cc.Scene.extend({
  132.     ctor:function () {
  133.         this._super();
  134.         var layer = new HelloWorldLayer();
  135.         this.addChild(layer);
  136.     }
  137. });
Advertisement
Add Comment
Please, Sign In to add comment