zoukankan      html  css  js  c++  java
  • (lua) 基于cocos 的插入光效

    具体的表现是:移动滚动容器到头部, 新增icon淡入并掉入格子,显示格子中的图标,icon放大并淡出

     1 function UISkyResource:playActivedEffect(id)
     2     if not id or id == 0 then
     3         return;
     4     end
     5 
     6     -- 找到设置的探索符石,滚动过去,选中它
     7     local index     = 1;
     8     -- 道具模块,用来查找道具(id)的 “...”属性
     9     local iconIndex = ItemM.query(id, "icon");
    10     -- 封装的方法用来查找特定类型图片路径,参数为图片名
    11     local iconPath  = getItemIconPath(iconIndex);
    12     local stoneGrid = self.scrollView:getChildByName("item" .. index);
    13     local stoneIcon = stoneGrid:getChildByName("icon");
    14     stoneIcon:setVisible(false);
    15 
    16     -- 计算内部容器位移
    17     -- 单元格间距(纵向)
    18     local hGap = 10;
    19     -- 顶部单元格与容器顶的距离
    20     local topHGap  = 5;
    21     -- 单元格高度
    22     local iconHeight = 110;
    23     -- 容器框高度
    24     local viewHeight = self.scrollView:getContentSize().height;
    25     -- 容器滚动高度
    26     local innerHeight = self.scrollView:getInnerContainerSize().height;
    27     -- 容器需要滚动的高度值
    28     local y = innerHeight - topHGap - (math.floor(index / PAGE_COLUMN) - 1) * (iconHeight + hGap) - iconHeight / 2;
    29 
    30 
    31     -- 容器最大允许的滚动高度值,大于则滚出界
    32     local max = innerHeight - viewHeight / 2;
    33     -- 容器最小云溪的滚动高度值,小于则不会滚
    34     local min = viewHeight / 2;
    35 
    36     if y > max then
    37         y = max;
    38     end
    39     if y < min then
    40         y = min;
    41     end
    42 
    43     -- 滚动内部容器
    44     local moveTo = cc.MoveTo:create(0.1, cc.p(0, viewHeight / 2 - y));
    45     self.scrollView:getInnerContainer():runAction(moveTo);
    46 
    47     -- 新增冈布奥icon淡入并掉入格子,显示格子中的冈布奥图标,icon放大并淡出
    48     local icon = ccui.ImageView:create();
    49     icon:loadTexture(iconPath);
    50     icon:setOpacity(0);
    51     icon:setPosition(stoneIcon:getPositionX(), stoneIcon:getPositionY() + 100);
    52     stoneGrid:addChild(icon);
    53 
    54     local fadeIn = cc.FadeIn:create(0.3);
    55     local moveTo = cc.EaseIn:create(cc.MoveBy:create(0.3, cc.p(0, -100)), 2.5);
    56     local scale = stoneIcon:getScale();
    57     local scaleTo = cc.ScaleTo:create(0.5, scale * 2);
    58     local callFunc = cc.CallFunc:create(function()
    59         stoneGrid:removeChild(icon);
    60     end);
    61     local showStone = cc.CallFunc:create(function()
    62         stoneIcon:setVisible(true);
    63     end);
    64 
    65     icon:runAction(cc.Sequence:create(cc.Spawn:create(fadeIn, moveTo), showStone, cc.Spawn:create(scaleTo,
    66 
    67 cc.FadeOut:create(0.5)), callFunc));
    68 end
    effect
  • 相关阅读:
    Problem: 八中上厕所
    Problem: 最短路上的统计
    股票买卖问题
    Redis(十二)——Redis为什么是单线程的?
    链表题汇总
    Redis(十一)——集群模式
    Redis(十)——哨兵模式
    Redis(九)——主从复制
    Redis(八)——客户端与服务器
    Redis(七)——事件
  • 原文地址:https://www.cnblogs.com/kpxy/p/10146254.html
Copyright © 2011-2022 走看看