具体的表现是:移动滚动容器到头部, 新增icon淡入并掉入格子,显示格子中的图标,icon放大并淡出
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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