【游戏的mvvm架构学习笔记】

游戏的mvvm架构

Loxodon.Framework.XLua 是一个XLua的开源的MVVM框架
LoxodonFramework是一个轻量级的MVVM(Model-View-ViewModel)框架,它是专门为Unity3D游戏开发设计的

require("framework.System")

local Context = CS.Loxodon.Framework.Contexts.Context
local SimpleCommand = CS.Loxodon.Framework.Commands.SimpleCommand
local AsyncTask = CS.Loxodon.Framework.Asynchronous["AsyncTask`1[System.Object]"]
local ObservableObject = require("framework.ObservableObject")
local ObservableDictionary = require("framework.ObservableDictionary")
local InteractionRequest = require("framework.InteractionRequest")
---
--模块
--@module LoginViewModel
local M=class("LoginViewModel",ObservableObject)
--执行父类ObservableObject的构造函数,这个重要,否则无法监听数据改变

--[[--
构造函数
@param #table self
@param #table t 初始化参数
]]
function M:ctor(t)
	M.super.ctor(self,t)

	self.username = self.globalPreferences:GetString("LAST_USERNAME", "");
	self.password = ""
	self.account = nil
	self.errors = ObservableDictionary()

	self.loginCommand = SimpleCommand(function() self:login() end,true)
	self.cancelCommand = SimpleCommand(function() self.interactionFinished:Raise(nil) end,true)

	self.interactionFinished = InteractionRequest(self)
	self.toastRequest = InteractionRequest(self)
end

function M:validateUsername()	
end

function M:validatePassword()
end

function M:login()
end

return M
require("framework.System")
local Loading = CS.Loxodon.Framework.Views.Loading
local Toast = CS.Loxodon.Framework.Views.Toast

---
--模块
--@module LoginView
local M=class("LoginView",target)

function M:onCreate(bundle)
	local bindingSet = self:CreateBindingSet();

	bindingSet:Bind():For("onInteractionFinished"):To("interactionFinished")
    bindingSet:Bind():For("onToastShow"):To("toastRequest")

	bindingSet:Bind(self.username):For ("text", "onEndEdit"):To ("username"):TwoWay ()
	bindingSet:Bind(self.usernameErrorPrompt):For ("text"):To ("errors['username']"):OneWay ()
	bindingSet:Bind(self.password):For ("text","onEndEdit"):To ("password"):TwoWay ()
	bindingSet:Bind(self.passwordErrorPrompt):For ("text"):To ("errors['password']"):OneWay ()
	bindingSet:Bind(self.confirmButton):For ("onClick"):To ("loginCommand")
	bindingSet:Bind(self.cancelButton):For ("onClick"):To ("cancelCommand")
	bindingSet:Build()
end

function M:onInteractionFinished(sender, args)
    self:Dismiss()
end

function M:onToastShow(sender, args)
    local notification = args.Context
    if not notification then
        return
	end

    Toast.Show(self, notification, 2);
end

return M
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值