(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

猜你喜欢

转载自www.cnblogs.com/kpxy/p/10146254.html