Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

292 wiersze
8.4 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJ = class("MJ",function()
  3. local node=cc.ImageView:create()--cc.LayerColor:create(cc.c4b(255,0,0,255))
  4. --node:setAnchorPoint(cc.p(0.5,0.5))
  5. --node:ignoreAnchorPointForPosition(false)
  6. return node
  7. end)
  8. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  9. --触摸牌Y的偏移量
  10. local MJ_HAND_CARD_TOUCH_Y=20
  11. local MJ_HAND_CARD_FLAG_TING=150
  12. MJ.MJ_HAND_CARD_FLAG_LAIZI=151--癞子标志
  13. local DEF_PAO_FLAG = 9000
  14. function MJ:ctor(value,mjType,viewId,desktopType)
  15. self.value=value
  16. self:initSortValue(value)
  17. self.viewId=viewId
  18. self.status=MJDefine.MJStatus.Normal --默认麻将状态
  19. self.newValue=string.format("%x",value)--MJDefine.getMjValue(value)
  20. self.desktopType=desktopType or MJDefine.DesktopType.ThreeD
  21. -- self.initPostion=self:getPosition()
  22. self:recordPostion()
  23. if mjType==MJDefine.MJType.Stand then
  24. self:setStandImage(self.newValue,viewId)
  25. elseif mjType==MJDefine.MJType.Out then
  26. if value==0 then
  27. self:setOutBlackImage(self.newValue,viewId)
  28. else
  29. self:setOutImage(self.newValue,viewId)
  30. end
  31. elseif mjType==MJDefine.MJType.OutBlack then
  32. self:setOutBlackImage(self.newValue,viewId)
  33. elseif mjType==MJDefine.MJType.Operate then
  34. if value==0 then
  35. self:setOutBlackImage(self.newValue,viewId)
  36. else
  37. self:setOperateImage(self.newValue,viewId)
  38. end
  39. end
  40. end
  41. function MJ:initSortValue(value)
  42. self.sortValue=value
  43. end
  44. --获取花色 0万1同2条
  45. function MJ:getMJColorType()
  46. return math.floor(self.value/16)
  47. end
  48. function MJ:setStatus(s)
  49. self.status=s
  50. if s==MJDefine.MJStatus.Select then
  51. self:setColor(cc.c3b(220, 220, 220))
  52. elseif s==MJDefine.MJStatus.Disable then
  53. self:setColor(cc.c3b(150,150,150))
  54. else
  55. self:setColor(cc.c3b(255,255,255))
  56. end
  57. end
  58. function MJ:getStatus()
  59. return self.status
  60. end
  61. function MJ:setSelected(s)
  62. self.selected=s
  63. end
  64. function MJ:getSelected()
  65. return self.selected
  66. end
  67. function MJ:setTing(b)
  68. if b then
  69. local falg=cc.Sprite:createWithSpriteFrameName("mj_img_ting_flag.png")
  70. falg:setScale(0.7)
  71. falg:setTag(MJ_HAND_CARD_FLAG_TING)
  72. self:addChild(falg)
  73. falg:setPosition(self:getContentSize().width/2,self:getContentSize().height+5)
  74. else
  75. self:removeChildByTag(MJ_HAND_CARD_FLAG_TING)
  76. end
  77. end
  78. function MJ:getTing()
  79. local tingFlag = self:getChildByTag(MJ_HAND_CARD_FLAG_TING)
  80. if tingFlag and (not tolua.isnull(tingFlag)) and tingFlag:isVisible() then
  81. return true
  82. else
  83. return false
  84. end
  85. end
  86. function MJ:recordPostion(pos)
  87. if pos then
  88. self.initPostion = pos
  89. else
  90. self.initPostion = self:getPosition()
  91. end
  92. -- self.initPostion.y = initY or 64
  93. end
  94. function MJ:restorePostion(isAnim)
  95. -- dump(self.initPostion,"restorePostion")
  96. if isAnim then
  97. self:stopAllActions()
  98. self:runAction(cc.MoveTo:create(0.1,self.initPostion))
  99. else
  100. self:setPosition(self.initPostion)
  101. end
  102. end
  103. -- function MJ:runSelectAnimation()
  104. -- if self.status==MJDefine.MJStatus.Normal then
  105. -- self:runAction(cc.MoveBy:create(0.1,cc.p(0,MJ_HAND_CARD_TOUCH_Y)))
  106. -- end
  107. -- end
  108. -- function MJ:runDeSelectAnimation()
  109. -- if self.status==MJDefine.MJStatus.Select then
  110. -- print("self.newValue:"..self.newValue)
  111. -- self:runAction(cc.MoveBy:create(0.1,cc.p(0,-MJ_HAND_CARD_TOUCH_Y)))
  112. -- end
  113. -- end
  114. -- 确保动画结束后回到原来的位置
  115. function MJ:runSelectAnimation()
  116. if self.status==MJDefine.MJStatus.Normal then
  117. local initPos = self.initPostion
  118. local toPos = cc.p(initPos.x, initPos.y + MJ_HAND_CARD_TOUCH_Y)
  119. self:stopAllActions()
  120. -- self:setPosition(toPos)
  121. self:runAction(cc.MoveTo:create(0.1, toPos))
  122. end
  123. end
  124. -- 确保动画结束后回到原来的位置
  125. function MJ:runDeSelectAnimation()
  126. -- dump(self.initPostion,"runDeSelectAnimation")
  127. -- if self.status==MJDefine.MJStatus.Select then
  128. self:stopAllActions()
  129. -- self:runAction(cc.MoveTo:create(0.1, self.initPostion))
  130. -- dump(self.initPostion,"runDeSelectAnimation")
  131. self:setPosition(self.initPostion)
  132. -- end
  133. end
  134. -- 确保动画结束后回到原来的位置
  135. function MJ:runDeSelectAnimationWithTime(time)
  136. -- dump(self.initPostion,"runDeSelectAnimation")
  137. time = time or 0.1
  138. if self.status==MJDefine.MJStatus.Select or self.selected==MJDefine.MJStatus.Select then
  139. self:stopAllActions()
  140. self:runAction(cc.MoveTo:create(time, self.initPostion))
  141. -- dump(self.initPostion,"runDeSelectAnimation")
  142. --self:setPosition(self.initPostion)
  143. end
  144. end
  145. function MJ:setStandImage(value,viewId)
  146. local imgName--=string.format("handCards/mj_handcard_%d.png",value)
  147. local MJStandImage=MJDefine.MJStandImage[self.desktopType]--[viewId]
  148. if viewId==MJDefine.PlayerViewType.My then
  149. imgName=string.format(MJStandImage[viewId],value)--string.format("handCards/mj_handcard_%d.png",value)
  150. -- elseif viewId==MJDefine.PlayerViewType.Left then
  151. -- imgName="other/mj_stand_left.png"
  152. -- elseif viewId==MJDefine.PlayerViewType.Right then
  153. -- imgName="other/mj_stand_left.png"
  154. -- self:setFlippedX(true)
  155. -- elseif viewId==MJDefine.PlayerViewType.Top then
  156. -- imgName="other/mj_stand_top.png"
  157. else
  158. imgName=MJStandImage[viewId]
  159. if viewId==MJDefine.PlayerViewType.Right then
  160. self:setFlippedX(true)
  161. end
  162. end
  163. -- self:setSpriteFrame(imgName)
  164. self:loadTexture(imgName,cc.TextureResType.plistType)
  165. end
  166. function MJ:setOutImage(value,viewId)
  167. local MJOutImage=MJDefine.MJOutImage[self.desktopType]
  168. local imgName=string.format(MJOutImage[viewId],value)
  169. -- string.format("outCards/my/mj_outcard_my_%d.png",value)
  170. -- if viewId==MJDefine.PlayerViewType.My then
  171. -- elseif viewId==MJDefine.PlayerViewType.Left then
  172. -- imgName=string.format("outCards/left/mj_outcard_left_%d.png",value)
  173. -- elseif viewId==MJDefine.PlayerViewType.Right then
  174. -- imgName=string.format("outCards/right/mj_outcard_right_%d.png",value)
  175. -- elseif viewId==MJDefine.PlayerViewType.Top then
  176. -- imgName=string.format("outCards/top/mj_outcard_top_%d.png",value)
  177. -- end
  178. -- self:setSpriteFrame(imgName)
  179. self:loadTexture(imgName,cc.TextureResType.plistType)
  180. if viewId==MJDefine.PlayerViewType.My then
  181. -- self:setScale(47/self:getContentSize().width)
  182. if self.desktopType == MJDefine.DesktopType.TwoDGold then
  183. self:setAutoSize(false)
  184. self:setSize(cc.size(36,55))
  185. elseif self.desktopType == MJDefine.DesktopType.TwoD or self.desktopType == MJDefine.DesktopType.TwoDL then
  186. self:setAutoSize(false)
  187. self:setSize(cc.size(47,72))
  188. end
  189. end
  190. end
  191. function MJ:setOperateImage(value,viewId)
  192. local MJOperateGroupImage=MJDefine.MJOperateGroupImage[self.desktopType]
  193. local imgName=string.format(MJOperateGroupImage[viewId],value)--string.format("outCards/my/mj_outcard_my_%d.png",value)
  194. -- if viewId==MJDefine.PlayerViewType.My then
  195. -- elseif viewId==MJDefine.PlayerViewType.Left then
  196. -- imgName=string.format("operateCards/left/mj_opcard_left_%d.png",value)
  197. -- elseif viewId==MJDefine.PlayerViewType.Right then
  198. -- imgName=string.format("operateCards/right/mj_opcard_right_%d.png",value)
  199. -- elseif viewId==MJDefine.PlayerViewType.Top then
  200. -- imgName=string.format("outCards/top/mj_outcard_top_%d.png",value)
  201. -- end
  202. -- self:setSpriteFrame(imgName)
  203. self:loadTexture(imgName,cc.TextureResType.plistType)
  204. end
  205. function MJ:setOutBlackImage(value,viewId)
  206. local MJOutBlackImage=MJDefine.MJOutBlackImage[self.desktopType]
  207. local imgName=string.format(MJOutBlackImage[viewId],value)--"other/mj_lie_down.png"
  208. --local sprite=cc.Sprite:create()
  209. -- if viewId==MJDefine.PlayerViewType.My then
  210. -- elseif viewId==MJDefine.PlayerViewType.Left then
  211. -- imgName="other/mj_lie_left.png"
  212. -- elseif viewId==MJDefine.PlayerViewType.Right then
  213. -- imgName="other/mj_lie_right.png"
  214. -- -- self:setFlippedX(true)
  215. -- elseif viewId==MJDefine.PlayerViewType.Top then
  216. -- imgName="other/mj_lie_top.png"
  217. -- end
  218. -- self:setSpriteFrame(imgName)
  219. self:loadTexture(imgName,cc.TextureResType.plistType)
  220. end
  221. function MJ:setPaoFlag(isPaoCard)
  222. if isPaoCard and true == isPaoCard then
  223. if self:getIsPaoPai() then return end--本来就是炮牌,直接return
  224. local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/room/mj_flag_pao.png")
  225. flag:setTag(DEF_PAO_FLAG)
  226. self:addChild(flag)
  227. if self.desktopType == MJDefine.DesktopType.TwoDGold then
  228. flag:setPosition(cc.p(16,40))
  229. else
  230. flag:setPosition(cc.p(16,55))
  231. end
  232. else
  233. local flag = self:getChildByTag(DEF_PAO_FLAG)
  234. if flag and (not tolua.isnull(flag)) then
  235. flag:removeFromParent()
  236. flag = nil
  237. end
  238. end
  239. end
  240. function MJ:getIsPaoPai()
  241. local flag = self:getChildByTag(DEF_PAO_FLAG)
  242. if flag and (not tolua.isnull(flag)) and flag:isVisible() then
  243. return true
  244. end
  245. return false
  246. end
  247. return MJ