Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

363 linhas
12 KiB

  1. -- 使用新动画(参考跑得快过来)
  2. local DDZNewEffectHelper = class("DDZNewEffectHelper")
  3. function DDZNewEffectHelper:ctor( o )
  4. end
  5. -- 新顺子,不知道为何,imageview不能更改为node
  6. function DDZNewEffectHelper:getShunziNew()
  7. local node = cc.ImageView:create()
  8. node:setOpacity(0)
  9. node.onEnter = function (nd)
  10. -- 顺子两字
  11. local img_shun = cc.ImageView:create()
  12. local img_zi = cc.ImageView:create()
  13. img_shun:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_shunzi/zy_ddz_img_shun.png')
  14. img_shun:setPositionX(img_shun:getPositionX() - 50)
  15. img_zi:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_shunzi/zy_ddz_img_zi.png')
  16. img_zi:setPositionX(img_zi:getPositionX() + 50)
  17. node:addChild(img_shun)
  18. node:addChild(img_zi)
  19. -- 顺子模糊动画
  20. local img_shun_mohu = cc.ImageView:create()
  21. local img_zi_mohu = cc.ImageView:create()
  22. img_shun_mohu:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_shunzi/zy_ddz_img_shunmohu_1.png')
  23. img_shun_mohu:setPositionX(img_shun:getPositionX() + 300)
  24. img_shun_mohu:setPositionY(img_shun:getPositionY())
  25. img_zi_mohu:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_shunzi/zy_ddz_img_shunmohu_2.png')
  26. img_zi_mohu:setPositionX(img_zi:getPositionX() + 300)
  27. img_zi_mohu:setPositionY(img_zi:getPositionY())
  28. node:addChild(img_shun_mohu)
  29. node:addChild(img_zi_mohu)
  30. -- 移除本体
  31. local function removeSelf()
  32. node:runAction(cc.Sequence:create(cc.FadeOut:create(0.05), cc.CallFunc:create(function() node:removeFromParent() end)))
  33. end
  34. -- 模糊动画
  35. local function showMoHu()
  36. local shun_time = 0.2
  37. local zi_time = 0.4
  38. -- 顺_模糊字
  39. local shun_moveTo = cc.MoveTo:create(shun_time, cc.p(img_shun:getPositionX(), img_shun:getPositionY()))
  40. local shun_removeCallback = cc.CallFunc:create(function()
  41. img_shun_mohu:removeFromParent()
  42. end)
  43. local shun_seqAni = cc.Sequence:create(shun_moveTo, shun_removeCallback)
  44. img_shun_mohu:runAction(shun_seqAni)
  45. -- 子_模糊字
  46. local zi_moveTo = cc.MoveTo:create(zi_time, cc.p(img_zi:getPositionX(), img_zi:getPositionY()))
  47. local zi_removeCallback = cc.CallFunc:create(function()
  48. img_zi_mohu:removeFromParent()
  49. end)
  50. local zi_seqAni = cc.Sequence:create(zi_moveTo, zi_removeCallback)
  51. img_zi_mohu:runAction(zi_seqAni)
  52. end
  53. -- 粒子光动画
  54. local function showLizi_Light()
  55. local lizi_light = cc.ImageView:create()
  56. lizi_light:setPosition(cc.p(img_zi:getPositionX() + 100, img_zi:getPositionY()))
  57. node:addChild(lizi_light)
  58. for i = 1, 15 do
  59. local ac = cc.Sequence:create(cc.DelayTime:create(0.05*(i-1)), cc.CallFunc:create(function ()
  60. lizi_light:loadTexture(string.format("zy_ddz_CardFX_ShunZi_Sheet1_%02d.png", i), 1)
  61. end))
  62. lizi_light:runAction(cc.Spawn:create(ac, cc.MoveBy:create(0.7, cc.p(-20, 0))))
  63. end
  64. lizi_light:runAction(cc.Sequence:create(cc.DelayTime:create(0.7), cc.FadeOut:create(0.1), cc.CallFunc:create(function() lizi_light:removeFromParent() end)))
  65. end
  66. -- 粒子风动画
  67. local function showLizi_Wind()
  68. local lizi_wind = cc.ImageView:create()
  69. lizi_wind:setPosition(cc.p(img_zi:getPositionX() + 100, img_zi:getPositionY()))
  70. lizi_wind:setOpacity(100)
  71. node:addChild(lizi_wind)
  72. for i = 1, 13 do
  73. local ac = cc.Sequence:create(cc.DelayTime:create(0.05*(i-1)), cc.CallFunc:create(function ()
  74. lizi_wind:loadTexture(string.format("zy_ddz_CardFX_ShunZi_Sheet2_%02d.png", i), 1)
  75. end))
  76. lizi_wind:runAction(cc.Spawn:create(ac, cc.MoveBy:create(0.7, cc.p(-20, 0))))
  77. end
  78. lizi_wind:runAction(cc.Sequence:create(cc.DelayTime:create(0.7), cc.FadeOut:create(0.1), cc.CallFunc:create(function()
  79. lizi_wind:removeFromParent()
  80. removeSelf()
  81. end)))
  82. end
  83. -- 动画播放
  84. local spawnAni = cc.Spawn:create(
  85. cc.FadeIn:create(0.1),
  86. cc.CallFunc:create(showMoHu),
  87. cc.CallFunc:create(showLizi_Light),
  88. cc.CallFunc:create(showLizi_Wind)
  89. )
  90. nd:runAction(spawnAni)
  91. end
  92. return node
  93. end
  94. -- 新连对
  95. function DDZNewEffectHelper:getLianduiNew()
  96. local node = cc.ImageView:create()
  97. node.onEnter = function (nd)
  98. -- 移除本体
  99. local function removeSelf()
  100. node:runAction(cc.Sequence:create(cc.FadeOut:create(0.02), cc.CallFunc:create(function() node:removeFromParent() end)))
  101. end
  102. local img_liandui = cc.ImageView:create()
  103. img_liandui:loadTexture('zy_ddz_CardFX_LianDui_2.png', 1)
  104. img_liandui:setScale(2)
  105. img_liandui:setLocalZOrder(5)
  106. node:addChild(img_liandui)
  107. -- 添加模糊
  108. local function showMoHu()
  109. -- 这里需要用到颜色混合,所以用sprite
  110. local img_mohu = cc.Sprite:create()
  111. img_mohu:setSpriteFrame('zy_ddz_CardFX_LianDui_1.png')
  112. img_mohu:setScale(2.5)
  113. img_mohu:setLocalZOrder(1)
  114. node:addChild(img_mohu)
  115. local seqAni_mohu = cc.Sequence:create(
  116. cc.ScaleTo:create(0.2, 1.3),
  117. cc.FadeTo:create(0.6, 0),
  118. cc.CallFunc:create(function()
  119. img_mohu:removeFromParent()
  120. end)
  121. )
  122. img_mohu:runAction(seqAni_mohu)
  123. local img_light = cc.Sprite:create()
  124. img_light:setSpriteFrame('zy_ddz_CardFX_LianDui_3.png')
  125. img_light:setScale(3.2, 1.6)
  126. img_light:setLocalZOrder(2)
  127. img_light:setOpacity(160)
  128. img_light:setBlendFunc(gl.ONE, gl.ONE)
  129. node:addChild(img_light)
  130. local seqAni_light = cc.Sequence:create(
  131. cc.ScaleTo:create(0.2, 1.3),
  132. cc.FadeTo:create(0.4, 0),
  133. cc.CallFunc:create(function()
  134. img_light:setVisible(false)
  135. end),
  136. cc.DelayTime:create(0.3),
  137. cc.CallFunc:create(function()
  138. img_light:removeFromParent()
  139. img_liandui:removeFromParent()
  140. removeSelf()
  141. end)
  142. )
  143. img_light:runAction(seqAni_light)
  144. end
  145. local seqAni = cc.Sequence:create(
  146. cc.ScaleTo:create(0.2, 0.8),
  147. cc.ScaleTo:create(0.1, 0.9),
  148. cc.Spawn:create(cc.ScaleTo:create(0.1, 0.6), cc.CallFunc:create(showMoHu))
  149. )
  150. img_liandui:runAction(seqAni)
  151. end
  152. return node
  153. end
  154. -- 新炸弹
  155. function DDZNewEffectHelper:getBombNew()
  156. local node = cc.ImageView:create()
  157. node.onEnter = function (nd)
  158. -- 移除本体
  159. local function removeSelf()
  160. node:runAction(cc.Sequence:create(cc.FadeOut:create(0.05), cc.CallFunc:create(function() node:removeFromParent() end)))
  161. end
  162. local img_bomb = cc.ImageView:create()
  163. img_bomb:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_bomb/zy_ddz_zhadan.png')
  164. img_bomb:setScale(0.1)
  165. img_bomb:setRotation(math.random(0, 30))
  166. node:addChild(img_bomb)
  167. local time = 0.2
  168. local winSize = cc.Director:getInstance():getWinSize()
  169. local worldPos = cc.p(winSize.width/2, winSize.height/2 + 80)
  170. local localPos = node:convertToNodeSpace(worldPos)
  171. local function endSeqCallFunc()
  172. img_bomb:setVisible(false)
  173. -- 地板裂痕
  174. local img_floor_lizi = cc.ImageView:create()
  175. img_floor_lizi:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_bomb/zy_ddz_dilie.png')
  176. img_floor_lizi:setScale(0.2)
  177. img_floor_lizi:setPosition(cc.p(localPos.x, localPos.y - 50))
  178. node:addChild(img_floor_lizi)
  179. local ani_scale_floor = cc.ScaleTo:create(0.1, 0.6)
  180. img_floor_lizi:runAction(ani_scale_floor)
  181. -- 爆炸光晕
  182. local img_boom_yun = cc.ImageView:create()
  183. img_boom_yun:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_bomb/zy_ddz_zdguang_1.png')
  184. img_boom_yun:setScale(2)
  185. img_boom_yun:setOpacity(150)
  186. img_boom_yun:setPosition(cc.p(localPos.x, localPos.y - 20))
  187. node:addChild(img_boom_yun)
  188. local ani_fade_yun = cc.FadeTo:create(0.5, 0)
  189. img_boom_yun:runAction(ani_fade_yun)
  190. -- 爆炸粒子
  191. local img_bomb_lizi = cc.ImageView:create()
  192. img_bomb_lizi:setScale(1.5)
  193. img_bomb_lizi:setPosition(localPos)
  194. node:addChild(img_bomb_lizi)
  195. for i=1,14 do
  196. local ac = cc.Sequence:create(cc.DelayTime:create(0.05*(i-1)), cc.CallFunc:create(function ()
  197. img_bomb_lizi:loadTexture(string.format("zy_ddz_CardFX_ZhaDan_Sheet1_%02d.png", i), 1)
  198. end))
  199. img_bomb_lizi:runAction(ac)
  200. end
  201. img_bomb_lizi:runAction(cc.Sequence:create(cc.DelayTime:create(0.05*14), cc.CallFunc:create(function()
  202. img_bomb_lizi:removeFromParent()
  203. img_boom_yun:removeFromParent()
  204. img_floor_lizi:removeFromParent()
  205. img_bomb:removeFromParent()
  206. removeSelf()
  207. end)))
  208. end
  209. local seqAni = cc.Sequence:create(
  210. cc.Spawn:create(
  211. cc.RotateBy:create(time, 60),
  212. cc.ScaleTo:create(time, 0.4),
  213. cc.MoveTo:create(time, localPos)
  214. ),
  215. cc.CallFunc:create(endSeqCallFunc)
  216. )
  217. img_bomb:runAction(seqAni)
  218. end
  219. return node
  220. end
  221. -- 新飞机
  222. function DDZNewEffectHelper:getPlanNew()
  223. local node = cc.ImageView:create()
  224. node.onEnter = function (nd)
  225. local plane = cc.ImageView:create()
  226. plane:loadTexture('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_plan/zy_ddz_feiji.png')
  227. plane:setAnchorPoint(cc.p(0.5, 0.5))
  228. plane:setScale(0.5)
  229. plane:setEulerRotation(cc.vec3(0, 0, 70))
  230. node:addChild(plane)
  231. -- 添加尾气
  232. local weiqi = cc.ImageView:create()
  233. local weiqiRes = 'pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_plan/zy_ddz_weiqi_1.png'
  234. weiqi:loadTexture(weiqiRes)
  235. weiqi:setPosition(cc.p(plane:getContentSize().width - 30, plane:getContentSize().height/2 - 20))
  236. weiqi:setLocalZOrder(-1)
  237. plane:addChild(weiqi)
  238. -- 尾气动画
  239. local changeFrameTime = 0.1
  240. local frameIndex = 1
  241. local frameMaxIndex = 2
  242. local function changeImage()
  243. frameIndex = frameIndex + 1
  244. if frameIndex > frameMaxIndex then
  245. frameIndex = 1
  246. end
  247. weiqiRes = string.format('pk_erdoudizhu/res/ui/zy_fangjian/doudizhu_cardsAni/zy_ddz_plan/zy_ddz_weiqi_%d.png', frameIndex)
  248. weiqi:loadTexture(weiqiRes)
  249. end
  250. weiqi:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(changeFrameTime), cc.CallFunc:create(changeImage))))
  251. -- 移除本体
  252. local function removeSelf()
  253. node:runAction(cc.Sequence:create(cc.FadeOut:create(0.1), cc.CallFunc:create(function()
  254. plane:removeFromParent()
  255. node:removeFromParent()
  256. end)))
  257. end
  258. local winSize = cc.Director:getInstance():getWinSize()
  259. local StartWorldPos = cc.p(winSize.width + 100, winSize.height + 200)
  260. local startPos = node:convertToNodeSpace(StartWorldPos)
  261. plane:setPosition(startPos)
  262. local time = 1.2
  263. local angle = -100 -- 旋转度数
  264. local newAngle = 2 * math.pi * angle / 360 -- π是半圈,貌似被更改了底层
  265. local pos1 = node:convertToNodeSpace(cc.p(winSize.width, 0))
  266. local pos2 = node:convertToNodeSpace(cc.p(winSize.width/2, 0))
  267. local endPos = node:convertToNodeSpace(cc.p(-300, winSize.height + 300))
  268. local bezier = {
  269. pos1,
  270. pos2,
  271. endPos
  272. }
  273. local aniBez = cc.EaseIn:create(cc.BezierTo:create(time, bezier), 1.5)
  274. local aniRotateBy = cc.EaseIn:create(cc.RotateBy:create(time, newAngle), 1.8)
  275. local aniScaleTo = cc.EaseIn:create(cc.ScaleTo:create(time, 2), 2)
  276. local spaAni = cc.Spawn:create(
  277. aniBez,
  278. aniRotateBy,
  279. aniScaleTo
  280. )
  281. local seqAni = cc.Sequence:create(
  282. spaAni,
  283. cc.CallFunc:create(removeSelf)
  284. )
  285. plane:runAction(seqAni)
  286. end
  287. return node
  288. end
  289. -- 新王炸
  290. function DDZNewEffectHelper:getKingBombNew()
  291. local node = cc.ImageView:create()
  292. node:setOpacity(0)
  293. node.onEnter = function()
  294. local nd = cc.ImageView:create()
  295. node:addChild(nd)
  296. local winSize = cc.Director:getInstance():getWinSize()
  297. local worldPos = cc.p(winSize.width/2, winSize.height/2 + 80)
  298. local localPos = node:convertToNodeSpace(worldPos)
  299. nd:setPosition(localPos)
  300. local frameDelay = 0.032
  301. for i=1,31 do
  302. local ac = cc.Sequence:create(cc.DelayTime:create(frameDelay*(i-1)), cc.CallFunc:create(function ()
  303. nd:loadTexture(string.format("doudizhu_Ani_KingBomb_%d.png", i), 1)
  304. end))
  305. nd:runAction(ac)
  306. end
  307. node:runAction(cc.Sequence:create(cc.FadeIn:create(0.3), cc.DelayTime:create(frameDelay * 30 - 0.3), cc.FadeOut:create(0.1), cc.CallFunc:create(function() node:removeFromParent() end)))
  308. end
  309. return node
  310. end
  311. return DDZNewEffectHelper