mirror of https://github.com/axmolengine/axmol.git
187 lines
4.6 KiB
C++
187 lines
4.6 KiB
C++
#include "BugsTest.h"
|
|
#include "Bug-350.h"
|
|
#include "Bug-422.h"
|
|
#include "Bug-458/Bug-458.h"
|
|
#include "Bug-624.h"
|
|
#include "Bug-886.h"
|
|
#include "Bug-899.h"
|
|
#include "Bug-914.h"
|
|
#include "Bug-1159.h"
|
|
#include "Bug-1174.h"
|
|
|
|
#define TEST_BUG(bugNO) \
|
|
{ \
|
|
CCScene* pScene = CCScene::create(); \
|
|
Bug##bugNO##Layer* pLayer = new Bug##bugNO##Layer(); \
|
|
pLayer->init(); \
|
|
pScene->addChild(pLayer); \
|
|
CCDirector::sharedDirector()->replaceScene(pScene); \
|
|
pLayer->autorelease(); \
|
|
}
|
|
|
|
enum
|
|
{
|
|
MAX_COUNT = 9,
|
|
LINE_SPACE = 40,
|
|
kItemTagBasic = 5432,
|
|
};
|
|
|
|
static CCPoint s_tCurPos = CCPointZero;
|
|
|
|
const std::string testsName[MAX_COUNT] =
|
|
{
|
|
"Bug-350",
|
|
"Bug-422",
|
|
"Bug-458",
|
|
"Bug-624",
|
|
"Bug-886",
|
|
"Bug-899",
|
|
"Bug-914",
|
|
"Bug-1159",
|
|
"Bug-1174"
|
|
};
|
|
|
|
////////////////////////////////////////////////////////
|
|
//
|
|
// BugsTestMainLayer
|
|
//
|
|
////////////////////////////////////////////////////////
|
|
void BugsTestMainLayer::onEnter()
|
|
{
|
|
CCLayer::onEnter();
|
|
|
|
CCSize s = CCDirector::sharedDirector()->getWinSize();
|
|
m_pItmeMenu = CCMenu::create();
|
|
CCMenuItemFont::setFontName("Arial");
|
|
CCMenuItemFont::setFontSize(24);
|
|
for (int i = 0; i < MAX_COUNT; ++i)
|
|
{
|
|
CCMenuItemFont* pItem = CCMenuItemFont::create(testsName[i].c_str(), this,
|
|
menu_selector(BugsTestMainLayer::menuCallback));
|
|
pItem->setPosition(ccp(s.width / 2, s.height - (i + 1) * LINE_SPACE));
|
|
m_pItmeMenu->addChild(pItem, kItemTagBasic + i);
|
|
}
|
|
|
|
m_pItmeMenu->setPosition(s_tCurPos);
|
|
addChild(m_pItmeMenu);
|
|
setTouchEnabled(true);
|
|
}
|
|
|
|
void BugsTestMainLayer::menuCallback(CCObject* pSender)
|
|
{
|
|
CCMenuItemFont* pItem = (CCMenuItemFont*)pSender;
|
|
int nIndex = pItem->getZOrder() - kItemTagBasic;
|
|
|
|
switch (nIndex)
|
|
{
|
|
case 0:
|
|
TEST_BUG(350);
|
|
break;
|
|
case 1:
|
|
TEST_BUG(422);
|
|
break;
|
|
case 2:
|
|
TEST_BUG(458);
|
|
break;
|
|
case 3:
|
|
TEST_BUG(624);
|
|
break;
|
|
case 4:
|
|
TEST_BUG(886);
|
|
break;
|
|
case 5:
|
|
TEST_BUG(899);
|
|
break;
|
|
case 6:
|
|
TEST_BUG(914);
|
|
break;
|
|
case 7:
|
|
TEST_BUG(1159);
|
|
break;
|
|
case 8:
|
|
TEST_BUG(1174);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void BugsTestMainLayer::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)
|
|
{
|
|
CCSetIterator it = pTouches->begin();
|
|
CCTouch* touch = (CCTouch*)(*it);
|
|
|
|
m_tBeginPos = touch->getLocation();
|
|
}
|
|
|
|
void BugsTestMainLayer::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
|
|
{
|
|
CCSetIterator it = pTouches->begin();
|
|
CCTouch* touch = (CCTouch*)(*it);
|
|
|
|
CCPoint touchLocation = touch->getLocation();
|
|
float nMoveY = touchLocation.y - m_tBeginPos.y;
|
|
|
|
CCPoint curPos = m_pItmeMenu->getPosition();
|
|
CCPoint nextPos = ccp(curPos.x, curPos.y + nMoveY);
|
|
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
|
|
if (nextPos.y < 0.0f)
|
|
{
|
|
m_pItmeMenu->setPosition(CCPointZero);
|
|
return;
|
|
}
|
|
|
|
if (nextPos.y > ((MAX_COUNT + 1)* LINE_SPACE - winSize.height))
|
|
{
|
|
m_pItmeMenu->setPosition(ccp(0, ((MAX_COUNT + 1)* LINE_SPACE - winSize.height)));
|
|
return;
|
|
}
|
|
|
|
m_pItmeMenu->setPosition(nextPos);
|
|
m_tBeginPos = touchLocation;
|
|
s_tCurPos = nextPos;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////
|
|
//
|
|
// BugsTestBaseLayer
|
|
//
|
|
////////////////////////////////////////////////////////
|
|
void BugsTestBaseLayer::onEnter()
|
|
{
|
|
CCLayer::onEnter();
|
|
|
|
CCSize s = CCDirector::sharedDirector()->getWinSize();
|
|
|
|
CCMenuItemFont::setFontName("Arial");
|
|
CCMenuItemFont::setFontSize(24);
|
|
CCMenuItemFont* pMainItem = CCMenuItemFont::create("Back", this,
|
|
menu_selector(BugsTestBaseLayer::backCallback));
|
|
pMainItem->setPosition(ccp(s.width - 50, 25));
|
|
CCMenu* pMenu = CCMenu::create(pMainItem, NULL);
|
|
pMenu->setPosition( CCPointZero );
|
|
addChild(pMenu);
|
|
}
|
|
|
|
void BugsTestBaseLayer::backCallback(CCObject* pSender)
|
|
{
|
|
CCDirector::sharedDirector()->enableRetinaDisplay(false);
|
|
BugsTestScene* pScene = new BugsTestScene();
|
|
pScene->runThisTest();
|
|
pScene->autorelease();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////
|
|
//
|
|
// BugsTestScene
|
|
//
|
|
////////////////////////////////////////////////////////
|
|
void BugsTestScene::runThisTest()
|
|
{
|
|
CCLayer* pLayer = new BugsTestMainLayer();
|
|
addChild(pLayer);
|
|
pLayer->release();
|
|
|
|
CCDirector::sharedDirector()->replaceScene(this);
|
|
}
|