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
  • 相关阅读:
    access将一个表中的记录插入到另一个表中
    在Windows Azure中使用CQRS
    Hazelcast 2.0发布,推出堆外存储和分布式备份
    Telefónica与Mozilla携手开拓首个开放互联网设备
    拥有完整硬件访问权限的本地Silverlight
    Mozilla BrowserQuest
    Doclist压缩方法简介
    CodePlex提供Git支持
    主流浏览器版本发布历史
    access截取字符
  • 原文地址:https://www.cnblogs.com/sagacite/p/3372720.html
Copyright © 2011-2022 走看看