local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJ = class("MJ",function() local node=cc.ImageView:create()--cc.LayerColor:create(cc.c4b(255,0,0,255)) --node:setAnchorPoint(cc.p(0.5,0.5)) --node:ignoreAnchorPointForPosition(false) return node end) local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") --触摸牌Y的偏移量 local MJ_HAND_CARD_TOUCH_Y=20 local MJ_HAND_CARD_FLAG_TING=150 MJ.MJ_HAND_CARD_FLAG_LAIZI=151--癞子标志 local DEF_PAO_FLAG = 9000 function MJ:ctor(value,mjType,viewId,desktopType) self.value=value self:initSortValue(value) self.viewId=viewId self.status=MJDefine.MJStatus.Normal --默认麻将状态 self.newValue=string.format("%x",value)--MJDefine.getMjValue(value) self.desktopType=desktopType or MJDefine.DesktopType.ThreeD -- self.initPostion=self:getPosition() self:recordPostion() if mjType==MJDefine.MJType.Stand then self:setStandImage(self.newValue,viewId) elseif mjType==MJDefine.MJType.Out then if value==0 then self:setOutBlackImage(self.newValue,viewId) else self:setOutImage(self.newValue,viewId) end elseif mjType==MJDefine.MJType.OutBlack then self:setOutBlackImage(self.newValue,viewId) elseif mjType==MJDefine.MJType.Operate then if value==0 then self:setOutBlackImage(self.newValue,viewId) else self:setOperateImage(self.newValue,viewId) end end end function MJ:initSortValue(value) self.sortValue=value end --获取花色 0万1同2条 function MJ:getMJColorType() return math.floor(self.value/16) end function MJ:setStatus(s) self.status=s if s==MJDefine.MJStatus.Select then self:setColor(cc.c3b(220, 220, 220)) elseif s==MJDefine.MJStatus.Disable then self:setColor(cc.c3b(150,150,150)) else self:setColor(cc.c3b(255,255,255)) end end function MJ:getStatus() return self.status end function MJ:setSelected(s) self.selected=s end function MJ:getSelected() return self.selected end function MJ:setTing(b) if b then local falg=cc.Sprite:createWithSpriteFrameName("mj_img_ting_flag.png") falg:setScale(0.7) falg:setTag(MJ_HAND_CARD_FLAG_TING) self:addChild(falg) falg:setPosition(self:getContentSize().width/2,self:getContentSize().height+5) else self:removeChildByTag(MJ_HAND_CARD_FLAG_TING) end end function MJ:getTing() local tingFlag = self:getChildByTag(MJ_HAND_CARD_FLAG_TING) if tingFlag and (not tolua.isnull(tingFlag)) and tingFlag:isVisible() then return true else return false end end function MJ:recordPostion(pos) if pos then self.initPostion = pos else self.initPostion = self:getPosition() end -- self.initPostion.y = initY or 64 end function MJ:restorePostion(isAnim) -- dump(self.initPostion,"restorePostion") if isAnim then self:stopAllActions() self:runAction(cc.MoveTo:create(0.1,self.initPostion)) else self:setPosition(self.initPostion) end end -- function MJ:runSelectAnimation() -- if self.status==MJDefine.MJStatus.Normal then -- self:runAction(cc.MoveBy:create(0.1,cc.p(0,MJ_HAND_CARD_TOUCH_Y))) -- end -- end -- function MJ:runDeSelectAnimation() -- if self.status==MJDefine.MJStatus.Select then -- print("self.newValue:"..self.newValue) -- self:runAction(cc.MoveBy:create(0.1,cc.p(0,-MJ_HAND_CARD_TOUCH_Y))) -- end -- end -- 确保动画结束后回到原来的位置 function MJ:runSelectAnimation() if self.status==MJDefine.MJStatus.Normal then local initPos = self.initPostion local toPos = cc.p(initPos.x, initPos.y + MJ_HAND_CARD_TOUCH_Y) self:stopAllActions() -- self:setPosition(toPos) self:runAction(cc.MoveTo:create(0.1, toPos)) end end -- 确保动画结束后回到原来的位置 function MJ:runDeSelectAnimation() -- dump(self.initPostion,"runDeSelectAnimation") -- if self.status==MJDefine.MJStatus.Select then self:stopAllActions() -- self:runAction(cc.MoveTo:create(0.1, self.initPostion)) -- dump(self.initPostion,"runDeSelectAnimation") self:setPosition(self.initPostion) -- end end -- 确保动画结束后回到原来的位置 function MJ:runDeSelectAnimationWithTime(time) -- dump(self.initPostion,"runDeSelectAnimation") time = time or 0.1 if self.status==MJDefine.MJStatus.Select or self.selected==MJDefine.MJStatus.Select then self:stopAllActions() self:runAction(cc.MoveTo:create(time, self.initPostion)) -- dump(self.initPostion,"runDeSelectAnimation") --self:setPosition(self.initPostion) end end function MJ:setStandImage(value,viewId) local imgName--=string.format("handCards/mj_handcard_%d.png",value) local MJStandImage=MJDefine.MJStandImage[self.desktopType]--[viewId] if viewId==MJDefine.PlayerViewType.My then imgName=string.format(MJStandImage[viewId],value)--string.format("handCards/mj_handcard_%d.png",value) -- elseif viewId==MJDefine.PlayerViewType.Left then -- imgName="other/mj_stand_left.png" -- elseif viewId==MJDefine.PlayerViewType.Right then -- imgName="other/mj_stand_left.png" -- self:setFlippedX(true) -- elseif viewId==MJDefine.PlayerViewType.Top then -- imgName="other/mj_stand_top.png" else imgName=MJStandImage[viewId] if viewId==MJDefine.PlayerViewType.Right then self:setFlippedX(true) end end -- self:setSpriteFrame(imgName) self:loadTexture(imgName,cc.TextureResType.plistType) end function MJ:setOutImage(value,viewId) local MJOutImage=MJDefine.MJOutImage[self.desktopType] local imgName=string.format(MJOutImage[viewId],value) -- string.format("outCards/my/mj_outcard_my_%d.png",value) -- if viewId==MJDefine.PlayerViewType.My then -- elseif viewId==MJDefine.PlayerViewType.Left then -- imgName=string.format("outCards/left/mj_outcard_left_%d.png",value) -- elseif viewId==MJDefine.PlayerViewType.Right then -- imgName=string.format("outCards/right/mj_outcard_right_%d.png",value) -- elseif viewId==MJDefine.PlayerViewType.Top then -- imgName=string.format("outCards/top/mj_outcard_top_%d.png",value) -- end -- self:setSpriteFrame(imgName) self:loadTexture(imgName,cc.TextureResType.plistType) if viewId==MJDefine.PlayerViewType.My then -- self:setScale(47/self:getContentSize().width) if self.desktopType == MJDefine.DesktopType.TwoDGold then self:setAutoSize(false) self:setSize(cc.size(36,55)) elseif self.desktopType == MJDefine.DesktopType.TwoD or self.desktopType == MJDefine.DesktopType.TwoDL then self:setAutoSize(false) self:setSize(cc.size(47,72)) end end end function MJ:setOperateImage(value,viewId) local MJOperateGroupImage=MJDefine.MJOperateGroupImage[self.desktopType] local imgName=string.format(MJOperateGroupImage[viewId],value)--string.format("outCards/my/mj_outcard_my_%d.png",value) -- if viewId==MJDefine.PlayerViewType.My then -- elseif viewId==MJDefine.PlayerViewType.Left then -- imgName=string.format("operateCards/left/mj_opcard_left_%d.png",value) -- elseif viewId==MJDefine.PlayerViewType.Right then -- imgName=string.format("operateCards/right/mj_opcard_right_%d.png",value) -- elseif viewId==MJDefine.PlayerViewType.Top then -- imgName=string.format("outCards/top/mj_outcard_top_%d.png",value) -- end -- self:setSpriteFrame(imgName) self:loadTexture(imgName,cc.TextureResType.plistType) end function MJ:setOutBlackImage(value,viewId) local MJOutBlackImage=MJDefine.MJOutBlackImage[self.desktopType] local imgName=string.format(MJOutBlackImage[viewId],value)--"other/mj_lie_down.png" --local sprite=cc.Sprite:create() -- if viewId==MJDefine.PlayerViewType.My then -- elseif viewId==MJDefine.PlayerViewType.Left then -- imgName="other/mj_lie_left.png" -- elseif viewId==MJDefine.PlayerViewType.Right then -- imgName="other/mj_lie_right.png" -- -- self:setFlippedX(true) -- elseif viewId==MJDefine.PlayerViewType.Top then -- imgName="other/mj_lie_top.png" -- end -- self:setSpriteFrame(imgName) self:loadTexture(imgName,cc.TextureResType.plistType) end function MJ:setPaoFlag(isPaoCard) if isPaoCard and true == isPaoCard then if self:getIsPaoPai() then return end--本来就是炮牌,直接return local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/room/mj_flag_pao.png") flag:setTag(DEF_PAO_FLAG) self:addChild(flag) if self.desktopType == MJDefine.DesktopType.TwoDGold then flag:setPosition(cc.p(16,40)) else flag:setPosition(cc.p(16,55)) end else local flag = self:getChildByTag(DEF_PAO_FLAG) if flag and (not tolua.isnull(flag)) then flag:removeFromParent() flag = nil end end end function MJ:getIsPaoPai() local flag = self:getChildByTag(DEF_PAO_FLAG) if flag and (not tolua.isnull(flag)) and flag:isVisible() then return true end return false end return MJ