源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

806 lines
26 KiB

преди 4 седмици
  1. --非cocos自带的扩展action统一放这里
  2. cc = cc or {}
  3. cc.NumberBy = cc.NumberBy or BaseClass(cc.ActionInterval)
  4. --isInteger表示数字是否以整数改变
  5. function cc.NumberBy:__init(duration, deltaNum, isInteger,fmt)
  6. self:initWithDuration(duration, deltaNum, isInteger,fmt)
  7. end
  8. function cc.NumberBy:initWithDuration(duration, deltaNum, isInteger,fmt)
  9. cc.ActionInterval.initWithDuration(self, duration)
  10. if isInteger == nil then
  11. isInteger = true
  12. end
  13. self.isInteger = isInteger
  14. self.deltaNum = deltaNum
  15. self.fmt = fmt
  16. end
  17. function cc.NumberBy:clone()
  18. return cc.NumberBy.New(self._duration, self.deltaNum, self.isInteger)
  19. end
  20. function cc.NumberBy:startWithTarget(target)
  21. cc.ActionInterval.startWithTarget(self, target)
  22. self.previousNum = target:GetComponent("Text").text
  23. end
  24. function cc.NumberBy:reverse()
  25. return cc.NumberBy.New(self._duration, -self.deltaNum, self.isInteger)
  26. end
  27. function cc.NumberBy:update(t)
  28. if (self._target) then
  29. local newNum = tonumber(self.previousNum) + self.deltaNum * t
  30. if self.isInteger then
  31. newNum = math.floor(newNum)
  32. end
  33. if self.fmt then
  34. newNum = string.format(self.fmt,newNum)
  35. end
  36. -- print("Cat:CCActionExtend.lua [36] newNum,self.isInteger,self.previousNum,self.deltaNum: ",newNum,self.isInteger,self.previousNum,self.deltaNum)
  37. if self._target:GetComponent("Text") then
  38. self._target:GetComponent("Text").text = newNum
  39. end
  40. end
  41. end
  42. cc.NumberTo = cc.NumberTo or BaseClass(cc.NumberBy)
  43. --isInteger表示数字是否以整数改变
  44. function cc.NumberTo:__init(duration, targetNum, isInteger,fmt)
  45. self:initWithDuration(duration, targetNum, isInteger,fmt)
  46. end
  47. function cc.NumberTo:initWithDuration(duration, targetNum, isInteger,fmt)
  48. cc.ActionInterval.initWithDuration(self, duration)
  49. if isInteger == nil then
  50. isInteger = true
  51. end
  52. self.isInteger = isInteger
  53. self.targetNum = targetNum
  54. self.fmt = fmt
  55. end
  56. function cc.NumberTo:clone()
  57. return cc.NumberTo.New(self._duration, self.targetNum, self.isInteger)
  58. end
  59. function cc.NumberTo:startWithTarget(target)
  60. cc.ActionInterval.startWithTarget(self, target)
  61. self.previousNum = 0
  62. if target:GetComponent("Text") then
  63. self.previousNum = target:GetComponent("Text").text
  64. end
  65. self.deltaNum = tonumber(self.targetNum or 0)-tonumber(self.previousNum or 0)
  66. end
  67. function cc.NumberTo:reverse()
  68. return nil
  69. end
  70. -- function cc.NumberTo:update(t)
  71. -- if (self._target) then
  72. -- local newNum = self.previousNum + self.deltaNum * t
  73. -- if self.isInteger then
  74. -- newNum = math.floor(newNum)
  75. -- end
  76. -- -- print("Cat:CCActionExtend.lua [36] newNum,self.isInteger,self.previousNum,self.targetNum: ",newNum,self.isInteger,self.previousNum,self.targetNum)
  77. -- self._target:setNumber(newNum)
  78. -- end
  79. -- end
  80. --不断地移动并渐现的动作
  81. cc.FloatFadeIn = cc.FloatFadeIn or {}
  82. function cc.FloatFadeIn.New(start_x, start_y, offset_x, offset_y, float_duration, stay_duration)
  83. float_duration = float_duration or 1.0
  84. stay_duration = stay_duration or 1.0
  85. start_x = start_x or 0
  86. start_y = start_y or 0
  87. offset_x = offset_x or 0
  88. offset_y = offset_y or -50
  89. local move_up = cc.MoveBy.New(float_duration, offset_x, offset_y)
  90. action = cc.Sequence.New(move_up, cc.DelayTime.New(stay_duration), cc.Place.New(start_x, start_y))
  91. action = cc.RepeatForever.New(action)
  92. return action
  93. end
  94. --[[
  95. <*
  96. @Author: ZensYue
  97. @Description: scale运动 widget
  98. @param: pos [x,y]
  99. @param: size [x,y]
  100. @param: scale
  101. @param: time
  102. @return: action
  103. *>
  104. ]]
  105. -- cc.Scale = cc.Scale or {}--废弃
  106. -- function cc.Scale.New(pos,size,scale,time)
  107. -- local x,y = pos.x,pos.y
  108. -- local offx = (size.x - size.x * scale)/2
  109. -- local offy = (size.y - size.y * scale)/2
  110. -- local to_x,to_y = x + offx,y + offy
  111. -- local size_action = cc.SizeTo.New(time,size.x * scale , size.y * scale)
  112. -- local move_action = cc.MoveTo.New(time,to_x , to_y)
  113. -- return cc.Spawn.New(size_action , move_action)
  114. -- end
  115. cc.ScaleX = cc.ScaleX or {}
  116. function cc.ScaleX.New(pos,size,scale,time)
  117. local x,y = pos.x,pos.y
  118. local offx = (size.x - size.x * scale)/2
  119. local offy = (size.y - size.y * scale)/2
  120. local to_x,to_y = x + offx,y
  121. local size_action = cc.SizeTo.New(time,size.x * scale , size.y)
  122. local move_action = cc.MoveTo.New(time,to_x ,y)
  123. return cc.Spawn.New(size_action , move_action)
  124. end
  125. --[[
  126. <*
  127. @Author: ZensYue
  128. @Description:
  129. @param: time
  130. @param: node
  131. @param: rotation
  132. @param: height
  133. @param: count
  134. @return: action
  135. *>
  136. ]]
  137. cc.Shake = cc.Shake or {}
  138. function cc.Shake.New(time ,node, rotation , height , count)
  139. local x,y = node:GetVectorValue(WidgetProperty.Position)
  140. local rotation_r = cc.RotateTo.New(time,rotation)
  141. local move_up = cc.MoveTo.New(time,x,y-height)
  142. local action_1 = cc.Spawn.New(rotation_r,move_up)
  143. local rotation_l = cc.RotateTo.New(time,-rotation)
  144. local move_down = cc.MoveTo.New(time,x,y+height)
  145. local action_2 = cc.Spawn.New(rotation_l,move_down)
  146. local action = cc.Sequence.New(action_1,action_2)
  147. return count and cc.Repeat.New(action,count) or cc.RepeatForever.New(action)
  148. end
  149. cc.FlyToRandom = cc.FlyToRandom or {}
  150. --optional里面有好几个参数可配置,不填的话就用默认的
  151. function cc.FlyToRandom.New(start_pos, end_pos, optional)
  152. optional = optional or {}
  153. local min_duration = optional.min_duration or 0.5
  154. local rand_duration = optional.rand_duration or 0.8
  155. local duration = min_duration + math.random()*rand_duration
  156. local stay_duration = optional.stop_duration or 0.5--飞到背包后停留多久
  157. local is_auto_delete = optional.auto_delete or false
  158. -- local need_flash_on_end = optional.need_flash_on_end or true--到背包后需要闪一下
  159. --需要在开始和终点算出随机的中间点,使其成为曲线
  160. local middlePos = GameMath.GetVecLerp(start_pos, end_pos, 0.5)
  161. local rotate_angle = 90
  162. local add_or_minus = math.random(1,2)
  163. if add_or_minus <= 1 then
  164. rotate_angle = -rotate_angle
  165. end
  166. local controlPos = GameMath.RotateByAngle(start_pos, middlePos, rotate_angle)
  167. local randNum = 0.7*math.random()+0.1
  168. controlPos = GameMath.GetVecLerp(middlePos, controlPos, randNum)
  169. local action = cc.BezierTo.New(duration, {end_pos=end_pos,control_1=controlPos,control_2=controlPos})
  170. -- action = cc.EaseQuadraticActionIn.New(action)
  171. action = cc.EaseQuarticActionIn.New(action)
  172. -- action = cc.EaseQuinticActionIn.New(action)
  173. -- action = cc.EaseQuarticActionIn.New(action)
  174. -- if need_flash_on_end then
  175. -- local function on_end_callback( )
  176. -- GlobalEventSystem:Fire(EventName.BASE_WEALTH_ADD_AFTER, "good")
  177. -- end
  178. -- local move_end_action = cc.CallFunc.New(on_end_callback)
  179. -- action = cc.Sequence.New(action, move_end_action)
  180. -- end
  181. action = cc.Sequence.New(action, cc.DelayTime.New(stay_duration))
  182. if is_auto_delete then
  183. action = cc.Sequence.New(action, cc.Delete.New())
  184. end
  185. return action
  186. end
  187. cc.FlyToBgRandom = cc.FlyToBgRandom or {}
  188. function cc.FlyToBgRandom.New(start_pos, optional)
  189. local view_size = Game.UI:GetScreenView()
  190. local end_pos = {x=view_size.x-177, y=view_size.y-383}--背包坐标
  191. return cc.FlyToRandom.New(start_pos, end_pos, optional)
  192. end
  193. --ScrollBy start
  194. cc.ScrollBy = cc.ScrollBy or BaseClass(cc.ActionInterval)
  195. function cc.ScrollBy:__init(duration, delta_x,delta_y)
  196. self:initWithDuration(duration, delta_x,delta_y)
  197. end
  198. function cc.ScrollBy:clone()
  199. return cc.ScrollBy.New(self._duration, self._positionDeltaX,self._positionDeltaY)
  200. end
  201. function cc.ScrollBy:reverse()
  202. return cc.ScrollBy.New(self._duration, -self._positionDeltaX,-self._positionDeltaY)
  203. end
  204. function cc.ScrollBy:startWithTarget(target)
  205. cc.ActionInterval.startWithTarget(self, target)
  206. if target.GetVectorValue then
  207. self._previousPositionX,self._previousPositionY = target:GetVectorValue(ScrollViewProperty.CanvasPosition)
  208. end
  209. -- print("Cat:ActionInterval [128] self._previousPositionX,self._previousPositionY: ",self._previousPositionX,self._previousPositionY,target.GetVectorValue,target.getPositionValue,target.getPosition)
  210. self._startPositionX,self._startPositionY = self._previousPositionX,self._previousPositionY
  211. end
  212. function cc.ScrollBy:update(t)
  213. if self._target then
  214. local currentPosX,currentPosY = 0, 0
  215. if self._target.GetVectorValue then
  216. currentPosX,currentPosY = self._target:GetVectorValue(ScrollViewProperty.CanvasPosition)
  217. end
  218. local diffX = currentPosX - self._previousPositionX
  219. local diffY = currentPosY - self._previousPositionY
  220. local newPosX = self._startPositionX + (self._positionDeltaX * t)
  221. local newPosY = self._startPositionY + (self._positionDeltaY * t)
  222. -- self._target:SetVectorValue(WidgetProperty.Position,newPosX,newPosY)
  223. if self._target.SetVectorValue then
  224. self._target:SetVectorValue(ScrollViewProperty.CanvasPosition, newPosX, newPosY)
  225. end
  226. self._previousPositionX = newPosX
  227. self._previousPositionY = newPosY
  228. end
  229. end
  230. function cc.ScrollBy:initWithDuration(duration,delta_x,delta_y)
  231. cc.ActionInterval.initWithDuration(self,duration)
  232. self._positionDeltaX = delta_x
  233. self._positionDeltaY = delta_y
  234. end
  235. --ScrollBy end
  236. --ScrollTo start
  237. cc.ScrollTo = cc.ScrollTo or BaseClass(cc.ScrollBy)
  238. function cc.ScrollTo:__init(duration, x, y)
  239. self:initWithPos(duration, x, y)
  240. end
  241. function cc.ScrollTo:initWithPos(duration, x, y)
  242. cc.ActionInterval.initWithDuration(self, duration)
  243. self._endPositionX = x
  244. self._endPositionY = y
  245. end
  246. function cc.ScrollTo:clone()
  247. return cc.ScrollTo.New(self._duration, self._endPositionX, self._endPositionY)
  248. end
  249. function cc.ScrollTo:startWithTarget(target)
  250. cc.ScrollBy.startWithTarget(self, target)
  251. local oldX,oldY = target:GetVectorValue(ScrollViewProperty.CanvasPosition)
  252. self._positionDeltaX = self._endPositionX - oldX
  253. self._positionDeltaY = self._endPositionY - oldY
  254. end
  255. function cc.ScrollTo:reverse()
  256. print("reverse() not supported in ScrollTo")
  257. return nil
  258. end
  259. --ScrollTo end
  260. --FontBy start
  261. cc.FontBy = cc.FontBy or BaseClass(cc.ActionInterval)
  262. function cc.FontBy:__init(duration, font)
  263. self:initWithDuration(duration, font)
  264. end
  265. function cc.FontBy:clone()
  266. return cc.FontBy.New(self._duration, font)
  267. end
  268. function cc.FontBy:reverse()
  269. return cc.FontBy.New(self._duration, -self._positionDeltaX,-self._positionDeltaY)
  270. end
  271. function cc.FontBy:startWithTarget(target)
  272. cc.ActionInterval.startWithTarget(self, target)
  273. if target.GetInt then
  274. self._prefont = target:GetInt(TextBoxProperty.FontSize)
  275. end
  276. self._start_font = self._prefont
  277. end
  278. function cc.FontBy:update(t)
  279. if self._target then
  280. local cut_font = 0
  281. if self._target.GetInt then
  282. cut_font = self._target:GetInt(TextBoxProperty.FontSize)
  283. end
  284. local new_font = self._start_font + (self._font * t)
  285. if self._target.SetInt then
  286. self._target:SetInt(TextBoxProperty.FontSize, new_font)
  287. end
  288. self._prefont = new_font
  289. end
  290. end
  291. function cc.FontBy:initWithDuration(duration,font)
  292. cc.ActionInterval.initWithDuration(self,duration)
  293. self._font = font
  294. end
  295. --FontBy end
  296. --FontTo start
  297. cc.FontTo = cc.FontTo or BaseClass(cc.FontBy)
  298. function cc.FontTo:__init(duration, font)
  299. self:initWithFont(duration, font)
  300. end
  301. function cc.FontTo:initWithFont(duration, font)
  302. cc.ActionInterval.initWithDuration(self, duration)
  303. self._end_font = font
  304. end
  305. function cc.FontTo:clone()
  306. return cc.FontTo.New(duration, font)
  307. end
  308. function cc.FontTo:startWithTarget(target)
  309. cc.FontBy.startWithTarget(self, target)
  310. local old_font = target:GetInt(TextBoxProperty.FontSize)
  311. self._font = self._end_font - old_font
  312. end
  313. function cc.FontTo:reverse()
  314. print("reverse() not supported in FontTo")
  315. return nil
  316. end
  317. --FontTo end
  318. cc.FontToAction = cc.FontToAction or {}
  319. function cc.FontToAction.New(pos,cur_font,font,time)
  320. local x,y = pos.x,pos.y
  321. local offx = (cur_font - font)
  322. local offy = (cur_font - font)
  323. local to_x,to_y = x + offx,y + offy
  324. local size_action = cc.FontTo.New(time,font)
  325. local move_action = cc.MoveTo.New(time,to_x , to_y)
  326. return cc.Spawn.New(size_action , move_action)
  327. end
  328. --[[
  329. Author:LZR
  330. Description:
  331. parameters
  332. [1] =
  333. [2] =
  334. [3] =
  335. [4] =
  336. ]]
  337. --no_back--不回去
  338. --SweepAction start
  339. cc.SweepAction = cc.SweepAction or {}
  340. function cc.SweepAction.New(time,transform,move_type,offset,no_back,fadein)
  341. time = time or 1
  342. offset = offset or 100
  343. move_type = move_type or "down"
  344. local pos = {}
  345. pos.x,pos.y = GetAnchoredPosition(transform)
  346. local start_x,start_y = pos.x,pos.y
  347. local end_x,end_y = pos.x,pos.y
  348. if not no_back then--回去(设置偏移offset的坐标再动画移动回到原点)
  349. if move_type == "down" then
  350. start_y = start_y - offset
  351. elseif move_type == "up" then
  352. start_y = start_y + offset
  353. elseif move_type == "left" then
  354. start_x = start_x + offset
  355. else
  356. start_x = start_x - offset
  357. end
  358. SetAnchoredPosition(transform,start_x,start_y)
  359. else----不回去(动画移动偏移offset的坐标)
  360. if move_type == "down" then
  361. end_y = end_y - offset
  362. elseif move_type == "up" then
  363. end_y = end_y + offset
  364. elseif move_type == "left" then
  365. end_x = end_x - offset
  366. else
  367. end_x = end_x + offset
  368. end
  369. -- print("huangcong:ActionExtend [start:429] :",pos.x, end_x, move_type)
  370. end
  371. local action = cc.MoveTo.createAnchoredType(time,end_x,end_y)
  372. -- if fadein then--同时执行透明和位置移动
  373. -- local fade_action = cc.FadeTo.New(time,1,true)
  374. -- action = cc.Spawn.New(action,fade_action)
  375. -- end
  376. local elastic_in_time = 3
  377. local elastic_out_time = 5
  378. action = cc.EaseElasticIn.New(action,elastic_in_time)
  379. action = cc.EaseElasticOut.New(action,elastic_out_time)
  380. local call_func = cc.CallFunc.New(cc.ActionManager:getInstance():removeAllActionsFromTarget(transform))
  381. action = cc.Sequence.New(action, call_func)
  382. return action
  383. end
  384. --SweepAction end
  385. --[[
  386. Author:LZR
  387. Description:()
  388. parameters
  389. [1] =
  390. [2] =
  391. [3] =
  392. [3] =
  393. [4] =
  394. [5] = {}
  395. ]]
  396. --HeartBeat start
  397. cc.HeartBeat = cc.HeartBeat or {}
  398. function cc.HeartBeat.New(time,obj,delay_time,scaleInfo1,scaleInfo2,time_auto)
  399. if obj == nil then return end
  400. delay_time = delay_time or 0
  401. time = time or 1
  402. scaleInfo = scaleInfo or 0.9
  403. scaleInfo2 = scaleInfo2 or 1.1
  404. time_auto = time_auto or {30,20,40}
  405. local scaleNum = scaleInfo
  406. local x,y = obj:GetVectorValue(WidgetProperty.Position)
  407. local sx,sy = obj:GetVectorValue(WidgetProperty.Size)
  408. local function getmovepos(scale)
  409. local _sx,_sy = obj:GetVectorValue(WidgetProperty.Size)
  410. local new_sx,new_sy = _sx * scale, _sy * scale
  411. local mx,my = (_sx - new_sx)/2, (_sy - new_sy)/2
  412. return mx,my
  413. end
  414. local action1,action2,action3
  415. local action1_1 = cc.SizeTo.New(time*(time_auto[1]/100), sx*scaleNum,sy*scaleNum)
  416. local _x,_y = getmovepos(scaleNum)
  417. local action1_2 = cc.MoveTo.New(time*(time_auto[1]/100), x+_x,y+_y)
  418. action1 = cc.Spawn.New(action1_1, action1_2)
  419. action1 = cc.EaseSineIn.New(action1)
  420. scaleNum2 = (1/scaleInfo * scaleInfo2)
  421. local action2_1 = cc.SizeTo.New(time*(time_auto[2]/100), sx*scaleNum2,sy*scaleNum2)
  422. _x,_y = getmovepos(scaleNum2)
  423. local action2_2 = cc.MoveTo.New(time*(time_auto[2]/100), x+_x,y+_y )
  424. action2 = cc.Spawn.New(action2_1, action2_2)
  425. action2 = cc.EaseSineOut.New(action2)
  426. scaleNum3 = (1/(1/scaleInfo * scaleInfo2))
  427. local action_3_1 = cc.SizeTo.New(time*(time_auto[3]/100), sx,sy)
  428. local action_3_2 = cc.MoveTo.New(time*(time_auto[3]/100), x,y)
  429. action3 = cc.Spawn.New(action_3_1, action_3_2)
  430. action3 = cc.EaseSineOut.New(action3)
  431. local action = cc.Sequence.New(cc.DelayTime.New(delay_time),action1, action2, action3)
  432. return action
  433. end
  434. --[[
  435. Author:huangcong
  436. Description: CanvasGroup(便)
  437. parameters
  438. data.transform--节点
  439. data.delay_time or 0.8--时间
  440. data.init_scale or 2--初始大小
  441. data.end_scale or 1--结束大小
  442. data.start_pos or {x = -200,y = -50}--初始坐标
  443. data.end_pos or {x = -200,y = -50}--结束坐标
  444. data.init_alpha or 0--初始透明度
  445. data.end_alpha or 0--初始透明度
  446. ]]
  447. --HeartBeat start
  448. cc.FallingVibration = cc.FallingVibration or {}
  449. function cc.FallingVibration.New(data)
  450. if data == nil or data.transform == nil then return end
  451. local transform = data.transform--节点
  452. local delay_time = data.delay_time or 0.8--时间
  453. local init_scale = data.init_scale or 2--初始大小
  454. local end_scale = data.end_scale or 1--结束大小
  455. local start_pos = data.start_pos or {x = -200,y = -50}--初始坐标
  456. local end_pos = data.end_pos or {x = -200,y = -50}--结束坐标
  457. local init_alpha = data.init_alpha or 0--初始透明度
  458. local end_alpha = data.end_alpha or 1--初始透明度
  459. transform:GetComponent("CanvasGroup").alpha = init_alpha
  460. transform.localScale = Vector3(init_scale,init_scale,init_scale)
  461. SetAnchoredPosition(transform,start_pos.x,start_pos.y)
  462. local function alphaChangeFunc( percent )
  463. transform:GetComponent("CanvasGroup").alpha = percent*end_alpha
  464. end
  465. --设置透明度变化
  466. local alpha_action = cc.CustomUpdate.New(delay_time,alphaChangeFunc)
  467. --设置大小变化
  468. local scale_action = cc.ScaleTo.New(delay_time,end_scale,end_scale,end_scale)
  469. --设置移动方式
  470. local move_action = cc.MoveTo.createAnchoredType(delay_time,end_pos.x,end_pos.y)
  471. local elastic_in_time = 5
  472. local elastic_out_time = 5
  473. move_action = cc.EaseElasticIn.New(move_action,elastic_in_time)--缓动1
  474. -- move_action = cc.EaseElasticOut.New(move_action,elastic_out_time)--缓动2
  475. --合并动画列表
  476. local action_list = cc.Spawn.New(alpha_action,scale_action)--同时执行三个动作
  477. action_list = cc.Spawn.New(action_list,move_action)--同时执行三个动作
  478. local function end_func( ... )
  479. cc.ActionManager:getInstance():removeAllActionsFromTarget(transform)
  480. if data.end_call_func then
  481. data.end_call_func()
  482. end
  483. end
  484. local call_func = cc.CallFunc.New(end_func)
  485. action_list = cc.Sequence.New(action_list, call_func)
  486. return action_list
  487. end
  488. --HeartBeat end
  489. --Ellipse 椭圆运动
  490. cc.Ellipse = cc.Ellipse or BaseClass(cc.ActionInterval)
  491. function cc.Ellipse:__init(config)
  492. self.config = config
  493. self:initWithDuration(config.time)
  494. end
  495. function cc.Ellipse:clone()
  496. return cc.Ellipse.New(self.config)
  497. end
  498. function cc.Ellipse:reverse()
  499. self.config.moveInAnticlockwise = not self.config.moveInAnticlockwise
  500. return cc.Ellipse.New(self.config)
  501. end
  502. function cc.Ellipse:startWithTarget(target)
  503. cc.ActionInterval.startWithTarget(self, target)
  504. end
  505. function cc.Ellipse:update(t)
  506. if self._target then
  507. local p = self._target.ellipse_p or 0
  508. local x = self.config:GetPositionXAtOval(t + p)
  509. local y = self.config:GetPositionYAtOval(t + p)
  510. cc.Wrapper.SetLocalPosition(self._target,x,y)
  511. end
  512. end
  513. function cc.Ellipse:initWithDuration(duration)
  514. cc.ActionInterval.initWithDuration(self,duration)
  515. end
  516. cc.SliderAction = cc.SliderAction or {}
  517. --duration*时间
  518. --target*进度条对象
  519. --num*需要变化的值
  520. --sum_num*值的总数
  521. function cc.SliderAction.New(duration, target, num, sum_num)
  522. local speed = num/duration
  523. local delay_time = 0.1
  524. local time_sum = 0
  525. local function change_value( ... )--变化方法
  526. time_sum = time_sum + delay_time
  527. local cur_num = speed * (time_sum + delay_time)
  528. target.value = cur_num/ sum_num
  529. if cur_num >= num then
  530. target.value = num / sum_num
  531. cc.ActionManager:getInstance():removeAllActionsFromTarget(target)
  532. end
  533. end
  534. local action = cc.DelayTime.New(delay_time)--每次加一次 延迟一次
  535. action = cc.Sequence.New(cc.CallFunc.New(change_value),cc.DelayTime.New(delay_time))
  536. cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action), target)
  537. end
  538. cc.SliderBy = cc.SliderBy or BaseClass(cc.ActionInterval)--图片进度条增长动画
  539. --duration*时间
  540. --deltaNum*比例系数
  541. --isInteger表示数字是否以整数改变
  542. function cc.SliderBy:__init(duration, deltaNum, sum_num,cur_num)
  543. self:initWithDuration(duration, deltaNum,sum_num,cur_num)
  544. end
  545. function cc.SliderBy:initWithDuration(duration, deltaNum,sum_num,cur_num)
  546. cc.ActionInterval.initWithDuration(self, duration)
  547. self.deltaNum = deltaNum
  548. self.sum_num = sum_num or 1
  549. self.cur_num = cur_num or 0
  550. end
  551. function cc.SliderBy:clone()
  552. return cc.SliderBy.New(self._duration, self.deltaNum, self.sum_num, self.cur_num)
  553. end
  554. function cc.SliderBy:startWithTarget(target)
  555. cc.ActionInterval.startWithTarget(self, target)
  556. self.previousNum = self.cur_num
  557. end
  558. function cc.SliderBy:reverse()
  559. return cc.SliderBy.New(self._duration, -self.deltaNum, self.sum_num, self.cur_num)
  560. end
  561. function cc.SliderBy:update(t)
  562. if (self._target) then
  563. local newNum = self.previousNum + (self.deltaNum * t) * (self.sum_num)
  564. SetSizeDeltaX(self._target,newNum)
  565. end
  566. end
  567. cc.SliderTextBy = cc.SliderTextBy or BaseClass(cc.ActionInterval)--字体增长动画
  568. --duration*时间
  569. --cur_num*变化初始值 假设为10
  570. --anim_num*变化值 假设为90(最终值就是100)
  571. --add_str*添加字符串 默认为"%s" --后面要用到string.format()这样可以支持更多格式 比如变化一个“当前VIP经验+%s”
  572. function cc.SliderTextBy:__init(duration,cur_num,anim_num,add_str)
  573. self:initWithDuration(duration, cur_num, anim_num, add_str)
  574. end
  575. function cc.SliderTextBy:initWithDuration(duration, cur_num, anim_num, add_str)
  576. cc.ActionInterval.initWithDuration(self, duration)
  577. self.add_str = add_str or "%s"
  578. self.anim_num = anim_num or 0
  579. self.cur_num = cur_num or 0
  580. end
  581. function cc.SliderTextBy:clone()
  582. return cc.SliderTextBy.New(self._duration, self.cur_num, self.anim_num, self.add_str)
  583. end
  584. function cc.SliderTextBy:startWithTarget(target)
  585. cc.ActionInterval.startWithTarget(self, target)
  586. self.previousNum = self.cur_num
  587. end
  588. function cc.SliderTextBy:reverse()
  589. return cc.SliderTextBy.New(self._duration, self.cur_num, -self.anim_num, self.add_str)
  590. end
  591. function cc.SliderTextBy:update(t)
  592. if (self._target) then
  593. local newNum = self.previousNum + (self.anim_num * t)
  594. newNum = math.floor(newNum)
  595. self._target.text = string.format(self.add_str,newNum)
  596. end
  597. end
  598. cc.SliderByNew = cc.SliderByNew or BaseClass(cc.ActionInterval)--图片进度条增长动画(区别于另一种 使用fillamout)
  599. --duration*时间
  600. --cur_num当前值
  601. --end_num结束值
  602. --sum_num总值
  603. --必须传入image组件(imageEx没试过 你们可以试试)
  604. function cc.SliderByNew:__init(duration, cur_num, end_num, sum_num)
  605. self:initWithDuration(duration, cur_num, end_num, sum_num)
  606. end
  607. function cc.SliderByNew.createSizeType(duration, cur_num, end_num, sum_num)
  608. local action = cc.SliderByNew.New(duration, cur_num, end_num, sum_num)
  609. action.set_size_type = true
  610. return action
  611. end
  612. function cc.SliderByNew:initWithDuration(duration, cur_num, end_num, sum_num)
  613. cc.ActionInterval.initWithDuration(self, duration)
  614. self.sum_num = sum_num or 1
  615. self.cur_num = cur_num or 0
  616. self.end_num = end_num or 0
  617. end
  618. function cc.SliderByNew:clone()
  619. return cc.SliderByNew.New(self._duration, self.cur_num, self.end_num, self.sum_num)
  620. end
  621. function cc.SliderByNew:startWithTarget(target)
  622. cc.ActionInterval.startWithTarget(self, target)
  623. self.previousNum = self.cur_num
  624. end
  625. function cc.SliderByNew:reverse()
  626. return cc.SliderByNew.New(self._duration, self.end_num, self.cur_num, self.sum_num)
  627. end
  628. function cc.SliderByNew:update(t)
  629. if (self._target) then
  630. local newNum = self.previousNum + t * (self.end_num- self.cur_num)
  631. if self.set_size_type then
  632. SetSizeDeltaX(self._target, newNum)
  633. else
  634. self._target.fillAmount = newNum / self.sum_num
  635. end
  636. end
  637. end
  638. --ChangeImage start
  639. cc.ChangeImage = cc.ChangeImage or BaseClass(cc.ActionInstant)
  640. function cc.ChangeImage:__init( image_info )
  641. self.image_info = image_info
  642. end
  643. function cc.ChangeImage:clone()
  644. return cc.ChangeImage.New(self.image_info)
  645. end
  646. function cc.ChangeImage:reverse()
  647. return self:clone()
  648. end
  649. function cc.ChangeImage:update(time)
  650. if not self._target then return end
  651. 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)
  652. end
  653. --Alpha end
  654. --DestroyObject start
  655. cc.DestroyObject = cc.DestroyObject or BaseClass(cc.ActionInstant)
  656. function cc.DestroyObject:__init()
  657. end
  658. function cc.DestroyObject:clone()
  659. return cc.DestroyObject.New()
  660. end
  661. function cc.DestroyObject:update(time)
  662. cc.Wrapper.DestroyObject(self._target)
  663. end
  664. --DestroyObject end
  665. --CustomUpdate start
  666. cc.CustomUpdate = cc.CustomUpdate or BaseClass(cc.ActionInterval)
  667. --别用.New了,用create前缀的接口
  668. function cc.CustomUpdate:__init(duration, call_back)
  669. self:init(duration, call_back)
  670. end
  671. function cc.CustomUpdate:init(duration, call_back)
  672. cc.ActionInterval.initWithDuration(self, duration)
  673. self._call_back = call_back
  674. end
  675. function cc.CustomUpdate:clone()
  676. local action = cc.CustomUpdate.New()
  677. action:init(self._duration, self._call_back)
  678. return action
  679. end
  680. function cc.CustomUpdate:reverse()
  681. return nil
  682. end
  683. function cc.CustomUpdate:startWithTarget(target)
  684. cc.ActionInterval.startWithTarget(self, target)
  685. end
  686. function cc.CustomUpdate:update(t)
  687. if self._call_back then
  688. self._call_back(t)
  689. end
  690. end
  691. --CustomUpdate end