mirror of https://github.com/axmolengine/axmol.git
162 lines
4.4 KiB
Lua
162 lines
4.4 KiB
Lua
|
local targetPlatform = cc.Application:getInstance():getTargetPlatform()
|
||
|
|
||
|
local lineSpace = 40
|
||
|
local itemTagBasic = 1000
|
||
|
local menuItemNames =
|
||
|
{
|
||
|
"enter",
|
||
|
"reset",
|
||
|
"update",
|
||
|
}
|
||
|
|
||
|
local winSize = cc.Director:getInstance():getWinSize()
|
||
|
|
||
|
local function updateLayer()
|
||
|
|
||
|
local support = false
|
||
|
if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform)
|
||
|
or (cc.PLATFORM_OS_WINDOWS == targetPlatform) or (cc.PLATFORM_OS_ANDROID == targetPlatform)
|
||
|
or (cc.PLATFORM_OS_IPHONE == targetPlatform) then
|
||
|
support = true
|
||
|
end
|
||
|
|
||
|
if not support then
|
||
|
return nil
|
||
|
end
|
||
|
|
||
|
local isUpdateItemClicked = false
|
||
|
local assetsManager = nil
|
||
|
local pathToSave = ""
|
||
|
|
||
|
local layer = cc.Layer:create()
|
||
|
local menu = cc.Menu:create()
|
||
|
menu:setPosition(cc.p(0, 0))
|
||
|
cc.MenuItemFont:setFontName("Arial")
|
||
|
cc.MenuItemFont:setFontSize(24)
|
||
|
|
||
|
local progressLable = cc.LabelTTF:create("","Arial",30)
|
||
|
progressLable:setPosition(cc.p(140,50))
|
||
|
layer:addChild(progressLable)
|
||
|
|
||
|
pathToSave = createDownloadDir()
|
||
|
|
||
|
local function onError(errorCode)
|
||
|
if errorCode == cc.ASSETSMANAGER_NO_NEW_VERSION then
|
||
|
progressLable:setString("no new version")
|
||
|
elseif errorCode == cc.ASSETSMANAGER_NETWORK then
|
||
|
progressLable:setString("network error")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function onProgress( percent )
|
||
|
local progress = string.format("downloading %d%%",percent)
|
||
|
progressLable:setString(progress)
|
||
|
end
|
||
|
|
||
|
local function onSuccess()
|
||
|
progressLable:setString("downloading ok")
|
||
|
end
|
||
|
|
||
|
local function getAssetsManager()
|
||
|
if nil == assetsManager then
|
||
|
assetsManager = cc.AssetsManager:new("https://raw.github.com/samuele3hu/AssetsManagerTest/master/package.zip",
|
||
|
"https://raw.github.com/samuele3hu/AssetsManagerTest/master/version",
|
||
|
pathToSave)
|
||
|
assetsManager:retain()
|
||
|
assetsManager:setDelegate(onError, cc.ASSETSMANAGER_PROTOCOL_ERROR )
|
||
|
assetsManager:setDelegate(onProgress, cc.ASSETSMANAGER_PROTOCOL_PROGRESS)
|
||
|
assetsManager:setDelegate(onSuccess, cc.ASSETSMANAGER_PROTOCOL_SUCCESS )
|
||
|
assetsManager:setConnectionTimeout(3)
|
||
|
end
|
||
|
|
||
|
return assetsManager
|
||
|
end
|
||
|
|
||
|
local function update(sender)
|
||
|
|
||
|
progressLable:setString("")
|
||
|
|
||
|
getAssetsManager():update()
|
||
|
|
||
|
--isUpdateItemClicked = true
|
||
|
|
||
|
end
|
||
|
|
||
|
local function reset(sender)
|
||
|
progressLable:setString("")
|
||
|
|
||
|
deleteDownloadDir(pathToSave)
|
||
|
|
||
|
getAssetsManager():deleteVersion()
|
||
|
|
||
|
createDownloadDir()
|
||
|
end
|
||
|
|
||
|
local function reloadModule( moduleName )
|
||
|
|
||
|
package.loaded[moduleName] = nil
|
||
|
|
||
|
return require(moduleName)
|
||
|
end
|
||
|
|
||
|
local function enter(sender)
|
||
|
|
||
|
if not isUpdateItemClicked then
|
||
|
addSearchPath(pathToSave,true)
|
||
|
end
|
||
|
|
||
|
assetsManagerModule = reloadModule("luaScript/AssetsManagerTest/AssetsManagerModule")
|
||
|
|
||
|
assetsManagerModule.newScene(AssetsManagerTestMain)
|
||
|
end
|
||
|
|
||
|
local callbackFuncs =
|
||
|
{
|
||
|
enter,
|
||
|
reset,
|
||
|
update,
|
||
|
}
|
||
|
|
||
|
local function menuCallback(tag, menuItem)
|
||
|
local scene = nil
|
||
|
local nIdx = menuItem:getZOrder() - itemTagBasic
|
||
|
local ExtensionsTestScene = CreateExtensionsTestScene(nIdx)
|
||
|
if nil ~= ExtensionsTestScene then
|
||
|
cc.Director:getInstance():replaceScene(ExtensionsTestScene)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
for i = 1, table.getn(menuItemNames) do
|
||
|
local item = cc.MenuItemFont:create(menuItemNames[i])
|
||
|
item:registerScriptTapHandler(callbackFuncs[i])
|
||
|
item:setPosition(winSize.width / 2, winSize.height - i * lineSpace)
|
||
|
if not support then
|
||
|
item:setEnabled(false)
|
||
|
end
|
||
|
menu:addChild(item, itemTagBasic + i)
|
||
|
end
|
||
|
|
||
|
local function onNodeEvent(msgName)
|
||
|
if nil ~= assetsManager then
|
||
|
assetsManager:release()
|
||
|
assetsManager = nil
|
||
|
end
|
||
|
end
|
||
|
|
||
|
layer:registerScriptHandler(onNodeEvent)
|
||
|
|
||
|
layer:addChild(menu)
|
||
|
|
||
|
return layer
|
||
|
end
|
||
|
|
||
|
-------------------------------------
|
||
|
-- AssetsManager Test
|
||
|
-------------------------------------
|
||
|
function AssetsManagerTestMain()
|
||
|
local scene = cc.Scene:create()
|
||
|
scene:addChild(updateLayer())
|
||
|
scene:addChild(CreateBackMenuItem())
|
||
|
return scene
|
||
|
end
|