本文主要是介绍quick-cocos2dx AppBase,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
local AppBase = class("AppBase")AppBase.APP_ENTER_BACKGROUND_EVENT = "APP_ENTER_BACKGROUND_EVENT"
AppBase.APP_ENTER_FOREGROUND_EVENT = "APP_ENTER_FOREGROUND_EVENT"function AppBase:ctor(appName, packageRoot)-- 使App的对象能够附加组件。cc.GameObject.extend(self)-- 添加组件EventProtocol,将其中的函数导出到app上。self:addComponent("components.behavior.EventProtocol"):exportMethods()self.name = appNameself.packageRoot = packageRoot or "app"-- 在通知中心注册进入前台、后台的响应函数local notificationCenter = CCNotificationCenter:sharedNotificationCenter()notificationCenter:registerScriptObserver(nil, handler(self, self.onEnterBackground), "APP_ENTER_BACKGROUND_EVENT")notificationCenter:registerScriptObserver(nil, handler(self, self.onEnterForeground), "APP_ENTER_FOREGROUND_EVENT")self.snapshots_ = {}-- set global app-- 若想使用此app,可用全局变量 “app”app = self
endfunction AppBase:run()
end-- 结束游戏
function AppBase:exit()CCDirector:sharedDirector():endToLua()os.exit()
end-- 进入某场景,实际调用display.replaceScene
function AppBase:enterScene(sceneName, args, transitionType, time, more)local scenePackageName = self. packageRoot .. ".scenes." .. sceneNamelocal sceneClass = require(scenePackageName)local scene = sceneClass.new(unpack(totable(args)))display.replaceScene(scene, transitionType, time, more)
end-- 创建view
function AppBase:createView(viewName, ...)local viewPackageName = self. packageRoot .. ".views." .. viewNamelocal viewClass = require(viewPackageName)return viewClass.new(...)
endfunction AppBase:makeLuaVMSnapshot()self.snapshots_[#self.snapshots_ + 1] = CCLuaStackSnapshot()while #self.snapshots_ > 2 dotable.remove(self.snapshots_, 1)endreturn self
endfunction AppBase:checkLuaVMLeaks()assert(#self.snapshots_ >= 2, "AppBase:checkLuaVMLeaks() - need least 2 snapshots")local s1 = self.snapshots_[1]local s2 = self.snapshots_[2]for k, v in pairs(s2) doif s1[k] == nil thenprint(k, v)endendreturn self
endfunction AppBase:onEnterBackground()self:dispatchEvent({name = AppBase.APP_ENTER_BACKGROUND_EVENT})
endfunction AppBase:onEnterForeground()self:dispatchEvent({name = AppBase.APP_ENTER_FOREGROUND_EVENT})
endreturn AppBase
这篇关于quick-cocos2dx AppBase的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!