(lua) 基於cocos 的插入光效

具體的表現是:移動滾動容器到頭部, 新增icon淡入並掉入格子,顯示格子中的圖標,icon放大並淡出ide

 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
相關文章
相關標籤/搜索