|
- ---
- -- ================================================================
- -- 文件名: 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;
|