1. 程式人生 > >(lua) 基於cocos 的插入光效

(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