--非cocos自带的扩展action统一放这里 cc = cc or {} cc.NumberBy = cc.NumberBy or BaseClass(cc.ActionInterval) --isInteger表示数字是否以整数改变 function cc.NumberBy:__init(duration, deltaNum, isInteger,fmt) self:initWithDuration(duration, deltaNum, isInteger,fmt) end function cc.NumberBy:initWithDuration(duration, deltaNum, isInteger,fmt) cc.ActionInterval.initWithDuration(self, duration) if isInteger == nil then isInteger = true end self.isInteger = isInteger self.deltaNum = deltaNum self.fmt = fmt end function cc.NumberBy:clone() return cc.NumberBy.New(self._duration, self.deltaNum, self.isInteger) end function cc.NumberBy:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) self.previousNum = target:GetComponent("Text").text end function cc.NumberBy:reverse() return cc.NumberBy.New(self._duration, -self.deltaNum, self.isInteger) end function cc.NumberBy:update(t) if (self._target) then local newNum = tonumber(self.previousNum) + self.deltaNum * t if self.isInteger then newNum = math.floor(newNum) end if self.fmt then newNum = string.format(self.fmt,newNum) end -- print("Cat:CCActionExtend.lua [36] newNum,self.isInteger,self.previousNum,self.deltaNum: ",newNum,self.isInteger,self.previousNum,self.deltaNum) if self._target:GetComponent("Text") then self._target:GetComponent("Text").text = newNum end end end cc.NumberTo = cc.NumberTo or BaseClass(cc.NumberBy) --isInteger表示数字是否以整数改变 function cc.NumberTo:__init(duration, targetNum, isInteger,fmt) self:initWithDuration(duration, targetNum, isInteger,fmt) end function cc.NumberTo:initWithDuration(duration, targetNum, isInteger,fmt) cc.ActionInterval.initWithDuration(self, duration) if isInteger == nil then isInteger = true end self.isInteger = isInteger self.targetNum = targetNum self.fmt = fmt end function cc.NumberTo:clone() return cc.NumberTo.New(self._duration, self.targetNum, self.isInteger) end function cc.NumberTo:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) self.previousNum = 0 if target:GetComponent("Text") then self.previousNum = target:GetComponent("Text").text end self.deltaNum = tonumber(self.targetNum or 0)-tonumber(self.previousNum or 0) end function cc.NumberTo:reverse() return nil end -- function cc.NumberTo:update(t) -- if (self._target) then -- local newNum = self.previousNum + self.deltaNum * t -- if self.isInteger then -- newNum = math.floor(newNum) -- end -- -- print("Cat:CCActionExtend.lua [36] newNum,self.isInteger,self.previousNum,self.targetNum: ",newNum,self.isInteger,self.previousNum,self.targetNum) -- self._target:setNumber(newNum) -- end -- end --不断地移动并渐现的动作 cc.FloatFadeIn = cc.FloatFadeIn or {} function cc.FloatFadeIn.New(start_x, start_y, offset_x, offset_y, float_duration, stay_duration) float_duration = float_duration or 1.0 stay_duration = stay_duration or 1.0 start_x = start_x or 0 start_y = start_y or 0 offset_x = offset_x or 0 offset_y = offset_y or -50 local move_up = cc.MoveBy.New(float_duration, offset_x, offset_y) action = cc.Sequence.New(move_up, cc.DelayTime.New(stay_duration), cc.Place.New(start_x, start_y)) action = cc.RepeatForever.New(action) return action end --[[ <* @Author: ZensYue @Description: 获取通用scale运动 支持普通widget @param: pos 初始坐标 格式[x,y] @param: size 初始大小 格式[x,y] @param: scale 缩放值 @param: time 运动时间 @return: action *> ]] -- cc.Scale = cc.Scale or {}--废弃 -- function cc.Scale.New(pos,size,scale,time) -- local x,y = pos.x,pos.y -- local offx = (size.x - size.x * scale)/2 -- local offy = (size.y - size.y * scale)/2 -- local to_x,to_y = x + offx,y + offy -- local size_action = cc.SizeTo.New(time,size.x * scale , size.y * scale) -- local move_action = cc.MoveTo.New(time,to_x , to_y) -- return cc.Spawn.New(size_action , move_action) -- end cc.ScaleX = cc.ScaleX or {} function cc.ScaleX.New(pos,size,scale,time) local x,y = pos.x,pos.y local offx = (size.x - size.x * scale)/2 local offy = (size.y - size.y * scale)/2 local to_x,to_y = x + offx,y local size_action = cc.SizeTo.New(time,size.x * scale , size.y) local move_action = cc.MoveTo.New(time,to_x ,y) return cc.Spawn.New(size_action , move_action) end --[[ <* @Author: ZensYue @Description: 宝箱抖动效果 @param: time 运动时间 @param: node 运动节点 @param: rotation 旋转角度 @param: height 浮动高度 @param: count 运动次数 @return: action *> ]] cc.Shake = cc.Shake or {} function cc.Shake.New(time ,node, rotation , height , count) local x,y = node:GetVectorValue(WidgetProperty.Position) local rotation_r = cc.RotateTo.New(time,rotation) local move_up = cc.MoveTo.New(time,x,y-height) local action_1 = cc.Spawn.New(rotation_r,move_up) local rotation_l = cc.RotateTo.New(time,-rotation) local move_down = cc.MoveTo.New(time,x,y+height) local action_2 = cc.Spawn.New(rotation_l,move_down) local action = cc.Sequence.New(action_1,action_2) return count and cc.Repeat.New(action,count) or cc.RepeatForever.New(action) end cc.FlyToRandom = cc.FlyToRandom or {} --optional里面有好几个参数可配置,不填的话就用默认的 function cc.FlyToRandom.New(start_pos, end_pos, optional) optional = optional or {} local min_duration = optional.min_duration or 0.5 local rand_duration = optional.rand_duration or 0.8 local duration = min_duration + math.random()*rand_duration local stay_duration = optional.stop_duration or 0.5--飞到背包后停留多久 local is_auto_delete = optional.auto_delete or false -- local need_flash_on_end = optional.need_flash_on_end or true--到背包后需要闪一下 --需要在开始和终点算出随机的中间点,使其成为曲线 local middlePos = GameMath.GetVecLerp(start_pos, end_pos, 0.5) local rotate_angle = 90 local add_or_minus = math.random(1,2) if add_or_minus <= 1 then rotate_angle = -rotate_angle end local controlPos = GameMath.RotateByAngle(start_pos, middlePos, rotate_angle) local randNum = 0.7*math.random()+0.1 controlPos = GameMath.GetVecLerp(middlePos, controlPos, randNum) local action = cc.BezierTo.New(duration, {end_pos=end_pos,control_1=controlPos,control_2=controlPos}) -- action = cc.EaseQuadraticActionIn.New(action) action = cc.EaseQuarticActionIn.New(action) -- action = cc.EaseQuinticActionIn.New(action) -- action = cc.EaseQuarticActionIn.New(action) -- if need_flash_on_end then -- local function on_end_callback( ) -- GlobalEventSystem:Fire(EventName.BASE_WEALTH_ADD_AFTER, "good") -- end -- local move_end_action = cc.CallFunc.New(on_end_callback) -- action = cc.Sequence.New(action, move_end_action) -- end action = cc.Sequence.New(action, cc.DelayTime.New(stay_duration)) if is_auto_delete then action = cc.Sequence.New(action, cc.Delete.New()) end return action end cc.FlyToBgRandom = cc.FlyToBgRandom or {} function cc.FlyToBgRandom.New(start_pos, optional) local view_size = Game.UI:GetScreenView() local end_pos = {x=view_size.x-177, y=view_size.y-383}--背包坐标 return cc.FlyToRandom.New(start_pos, end_pos, optional) end --ScrollBy start cc.ScrollBy = cc.ScrollBy or BaseClass(cc.ActionInterval) function cc.ScrollBy:__init(duration, delta_x,delta_y) self:initWithDuration(duration, delta_x,delta_y) end function cc.ScrollBy:clone() return cc.ScrollBy.New(self._duration, self._positionDeltaX,self._positionDeltaY) end function cc.ScrollBy:reverse() return cc.ScrollBy.New(self._duration, -self._positionDeltaX,-self._positionDeltaY) end function cc.ScrollBy:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) if target.GetVectorValue then self._previousPositionX,self._previousPositionY = target:GetVectorValue(ScrollViewProperty.CanvasPosition) end -- print("Cat:ActionInterval [128] self._previousPositionX,self._previousPositionY: ",self._previousPositionX,self._previousPositionY,target.GetVectorValue,target.getPositionValue,target.getPosition) self._startPositionX,self._startPositionY = self._previousPositionX,self._previousPositionY end function cc.ScrollBy:update(t) if self._target then local currentPosX,currentPosY = 0, 0 if self._target.GetVectorValue then currentPosX,currentPosY = self._target:GetVectorValue(ScrollViewProperty.CanvasPosition) end local diffX = currentPosX - self._previousPositionX local diffY = currentPosY - self._previousPositionY local newPosX = self._startPositionX + (self._positionDeltaX * t) local newPosY = self._startPositionY + (self._positionDeltaY * t) -- self._target:SetVectorValue(WidgetProperty.Position,newPosX,newPosY) if self._target.SetVectorValue then self._target:SetVectorValue(ScrollViewProperty.CanvasPosition, newPosX, newPosY) end self._previousPositionX = newPosX self._previousPositionY = newPosY end end function cc.ScrollBy:initWithDuration(duration,delta_x,delta_y) cc.ActionInterval.initWithDuration(self,duration) self._positionDeltaX = delta_x self._positionDeltaY = delta_y end --ScrollBy end --ScrollTo start cc.ScrollTo = cc.ScrollTo or BaseClass(cc.ScrollBy) function cc.ScrollTo:__init(duration, x, y) self:initWithPos(duration, x, y) end function cc.ScrollTo:initWithPos(duration, x, y) cc.ActionInterval.initWithDuration(self, duration) self._endPositionX = x self._endPositionY = y end function cc.ScrollTo:clone() return cc.ScrollTo.New(self._duration, self._endPositionX, self._endPositionY) end function cc.ScrollTo:startWithTarget(target) cc.ScrollBy.startWithTarget(self, target) local oldX,oldY = target:GetVectorValue(ScrollViewProperty.CanvasPosition) self._positionDeltaX = self._endPositionX - oldX self._positionDeltaY = self._endPositionY - oldY end function cc.ScrollTo:reverse() print("reverse() not supported in ScrollTo") return nil end --ScrollTo end --FontBy start cc.FontBy = cc.FontBy or BaseClass(cc.ActionInterval) function cc.FontBy:__init(duration, font) self:initWithDuration(duration, font) end function cc.FontBy:clone() return cc.FontBy.New(self._duration, font) end function cc.FontBy:reverse() return cc.FontBy.New(self._duration, -self._positionDeltaX,-self._positionDeltaY) end function cc.FontBy:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) if target.GetInt then self._prefont = target:GetInt(TextBoxProperty.FontSize) end self._start_font = self._prefont end function cc.FontBy:update(t) if self._target then local cut_font = 0 if self._target.GetInt then cut_font = self._target:GetInt(TextBoxProperty.FontSize) end local new_font = self._start_font + (self._font * t) if self._target.SetInt then self._target:SetInt(TextBoxProperty.FontSize, new_font) end self._prefont = new_font end end function cc.FontBy:initWithDuration(duration,font) cc.ActionInterval.initWithDuration(self,duration) self._font = font end --FontBy end --FontTo start cc.FontTo = cc.FontTo or BaseClass(cc.FontBy) function cc.FontTo:__init(duration, font) self:initWithFont(duration, font) end function cc.FontTo:initWithFont(duration, font) cc.ActionInterval.initWithDuration(self, duration) self._end_font = font end function cc.FontTo:clone() return cc.FontTo.New(duration, font) end function cc.FontTo:startWithTarget(target) cc.FontBy.startWithTarget(self, target) local old_font = target:GetInt(TextBoxProperty.FontSize) self._font = self._end_font - old_font end function cc.FontTo:reverse() print("reverse() not supported in FontTo") return nil end --FontTo end cc.FontToAction = cc.FontToAction or {} function cc.FontToAction.New(pos,cur_font,font,time) local x,y = pos.x,pos.y local offx = (cur_font - font) local offy = (cur_font - font) local to_x,to_y = x + offx,y + offy local size_action = cc.FontTo.New(time,font) local move_action = cc.MoveTo.New(time,to_x , to_y) return cc.Spawn.New(size_action , move_action) end --[[ Author:LZR Description:短距离滑入动画 parameters [1] = 时间 [2] = 节点 [3] = 移动方式 [4] = 偏移值 ]] --no_back--不回去 --SweepAction start cc.SweepAction = cc.SweepAction or {} function cc.SweepAction.New(time,transform,move_type,offset,no_back,fadein) time = time or 1 offset = offset or 100 move_type = move_type or "down" local pos = {} pos.x,pos.y = GetAnchoredPosition(transform) local start_x,start_y = pos.x,pos.y local end_x,end_y = pos.x,pos.y if not no_back then--回去(设置偏移offset的坐标再动画移动回到原点) if move_type == "down" then start_y = start_y - offset elseif move_type == "up" then start_y = start_y + offset elseif move_type == "left" then start_x = start_x + offset else start_x = start_x - offset end SetAnchoredPosition(transform,start_x,start_y) else----不回去(动画移动偏移offset的坐标) if move_type == "down" then end_y = end_y - offset elseif move_type == "up" then end_y = end_y + offset elseif move_type == "left" then end_x = end_x - offset else end_x = end_x + offset end -- print("huangcong:ActionExtend [start:429] :",pos.x, end_x, move_type) end local action = cc.MoveTo.createAnchoredType(time,end_x,end_y) -- if fadein then--同时执行透明和位置移动 -- local fade_action = cc.FadeTo.New(time,1,true) -- action = cc.Spawn.New(action,fade_action) -- end local elastic_in_time = 3 local elastic_out_time = 5 action = cc.EaseElasticIn.New(action,elastic_in_time) action = cc.EaseElasticOut.New(action,elastic_out_time) local call_func = cc.CallFunc.New(cc.ActionManager:getInstance():removeAllActionsFromTarget(transform)) action = cc.Sequence.New(action, call_func) return action end --SweepAction end --[[ Author:LZR Description:虎躯一震(心跳效果) parameters [1] = 时间 [2] = 对象 [3] = 延迟时间 [3] = 收缩比例 [4] = 放大比例 [5] = 行为时间比例{收缩时长,放大时长,复原时长} ]] --HeartBeat start cc.HeartBeat = cc.HeartBeat or {} function cc.HeartBeat.New(time,obj,delay_time,scaleInfo1,scaleInfo2,time_auto) if obj == nil then return end delay_time = delay_time or 0 time = time or 1 scaleInfo = scaleInfo or 0.9 scaleInfo2 = scaleInfo2 or 1.1 time_auto = time_auto or {30,20,40} local scaleNum = scaleInfo local x,y = obj:GetVectorValue(WidgetProperty.Position) local sx,sy = obj:GetVectorValue(WidgetProperty.Size) local function getmovepos(scale) local _sx,_sy = obj:GetVectorValue(WidgetProperty.Size) local new_sx,new_sy = _sx * scale, _sy * scale local mx,my = (_sx - new_sx)/2, (_sy - new_sy)/2 return mx,my end local action1,action2,action3 local action1_1 = cc.SizeTo.New(time*(time_auto[1]/100), sx*scaleNum,sy*scaleNum) local _x,_y = getmovepos(scaleNum) local action1_2 = cc.MoveTo.New(time*(time_auto[1]/100), x+_x,y+_y) action1 = cc.Spawn.New(action1_1, action1_2) action1 = cc.EaseSineIn.New(action1) scaleNum2 = (1/scaleInfo * scaleInfo2) local action2_1 = cc.SizeTo.New(time*(time_auto[2]/100), sx*scaleNum2,sy*scaleNum2) _x,_y = getmovepos(scaleNum2) local action2_2 = cc.MoveTo.New(time*(time_auto[2]/100), x+_x,y+_y ) action2 = cc.Spawn.New(action2_1, action2_2) action2 = cc.EaseSineOut.New(action2) scaleNum3 = (1/(1/scaleInfo * scaleInfo2)) local action_3_1 = cc.SizeTo.New(time*(time_auto[3]/100), sx,sy) local action_3_2 = cc.MoveTo.New(time*(time_auto[3]/100), x,y) action3 = cc.Spawn.New(action_3_1, action_3_2) action3 = cc.EaseSineOut.New(action3) local action = cc.Sequence.New(cc.DelayTime.New(delay_time),action1, action2, action3) return action end --[[ Author:huangcong Description:重物掉落震动 节点需要挂载CanvasGroup(以便遍历子节点的透明度) parameters data.transform--节点 data.delay_time or 0.8--时间 data.init_scale or 2--初始大小 data.end_scale or 1--结束大小 data.start_pos or {x = -200,y = -50}--初始坐标 data.end_pos or {x = -200,y = -50}--结束坐标 data.init_alpha or 0--初始透明度 data.end_alpha or 0--初始透明度 ]] --HeartBeat start cc.FallingVibration = cc.FallingVibration or {} function cc.FallingVibration.New(data) if data == nil or data.transform == nil then return end local transform = data.transform--节点 local delay_time = data.delay_time or 0.8--时间 local init_scale = data.init_scale or 2--初始大小 local end_scale = data.end_scale or 1--结束大小 local start_pos = data.start_pos or {x = -200,y = -50}--初始坐标 local end_pos = data.end_pos or {x = -200,y = -50}--结束坐标 local init_alpha = data.init_alpha or 0--初始透明度 local end_alpha = data.end_alpha or 1--初始透明度 transform:GetComponent("CanvasGroup").alpha = init_alpha transform.localScale = Vector3(init_scale,init_scale,init_scale) SetAnchoredPosition(transform,start_pos.x,start_pos.y) local function alphaChangeFunc( percent ) transform:GetComponent("CanvasGroup").alpha = percent*end_alpha end --设置透明度变化 local alpha_action = cc.CustomUpdate.New(delay_time,alphaChangeFunc) --设置大小变化 local scale_action = cc.ScaleTo.New(delay_time,end_scale,end_scale,end_scale) --设置移动方式 local move_action = cc.MoveTo.createAnchoredType(delay_time,end_pos.x,end_pos.y) local elastic_in_time = 5 local elastic_out_time = 5 move_action = cc.EaseElasticIn.New(move_action,elastic_in_time)--缓动1 -- move_action = cc.EaseElasticOut.New(move_action,elastic_out_time)--缓动2 --合并动画列表 local action_list = cc.Spawn.New(alpha_action,scale_action)--同时执行三个动作 action_list = cc.Spawn.New(action_list,move_action)--同时执行三个动作 local function end_func( ... ) cc.ActionManager:getInstance():removeAllActionsFromTarget(transform) if data.end_call_func then data.end_call_func() end end local call_func = cc.CallFunc.New(end_func) action_list = cc.Sequence.New(action_list, call_func) return action_list end --HeartBeat end --Ellipse 椭圆运动 cc.Ellipse = cc.Ellipse or BaseClass(cc.ActionInterval) function cc.Ellipse:__init(config) self.config = config self:initWithDuration(config.time) end function cc.Ellipse:clone() return cc.Ellipse.New(self.config) end function cc.Ellipse:reverse() self.config.moveInAnticlockwise = not self.config.moveInAnticlockwise return cc.Ellipse.New(self.config) end function cc.Ellipse:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) end function cc.Ellipse:update(t) if self._target then local p = self._target.ellipse_p or 0 local x = self.config:GetPositionXAtOval(t + p) local y = self.config:GetPositionYAtOval(t + p) cc.Wrapper.SetLocalPosition(self._target,x,y) end end function cc.Ellipse:initWithDuration(duration) cc.ActionInterval.initWithDuration(self,duration) end cc.SliderAction = cc.SliderAction or {} --duration*时间 --target*进度条对象 --num*需要变化的值 --sum_num*值的总数 function cc.SliderAction.New(duration, target, num, sum_num) local speed = num/duration local delay_time = 0.1 local time_sum = 0 local function change_value( ... )--变化方法 time_sum = time_sum + delay_time local cur_num = speed * (time_sum + delay_time) target.value = cur_num/ sum_num if cur_num >= num then target.value = num / sum_num cc.ActionManager:getInstance():removeAllActionsFromTarget(target) end end local action = cc.DelayTime.New(delay_time)--每次加一次 延迟一次 action = cc.Sequence.New(cc.CallFunc.New(change_value),cc.DelayTime.New(delay_time)) cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action), target) end cc.SliderBy = cc.SliderBy or BaseClass(cc.ActionInterval)--图片进度条增长动画 --duration*时间 --deltaNum*比例系数 --isInteger表示数字是否以整数改变 function cc.SliderBy:__init(duration, deltaNum, sum_num,cur_num) self:initWithDuration(duration, deltaNum,sum_num,cur_num) end function cc.SliderBy:initWithDuration(duration, deltaNum,sum_num,cur_num) cc.ActionInterval.initWithDuration(self, duration) self.deltaNum = deltaNum self.sum_num = sum_num or 1 self.cur_num = cur_num or 0 end function cc.SliderBy:clone() return cc.SliderBy.New(self._duration, self.deltaNum, self.sum_num, self.cur_num) end function cc.SliderBy:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) self.previousNum = self.cur_num end function cc.SliderBy:reverse() return cc.SliderBy.New(self._duration, -self.deltaNum, self.sum_num, self.cur_num) end function cc.SliderBy:update(t) if (self._target) then local newNum = self.previousNum + (self.deltaNum * t) * (self.sum_num) SetSizeDeltaX(self._target,newNum) end end cc.SliderTextBy = cc.SliderTextBy or BaseClass(cc.ActionInterval)--字体增长动画 --duration*时间 --cur_num*变化初始值 假设为10 --anim_num*变化值 假设为90(最终值就是100) --add_str*添加字符串 默认为"%s" --后面要用到string.format()这样可以支持更多格式 比如变化一个“当前VIP经验+%s” function cc.SliderTextBy:__init(duration,cur_num,anim_num,add_str) self:initWithDuration(duration, cur_num, anim_num, add_str) end function cc.SliderTextBy:initWithDuration(duration, cur_num, anim_num, add_str) cc.ActionInterval.initWithDuration(self, duration) self.add_str = add_str or "%s" self.anim_num = anim_num or 0 self.cur_num = cur_num or 0 end function cc.SliderTextBy:clone() return cc.SliderTextBy.New(self._duration, self.cur_num, self.anim_num, self.add_str) end function cc.SliderTextBy:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) self.previousNum = self.cur_num end function cc.SliderTextBy:reverse() return cc.SliderTextBy.New(self._duration, self.cur_num, -self.anim_num, self.add_str) end function cc.SliderTextBy:update(t) if (self._target) then local newNum = self.previousNum + (self.anim_num * t) newNum = math.floor(newNum) self._target.text = string.format(self.add_str,newNum) end end cc.SliderByNew = cc.SliderByNew or BaseClass(cc.ActionInterval)--图片进度条增长动画(区别于另一种 使用fillamout) --duration*时间 --cur_num当前值 --end_num结束值 --sum_num总值 --必须传入image组件(imageEx没试过 你们可以试试) function cc.SliderByNew:__init(duration, cur_num, end_num, sum_num) self:initWithDuration(duration, cur_num, end_num, sum_num) end function cc.SliderByNew.createSizeType(duration, cur_num, end_num, sum_num) local action = cc.SliderByNew.New(duration, cur_num, end_num, sum_num) action.set_size_type = true return action end function cc.SliderByNew:initWithDuration(duration, cur_num, end_num, sum_num) cc.ActionInterval.initWithDuration(self, duration) self.sum_num = sum_num or 1 self.cur_num = cur_num or 0 self.end_num = end_num or 0 end function cc.SliderByNew:clone() return cc.SliderByNew.New(self._duration, self.cur_num, self.end_num, self.sum_num) end function cc.SliderByNew:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) self.previousNum = self.cur_num end function cc.SliderByNew:reverse() return cc.SliderByNew.New(self._duration, self.end_num, self.cur_num, self.sum_num) end function cc.SliderByNew:update(t) if (self._target) then local newNum = self.previousNum + t * (self.end_num- self.cur_num) if self.set_size_type then SetSizeDeltaX(self._target, newNum) else self._target.fillAmount = newNum / self.sum_num end end end --ChangeImage start cc.ChangeImage = cc.ChangeImage or BaseClass(cc.ActionInstant) function cc.ChangeImage:__init( image_info ) self.image_info = image_info end function cc.ChangeImage:clone() return cc.ChangeImage.New(self.image_info) end function cc.ChangeImage:reverse() return self:clone() end function cc.ChangeImage:update(time) if not self._target then return end lua_resM:setImageSprite(self.image_info.arge_self, self.image_info.image or self._target, self.image_info.abName, self.image_info.resName, self.image_info.auto_size, self.image_info.load_call_back) end --Alpha end --DestroyObject start cc.DestroyObject = cc.DestroyObject or BaseClass(cc.ActionInstant) function cc.DestroyObject:__init() end function cc.DestroyObject:clone() return cc.DestroyObject.New() end function cc.DestroyObject:update(time) cc.Wrapper.DestroyObject(self._target) end --DestroyObject end --CustomUpdate start cc.CustomUpdate = cc.CustomUpdate or BaseClass(cc.ActionInterval) --别用.New了,用create前缀的接口 function cc.CustomUpdate:__init(duration, call_back) self:init(duration, call_back) end function cc.CustomUpdate:init(duration, call_back) cc.ActionInterval.initWithDuration(self, duration) self._call_back = call_back end function cc.CustomUpdate:clone() local action = cc.CustomUpdate.New() action:init(self._duration, self._call_back) return action end function cc.CustomUpdate:reverse() return nil end function cc.CustomUpdate:startWithTarget(target) cc.ActionInterval.startWithTarget(self, target) end function cc.CustomUpdate:update(t) if self._call_back then self._call_back(t) end end --CustomUpdate end