2019-05-27

简单数字键盘封装:

--

-- Author: XJW

-- Date: 2018-08-22 15:39:29

--

local uihelper = require("lib/ui")

local gmui = require("gmui")

local uicreator = require("other/uicreator")

local win_size = cc.Director:getInstance():getWinSize()

local instance = instance or nil

local InputLayer = class("InputLayer",function  ()

    local self = require("ui/input_layer").create().root

    local t = tolua.getpeer(self)

    if not t then

        t = {}

        tolua.setpeer(self,t)

    end

    setmetatable(t,InputLayer)

    return self

end)

function InputLayer:ctor(...)

    self:__ondeclare_var(...)

    self:registerScriptHandler(handler(self, self.__eventbus))

    self:__oninit(...)

end

function InputLayer:__eventbus(e)

    if e == "enter" then

        self:__enter()

    elseif e == "exit" then

        self:__exit()

    end

end

function InputLayer:__ondeclare_var(...)

    --todo

    uihelper:addSwallowEventListener(self)

    gmui:addTransLayer(self)

end

function InputLayer:__oninit(...)

    --todo

    self:getChildByName("desc"):setString(self.__desc)

    self.__score_num = self:getChildByName("num"):setString("0")

    -- local copy_btn = self:getChildByName("copy_btn"):setVisible(self.__isCopy)

end

function InputLayer:__enter(...)

    --todo

    self:__render()

end

function InputLayer:__exit(...)

    --todo

    self:stopAllActions()

end

function InputLayer:__render()

    -- body

    local txt_label = self:getChildByName("txt_label")

    -- self.num_test = 0

    local seq = cc.Sequence:create(cc.CallFunc:create(function()

        -- body

        self.__clibordStr = You:getClipboard()

        -- self.__clibordStr = "              100"

        local limt_str = sg.String.limitString(self.__clibordStr, 8)

        if self.__clibordStr:len() > 8 then

            --todo

            local num  = tonumber(self.__clibordStr)

            if num then

                txt_label:setString(num.."")

            else

                txt_label:setString(limt_str.."...")

            end

            -- txt_label:setString(limt_str.."...")

        else

            local num  = tonumber(self.__clibordStr)

            if num then

                --todo

                txt_label:setString(num.."")

            else

              txt_label:setString(limt_str)

            end

            -- txt_label:setString(limt_str)

        end

        -- self.num_test = self.num_test + 1

        -- txt_label:setString(self.num_test)


    end),cc.DelayTime:create(3.0))

    if self.__isCopy == true then

        self:runAction(cc.RepeatForever:create(seq))   

    end

    for i=0,9 do

        local btn = self:getChildByName("btn_"..i)

        uihelper:setClickEvent3(btn, {

            endedEvent = function(sender)

                --todo

                local str = self.__score_num:getString()

                local num

                if string.find(str,"-") == 1 and str:len() == 1 then

                  self.__score_num:setString("0")

                  num = tonumber(self.__score_num:getString()) * (-10)

                  -- print("======="..num)

              else

                    num = tonumber(self.__score_num:getString()) * 10

                end

                -- local num = tonumber(self.__score_num:getString()) * 10

                if num < 0 then

                    num = num - i

                elseif num == 0 then

                    if string.find(str,"-") == 1 then

                        num = num - i

                    else

                        num = num + i

                    end

                else

                    num = num + i

                end

                local len = string.len(tostring(math.abs(num)))

                if len > self.__max then

                    --todo

                    local dialog = uicreator:createInfoDlg("最多" .. self.__max .. "位数~")

                    uihelper:addSwallowEventListener(dialog)

                    return

                end

                self.__score_num:setString(num.."")


            end})

    end

    local delete_btn = self:getChildByName("btn_delete")

    uihelper:setClickEvent3(delete_btn, {

        endedEvent = function(sender)

            --todo

            local str = self.__score_num:getString()

            local num = tonumber(self.__score_num:getString())

            local is_nagative = false

            local new_num

            if string.find(str,"-") == 1 then

                is_nagative = false

                new_num = (math.abs(num) - math.abs(num) % 10) / 10

            else

                new_num = (num - num % 10) / 10

                is_nagative = true


            end

            if is_nagative == true then

                self.__score_num:setString(""..new_num)

            else

                self.__isAddTouched = false

                if new_num == 0 then

                    --todo

                    self.__score_num:setString(""..new_num)

                else

                    self.__score_num:setString("-"..new_num)

                end

            end


        end})

    local btn_sure = self:getChildByName("btn_sure")

    uihelper:setClickEvent3(btn_sure, {

        endedEvent = function(sender)

            --todo

            if self.__sureBack then

                --todo

                local num = tonumber(self.__score_num:getString())

                if num then

                    --todo

                    self.__sureBack(num)

                else

                    self.__sureBack(0)

                end

                -- self.__sureBack(num)

                if self.__isQuit then

                    --todo

                    self:removeFromParent()

                    instance = nil

                end

            end

        end})

    local btn_add = self:getChildByName("add")

    btn_add:setEnabled(self.__isInputNegative)

    uihelper:setClickEvent3(btn_add, {

        endedEvent = function(sender)

            local str = self.__score_num:getString()

            local num = tonumber(self.__score_num:getString())

            if num then

                if self.__isAddTouched == false then

                    self.__isAddTouched = true

                    if num == 0 and str:len() == 1 then

                        self.__score_num:setString("-")

                    else

                        self.__score_num:setString("-"..math.abs(num))

                    end


                else

                    self.__isAddTouched = false

                    self.__score_num:setString(math.abs(num))

                end

            end


        end})

    local btn_close = self:getChildByName("btn_close")

    uihelper:setClickEvent3(btn_close, {

        endedEvent = function(sender)

            --todo

            if not tolua.isnull(instance) then

                --todo

                self:removeFromParent()

                instance = nil

            end


        end})

    local copy_btn = self:getChildByName("copy_btn")

    uihelper:setClickEvent3(copy_btn, {

        endedEvent = function(sender)

            --todo

            self:CopyStrLimit(self.__clibordStr)


        end})

    copy_btn:setVisible(self.__isCopy)

    self:getChildByName("copy_title_txt"):setVisible(self.__isCopy)

    self:getChildByName("txt_label"):setVisible(self.__isCopy)

    self:getChildByName("copy_bg"):setVisible(self.__isCopy)

end

--粘贴板复制内容的条件限制

function InputLayer:CopyStrLimit(c_str)

    -- body

    if c_str == "" then

        --todo

        local dialog = uicreator:createInfoDlg("粘贴内容不能为空")

        uihelper:addSwallowEventListener(dialog)

    else

        c_str = tonumber(c_str)

        if not c_str then

            local dialog = uicreator:createInfoDlg("粘贴内容不合法")

            uihelper:addSwallowEventListener(dialog)

        else

            local len = tostring(c_str):len()

            if c_str < 0 then

                --todo

                len = len - 1

            end

            if len > self.__max then

                local dialog = uicreator:createInfoDlg("粘贴内容不合法")

                uihelper:addSwallowEventListener(dialog)

            else

                self.__score_num:setString(c_str.."")

            end

        end

    end


end

function InputLayer:ShowInputLayer(sureBack, max, desc,isInputNegative,isCopy,isQuit)

    -- body

    self.__sureBack = sureBack

    self.__max = max or 12

    self.__desc = desc or ""

    self.__isQuit = true

    self.__isInputNegative = isInputNegative or false

    self.__isAddTouched = false

    self.__isCopy = isCopy or false

    self.__clibordStr = self.__clibordStr or ""

    if tolua.isnull(instance) then

        --todo

        instance = InputLayer.new()

    end

    cc.Director:getInstance():getRunningScene():addChild(instance)

end

return InputLayer

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容