選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

396 行
13 KiB

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