--- -- ================================================================ -- 文件名: MJRuleViewVertical.lua -- 描述: 麻将玩法弹框组件 - 向下滑出 -- 版权: Copyright © 2016-2019 公司名称 版权所有 -- 作者: Administrator -- 创建日期: 2020-02-04 -- 更新日期: 2020-02-04 -- 备注: -- ================================================================ -- local MJRuleViewVertical = class("MJRuleViewVertical", cc.UIView); MJRuleViewVertical.state = { NORMAL = 1, -- 正常状态,未弹出 POPUP = 2, -- 弹出状态 } --- -- 构造函数 -- @return -- function MJRuleViewVertical:ctor() MJRuleViewVertical.super.ctor(self); end --- -- 进入场景 -- @return -- function MJRuleViewVertical:onEnter() self._state = self.state.POPUP; self:loadUI(); self:initViews(); end --- -- 加载UI布局 -- @return -- function MJRuleViewVertical:loadUI () local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_ruleview_vertical.ui"); self:addChild(ui); self.ui = ui; end --- -- 初始化界面 -- @return -- function MJRuleViewVertical:initViews () self.layoutMask = self.ui.Items.Layout_Mask; self.btnRule = self.ui.Items.Button_Rule; self.btnRuleMask = self.ui.Items.Button_Rule_Mask; self.layoutRule = self.ui.Items.Layout_Rule; self.layoutRuleSize = self.layoutRule:getSize(); self.listviewRule = self.ui.Items.ListView; -- self.listviewRule:setAutoSize(true) self.listviewRule:hideAllBar(); self.listviewItemTemplate = self.ui.Items.Text_Rule; self.listviewItemTemplate:setVisible(false); self.btnRule:setVisible(false); self.btnRule:registerClick(handler(self, self.onBtnRuleClicked)); self.btnRuleMask:registerClick(handler(self, self.onBtnRuleClicked)); self.layoutMask:registerClick(handler(self, self.onLayoutMaskTouched)); self:runDelay(1.5, function () if self._state == self.state.NORMAL then return; end self:toggleRuleView(); end) end --- -- 规则按钮点击事件 -- @return -- function MJRuleViewVertical:onBtnRuleClicked () playBtnEffect(); self:toggleRuleView(); end --- -- 开关弹框 -- @return -- function MJRuleViewVertical:toggleRuleView () if self._isPlaying then -- 正在播放动画 return; end self._isPlaying = true; local state = self._state or self.state.NORMAL; local ac = nil; if state == self.state.NORMAL then ac = self:getMoveOutAction(); else ac = self:getMoveInAction(); end if not ac then logD("MJRuleViewVertical:onBtnRuleClicked", "action is nil."); self._isPlaying = false; return; end self.layoutRule:runAction(ac); end --- -- 获取弹出动作 -- @return -- function MJRuleViewVertical:getMoveOutAction () self.layoutRule:setVisible(true) self.btnRule:setVisible(false); local offsetY = self.layoutRuleSize.height + 0; local acMoveDown = cc.MoveBy:create(0.3, cc.p(0, -offsetY)); local acCallback = cc.CallFunc:create(function () self._isPlaying = false; self._state = self.state.POPUP; self.layoutMask:setVisible(true); end) local acSeq = cc.Sequence:create(acMoveDown, acCallback); return acSeq; end --- -- 获取缩回动作 -- @return -- function MJRuleViewVertical:getMoveInAction () self.layoutMask:setVisible(false); local offsetY = self.layoutRuleSize.height + 0; local acMoveUp = cc.MoveBy:create(0.3, cc.p(0, offsetY)); local acCallback = cc.CallFunc:create(function () self.layoutRule:setVisible(false) self.btnRule:setVisible(true); self._isPlaying = false; self._state = self.state.NORMAL; end) local acSeq = cc.Sequence:create(acMoveUp, acCallback); return acSeq; end --- -- 背景层触摸事件 -- @return -- function MJRuleViewVertical:onLayoutMaskTouched () if self._state == self.state.NORMAL then return; end self:toggleRuleView(); end --- -- 设置规则按钮的偏移量 -- @param x -- @param y -- @return -- function MJRuleViewVertical:setBtnRuleOffset (x, y) if x then local btnRuleX = self.btnRule:getPositionX(); btnRuleX = btnRuleX + x; self.btnRule:setPositionX(btnRuleX); local layoutRuleX = self.layoutRule:getPositionX(); layoutRuleX = layoutRuleX + x; self.layoutRule:setPositionX(layoutRuleX); end if y then local btnRuleY = self.btnRule:getPositionY(); btnRuleY = btnRuleY + y; self.btnRule:setPositionY(btnRuleY); local layoutRuleY = self.layoutRule:getPositionY(); layoutRuleY = layoutRuleY + y; self.layoutRule:setPositionY(layoutRuleY); end end --- -- 设置规则列表 -- @param list -- @return -- function MJRuleViewVertical:setRuleList (list) self.listviewRule:removeAllChildren(); for k, v in pairs(list) do if v then local item = self.listviewItemTemplate:getCopied(); item:setString(v); item:setVisible(true); self.listviewRule:addChild(item); end end end return MJRuleViewVertical;