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
  • 相关阅读:
    青松云安全-WAF-1.0.655 (ubuntu 14.04 server)
    相似变换和仿射变换
    参数坐标系统变换
    城市测量坐标系统的建立
    工程测量坐标系
    大地测量控制点坐标转换技术规范
    为什么样本方差(sample variance)的分母是 n-1?
    似大地水准面
    typedef的用法
    同一椭球面经纬度坐标与空间直角坐标之间的相互转换
  • 原文地址:https://www.cnblogs.com/sagacite/p/3372720.html
Copyright © 2011-2022 走看看