zoukankan      html  css  js  c++  java
  • quick-cocos2d-x之testlua之mainMenu.lua

    require "helper"
    require "testResource"
    
    require "ActionsTest.ActionsTest"
    require "TransitionsTest.TransitionsTest"
    require "ActionsProgressTest.ActionsProgressTest"
    require "EffectsTest.EffectsTest"
    require "ClickAndMoveTest.ClickAndMoveTest"
    require "RotateWorldTest.RotateWorldTest"
    require "ParticleTest.ParticleTest"
    require "ActionsEaseTest.ActionsEaseTest"
    require "MotionStreakTest.MotionStreakTest"
    require "DrawPrimitivesTest.DrawPrimitivesTest"
    require "NodeTest.NodeTest"
    require "TouchesTest.TouchesTest"
    require "SpriteTest.SpriteTest"
    require "LayerTest.LayerTest"
    require "PerformanceTest.PerformanceTest"
    require "LabelTest.LabelTest"
    require "ParallaxTest.ParallaxTest"
    require "TileMapTest.TileMapTest"
    require "ActionManagerTest.ActionManagerTest"
    require "MenuTest.MenuTest"
    require "IntervalTest.IntervalTest"
    require "SceneTest.SceneTest"
    require "Texture2dTest.Texture2dTest"
    require "RenderTextureTest.RenderTextureTest"
    require "ZwoptexTest.ZwoptexTest"
    require "FontTest.FontTest"
    require "CocosDenshionTest.CocosDenshionTest"
    require "EffectsAdvancedTest.EffectsAdvancedTest"
    require "UserDefaultTest.UserDefaultTest"
    require "CurrentLanguageTest.CurrentLanguageTest"
    require "BugsTest.BugsTest"
    require "ExtensionTest.ExtensionTest"
    require "AccelerometerTest.AccelerometerTest"
    require "KeypadTest.KeypadTest"
    
    
    local LINE_SPACE = 40 --总共有40个test场景
    
    
    local CurPos = {x = 0, y = 0}--创建一个点初始位置为0点。全局的。
    local BeginPos = {x = 0, y = 0}
    
    
    local _allTests = {
        { isSupported = true,  name = "ActionsTest"            , create_func   =               ActionsTest      },
        { isSupported = true,  name = "TransitionsTest"        , create_func   =           TransitionsTest      },
        { isSupported = true,  name = "ActionsProgressTest"    , create_func   =       ProgressActionsTest      },
        { isSupported = true,  name = "EffectsTest"            , create_func   =               EffectsTest      },
        { isSupported = true,  name = "ClickAndMoveTest"       , create_func   =          ClickAndMoveTest      },
        { isSupported = true,  name = "RotateWorldTest"        , create_func   =           RotateWorldTest      },
        { isSupported = true,  name = "ParticleTest"           , create_func   =              ParticleTest      },
        { isSupported = true,  name = "ActionsEaseTest"        , create_func   =           EaseActionsTest      },
        { isSupported = true,  name = "MotionStreakTest"       , create_func   =          MotionStreakTest      },
        { isSupported = false,  name = "DrawPrimitivesTest"     , create_func=        DrawPrimitivesTest      },
        { isSupported = true,  name = "NodeTest"               , create_func   =                  CocosNodeTest },
        { isSupported = true,  name = "TouchesTest"            , create_func   =               TouchesTest      },
        --Many tests in MenuTest will crash, so disable it. Should enable it after all crashes are resolved.
        { isSupported = true,  name = "MenuTest"               , create_func   =                  MenuTestMain  },
        { isSupported = true,  name = "ActionManagerTest"      , create_func   =         ActionManagerTestMain  },
        { isSupported = true,  name = "LayerTest"              , create_func   =                 LayerTestMain  },
        { isSupported = true,  name = "SceneTest"              , create_func   =                 SceneTestMain  },
        { isSupported = true,  name = "ParallaxTest"           , create_func   =              ParallaxTestMain  },
        { isSupported = true,  name = "TileMapTest"            , create_func   =               TileMapTestMain  },
        { isSupported = true,  name = "IntervalTest"           , create_func   =              IntervalTestMain  },
        { isSupported = false,  name = "ChipmunkAccelTouchTest" , create_func=    ChipmunkAccelTouchTestMain  },
        { isSupported = true,  name = "LabelTest"              , create_func   =                 LabelTest      },
        { isSupported = false,  name = "TextInputTest"          , create_func=             TextInputTestMain  },
        { isSupported = true,  name = "SpriteTest"             , create_func   =                SpriteTest      },
        { isSupported = false,  name = "SchdulerTest"           , create_func=              SchdulerTestMain  },
        { isSupported = true,  name = "RenderTextureTest"      , create_func   =         RenderTextureTestMain  },
        { isSupported = true,  name = "Texture2DTest"          , create_func   =             Texture2dTestMain  },
        { isSupported = false,  name = "Box2dTest"              , create_func=                 Box2dTestMain  },
        { isSupported = false,  name = "Box2dTestBed"           , create_func=              Box2dTestBedMain  },
        { isSupported = true,  name = "EffectAdvancedTest"     , create_func   =        EffectAdvancedTestMain  },
        { isSupported = true,  name = "Accelerometer"          , create_func=             AccelerometerMain  },
        { isSupported = true,  name = "KeypadTest"             , create_func=                KeypadTestMain  },
        { isSupported = true,  name = "CocosDenshionTest"      , create_func   =         CocosDenshionTestMain  },
        { isSupported = true,  name = "PerformanceTest"        , create_func=           PerformanceTestMain  },
        { isSupported = true,  name = "ZwoptexTest"            , create_func   =               ZwoptexTestMain  },
        { isSupported = false,  name = "CurlTest"               , create_func=                  CurlTestMain  },
        { isSupported = true,  name = "UserDefaultTest"        , create_func=           UserDefaultTestMain  },
        { isSupported = true,  name = "BugsTest"               , create_func=              BugsTestMain      },
        { isSupported = true,  name = "FontTest"               , create_func   =              FontTestMain      },
        { isSupported = true,  name = "CurrentLanguageTest"    , create_func=   CurrentLanguageTestMain      },
        { isSupported = false,  name = "TextureCacheTest"       , create_func=      TextureCacheTestMain      },
        { isSupported = true,  name = "ExtensionsTest"         , create_func=        ExtensionsTestMain      },
        { isSupported = false,  name = "ShaderTest"             , create_func=            ShaderTestMain      },
        { isSupported = false,  name = "MutiTouchTest"          , create_func=          MutiTouchTestMain     }
    }
    
    local TESTS_COUNT = table.getn(_allTests)
    
    -- create scene
    local function CreateTestScene(nIdx)
        local scene = _allTests[nIdx].create_func()
        --purgeCachedData清除所有缓存数据
        CCDirector:sharedDirector():purgeCachedData()
        return scene
    end
    -- create menu
    function CreateTestMenu()
        local menuLayer = CCLayer:create()
    
        local function closeCallback()
            CCDirector:sharedDirector():endToLua()
        end
    
        local function menuCallback(tag)
            print(tag)
            local Idx = tag - 10000
            local testScene = CreateTestScene(Idx)
            if testScene then
                --切换到指定测试页
                CCDirector:sharedDirector():replaceScene(testScene)
            end
        end
    
        -- add close menu
        local s = CCDirector:sharedDirector():getWinSize()
        --s_pPathClose是在testResource.lua定义的文件"Images/close.png"
        local CloseItem = CCMenuItemImage:create(s_pPathClose, s_pPathClose)
        CloseItem:registerScriptTapHandler(closeCallback)
        CloseItem:setPosition(ccp(s.width - 30, s.height - 30))--放在右上角
    
        local CloseMenu = CCMenu:create()
        CloseMenu:setPosition(0, 0)
        CloseMenu:addChild(CloseItem)
        menuLayer:addChild(CloseMenu)
    
        -- add menu items for tests
        --各测试项的列表
        local MainMenu = CCMenu:create()
        local index = 0
        local obj = nil
        for index, obj in pairs(_allTests) do
            local testLabel = CCLabelTTF:create(obj.name, "Arial", 24)
            local testMenuItem = CCMenuItemLabel:create(testLabel)
            if not obj.isSupported then
                testMenuItem:setEnabled(false)--展示为灰色
            end
            --CCMenuItem的处理函数注册registerScriptTapHandler
            testMenuItem:registerScriptTapHandler(menuCallback)
            testMenuItem:setPosition(ccp(s.width / 2, (s.height - (index) * LINE_SPACE)))
            MainMenu:addChild(testMenuItem, index + 10000, index + 10000)
        end
    
    --设置滚动区域的大小(高度已超出屏幕)
        MainMenu:setContentSize(CCSizeMake(s.width, (TESTS_COUNT + 1) * (LINE_SPACE)))
        --设置当前位置(0,0)
        MainMenu:setPosition(CurPos.x, CurPos.y)
        menuLayer:addChild(MainMenu)
    
        -- handling touch events
        --记录起始点到全局变量BeginPos中
        local function onTouchBegan(x, y)
            BeginPos = {x = x, y = y}
            -- CCTOUCHBEGAN event must return true
            --必须返回true
            return true
        end
    
        local function onTouchMoved(x, y)
            --移动后y的变化值,直接作为mainMenu的垂直方向滚动距离
            local nMoveY = y - BeginPos.y
            local curPosx, curPosy = MainMenu:getPosition()
            local nextPosy = curPosy + nMoveY
            local winSize = CCDirector:sharedDirector():getWinSize()
            if nextPosy < 0 then
                MainMenu:setPosition(0, 0)
                return
            end
    
    --有可能滑动的距离过大,就直接把mainMenu的位置设为滚动到末尾了
            if nextPosy > ((TESTS_COUNT + 1) * LINE_SPACE - winSize.height) then
                MainMenu:setPosition(0, ((TESTS_COUNT + 1) * LINE_SPACE - winSize.height))
                return
            end
    
            MainMenu:setPosition(curPosx, nextPosy)
            BeginPos = {x = x, y = y}
            CurPos = {x = curPosx, y = nextPosy}
        end
    
        local function onTouch(eventType, x, y)
            if eventType == "began" then
                return onTouchBegan(x, y)
            elseif eventType == "moved" then
                return onTouchMoved(x, y)
            end
        end
    
        menuLayer:setTouchEnabled(true)
        menuLayer:addTouchEventListener(onTouch)
    
        return menuLayer
    end
  • 相关阅读:
    缓存架构设计细节二三事
    数据库软件架构设计些什么
    100亿数据1万属性数据架构设计
    这才是真正的表扩展方案
    啥,又要为表增加一列属性?
    究竟啥才是互联网架构“高可用”
    究竟啥才是互联网架构“高并发”
    Linux用过的命令
    Xshell远程连接工具
    oracle分组取第一条
  • 原文地址:https://www.cnblogs.com/sagacite/p/3372720.html
Copyright © 2011-2022 走看看