2013-10-22 16:14:49 +08:00
|
|
|
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()
|
2013-11-01 11:18:02 +08:00
|
|
|
local layer = cc.Layer:create()
|
2013-10-22 16:14:49 +08:00
|
|
|
|
|
|
|
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)
|
2013-11-01 11:18:02 +08:00
|
|
|
or (cc.PLATFORM_OS_MAC == targetPlatform) then
|
2013-10-22 16:14:49 +08:00
|
|
|
support = true
|
|
|
|
end
|
|
|
|
|
|
|
|
if not support then
|
2013-11-01 11:18:02 +08:00
|
|
|
print("Platform is not supported!")
|
|
|
|
return layer
|
2013-10-22 16:14:49 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
local isUpdateItemClicked = false
|
|
|
|
local assetsManager = nil
|
|
|
|
local pathToSave = ""
|
|
|
|
|
|
|
|
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()
|
|
|
|
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
|