import dxui from '../../dxmodules/dxUi.js' import std from '../../dxmodules/dxStd.js' import viewUtils from "./viewUtils.js" import mainView from './mainView.js' import topView from './topView.js' import screen from '../screen.js' import i18n from './i18n.js' const pwdView = {} pwdView.init = function () { /**************************************************创建屏幕*****************************************************/ const screenMain = dxui.View.build('pwdView', dxui.Utils.LAYER.MAIN) pwdView.screenMain = screenMain screenMain.scroll(false) screenMain.bgColor(0xffffff) screenMain.on(dxui.Utils.ENUM.LV_EVENT_SCREEN_LOADED, () => { topView.topBox.hide() }) screenMain.on(dxui.Utils.ENUM.LV_EVENT_SCREEN_UNLOADED, () => { topView.topBox.show() }) // 按钮容器 let keyBtns = [] // 圆点容器 let dots = [] // 输入的密码 let pwd = [] let input_len = 0 const back = viewUtils.imageBtn(pwdView.screenMain, 'pwdViewBackBtn', screen.resourcePath.imagePath + '/back.png') back.setSize(screen.screenSize.width * (80 / 600), screen.screenSize.height * (70 / 1024)) back.align(dxui.Utils.ALIGN.TOP_LEFT, 0, screen.screenSize.height * (30 / 1024)) back.on(dxui.Utils.EVENT.CLICK, () => { mainView.load() for (let i = 0; i < 6; i++) { if (dots[i]) { dots[i].bgOpa(0) } } input_len = 0; pwd.length = 0 std.clearInterval(pwdView.timer) pwdView.timer = null pwdView.countdown.text("60s") }) // 顶部标题 const pwdTitle = dxui.Label.build('pwdTitle', screenMain) // 绑定国际化 key,方便切换语言时自动刷新 pwdTitle.dataI18n = 'pwdView.title' pwdTitle.text(i18n.t('pwdView.title')) pwdTitle.textFont(viewUtils.font(28)) pwdTitle.textColor(0x000000) pwdTitle.align(dxui.Utils.ALIGN.TOP_MID, 0, screen.screenSize.height * (46 / 1024)) // 倒计时(右上角) const countdown = dxui.Label.build('pwdCountdown', screenMain) pwdView.countdown = countdown countdown.text("60s") countdown.textFont(viewUtils.font(28)) countdown.textColor(0x000000) countdown.align(dxui.Utils.ALIGN.TOP_RIGHT, -screen.screenSize.width * (20 / 600), screen.screenSize.height * (46 / 1024)) // 圆点容器 const dotcont = dxui.View.build('pwdDotcont', screenMain) dotcont.setSize(screen.screenSize.width * (300 / 600), screen.screenSize.height * (40 / 1024)) dotcont.bgOpa(0) dotcont.align(dxui.Utils.ALIGN.TOP_MID, 0, screen.screenSize.height * (150 / 1024)) dotcont.flexFlow(dxui.Utils.FLEX_FLOW.ROW) dotcont.obj.lvObjSetStylePadGap(screen.screenSize.width * (20 / 600), 0) dotcont.borderWidth(0, 0) dotcont.flexAlign(dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER) dotcont.obj.lvObjClearFlag(16) for (let i = 0; i < 6; i++) { dots[i] = dxui.View.build('pwdDot' + i, dotcont) dots[i].setSize(screen.screenSize.width * (30 / 600), screen.screenSize.height * (30 / 1024)) dots[i].radius(0x7FFF, 0) dots[i].setBorderColor(0x000000, 0) dots[i].borderWidth(2, 0) dots[i].bgOpa(0) dots[i].obj.lvObjClearFlag(16) } // 键盘容器 const kbcont = dxui.View.build('kbcont', screenMain) kbcont.setSize(screen.screenSize.width * (560 / 600), screen.screenSize.height * (700 / 1024)) kbcont.bgOpa(0) kbcont.align(dxui.Utils.ALIGN.BOTTOM_MID, 0, -screen.screenSize.height * (20 / 1024)) kbcont.flexFlow(dxui.Utils.FLEX_FLOW.ROW_WRAP) kbcont.flexAlign(dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER) kbcont.obj.lvObjSetStylePadGap(screen.screenSize.width * (12 / 600), 0) kbcont.obj.lvObjClearFlag(16) // 创建数字键盘 let keys = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "clr", "0", "del"] for (let i = 0; i < keys.length; i++) { const key = keys[i] keyBtns[i] = dxui.Button.build('keyBtn' + key + i, kbcont) keyBtns[i].setSize(screen.screenSize.width * (160 / 600), screen.screenSize.height * (160 / 1024)) keyBtns[i].bgColor(0xffffff) keyBtns[i].setBorderColor(0xdddddd, 0) keyBtns[i].borderWidth(2, 0) keyBtns[i].radius(8, 0) keyBtns[i].obj.lvObjSetStyleShadowWidth(4, 0) keyBtns[i].obj.setStyleShadowColor(0x999999, 0) if (keys[i].length > 0) { const keyBtnLbl = dxui.Label.build('keyBtnLbl' + key, keyBtns[i]) keyBtnLbl.text(key) keyBtnLbl.textColor(0x000000) keyBtnLbl.textFont(viewUtils.font(28)) keyBtnLbl.align(dxui.Utils.ALIGN.CENTER, 0, 0) // 按钮事件回调 keyBtns[i].obj.addEventCb((e) => { if ("clr" == keyBtnLbl.obj.lvLabelGetText()) { input_len = 0 pwd.length = 0 for (let i = 0; i < 6; i++) { dots[i].bgOpa(0) } return } if ("del" == keyBtnLbl.obj.lvLabelGetText() && input_len >= 0) { if (input_len == 0) { return } else if (--input_len >= 0) { pwd.pop() dots[input_len].bgOpa(0) } return } if (++input_len < 6) { pwd.push(Number(keyBtnLbl.obj.lvLabelGetText())) } else { pwd.push(Number(keyBtnLbl.obj.lvLabelGetText())) input_len = 0; screen.pwdAccess(pwd.join('')) mainView.load() pwd.length = 0 std.clearInterval(pwdView.timer) pwdView.timer = null pwdView.countdown.text("60s") } for (let i = 0; i < 6; i++) { if (i < input_len && i < 5) { dots[i].bgColor(0x000000) dots[i].bgOpa(255) } else { dots[i].bgOpa(0) } } }, dxui.Utils.ENUM.LV_EVENT_CLICKED) } } } pwdView.startCountdown = function () { pwdView.count = 60 pwdView.timer = std.setInterval(() => { pwdView.countdown.text(pwdView.count + "s") pwdView.count-- if (pwdView.count < 0) { std.clearInterval(pwdView.timer) pwdView.timer = null mainView.load() } }, 1000) } export default pwdView