#include "TMenu.h" #include "AppMacros.h" #include "T01LayerAnchorPoint.h" #include "T02LayerSprite.h" #include "T03LayerZorder.h" #include "T04ColorLayer.h" #include "T05Coordinate.h" #include "T06BatchNode.h" #include "T07Schedule.h" #include "T08Touch.h" #include "T09Memory.h" #include "T10Label.h" #include "T11CCMenu.h" #include "T12UI.h" #include "T13Action.h" #include "T14Animation.h" #include "T15Speed.h" #include "T16CCFollow.h" #include "T17CCProgressTo.h" #include "T18Grid3D.h" #include "T19Draw.h" #include "T20Music.h" #include "T21Particle.h" #include "T22UserDefault.h" //供场景切换用 static CCTransitionScene * switchSceneEffect(int index,float t,CCScene *s) { switch (index) { case 0: return CCTransitionJumpZoom::create(t,s); break; case 1: return CCTransitionProgressRadialCCW::create(t,s); break; case 2: return CCTransitionProgressRadialCW::create(t,s); break; case 3: return CCTransitionProgressHorizontal::create(t,s); break; case 4: return CCTransitionProgressVertical::create(t,s); break; case 5: return CCTransitionProgressInOut::create(t,s); break; case 6: return CCTransitionProgressOutIn::create(t,s); break; case 7: return CCTransitionCrossFade::create(t,s); break; case 8: return CCTransitionCrossFade::create(t,s); break; case 9: return CCTransitionFadeTR::create(t,s); break; case 10: return CCTransitionFadeBL::create(t,s); break; case 11: return CCTransitionFadeUp::create(t,s); break; case 12: return CCTransitionFadeDown::create(t,s); break; case 13: return CCTransitionTurnOffTiles::create(t,s); break; case 14: return CCTransitionSplitRows::create(t,s); break; case 15: return CCTransitionSplitCols::create(t,s); break; case 16: return CCTransitionFade::create(t,s); break; case 17: return CCTransitionShrinkGrow::create(t,s); break; case 18: return CCTransitionRotoZoom::create(t,s); break; case 19: return CCTransitionMoveInL::create(t,s); break; case 20: return CCTransitionMoveInR::create(t,s); break; case 21: return CCTransitionMoveInT::create(t,s); break; case 22: return CCTransitionMoveInB::create(t,s); break; case 23: return CCTransitionSlideInL::create(t,s); break; case 24: return CCTransitionSlideInR::create(t,s); break; case 25: return CCTransitionSlideInT::create(t,s); break; case 26: return CCTransitionSlideInB::create(t,s); break; } } static char * menu_array[] { "T01LayerAnchorPoint.h", "T02LayerSprite.h",21); font-family:新宋体; font-size:9.5pt">"T03LayerZorder.h",21); font-family:新宋体; font-size:9.5pt">"T04ColorLayer.h",21); font-family:新宋体; font-size:9.5pt">"T05Coordinate.h",21); font-family:新宋体; font-size:9.5pt">"T06BatchNode.h",21); font-family:新宋体; font-size:9.5pt">"T07Schedule.h",21); font-family:新宋体; font-size:9.5pt">"T08Touch.h",21); font-family:新宋体; font-size:9.5pt">"T09Memory.h",21); font-family:新宋体; font-size:9.5pt">"T10Label.h",21); font-family:新宋体; font-size:9.5pt">"T11CCMenu.h",21); font-family:新宋体; font-size:9.5pt">"T12UI.h",21); font-family:新宋体; font-size:9.5pt">"T13Action.h",21); font-family:新宋体; font-size:9.5pt">"T14Animation.h",21); font-family:新宋体; font-size:9.5pt">"T15Speed.h",21); font-family:新宋体; font-size:9.5pt">"T16CCFollow.h",21); font-family:新宋体; font-size:9.5pt">"T17CCProgressTo.h",21); font-family:新宋体; font-size:9.5pt">"T18Grid3D.h",21); font-family:新宋体; font-size:9.5pt">"T19Draw.h",21); font-family:新宋体; font-size:9.5pt">"T20Music.h",21); font-family:新宋体; font-size:9.5pt">"T21Particle.h",21); font-family:新宋体; font-size:9.5pt">"T22UserDefault.h" }; CCScene * TMenu::scene() { scene = CCScene::create(); TMenu * layer = create(); scene->addChild(layer); return scene; } bool init() { CCLayer::init(); menu = CCMenu::create(); for (int i = 0; i < sizeof(menu_array) / sizeof(*menu_array); i++) { CCMenuItem * item = CCMenuItemFont::create(menu_array[i], this, menu_selector(menuCallback)); menu->addChild(item); } menu->alignItemsVertically(); addChild(menu); CCArray * array = menu->getChildren(); CCObject * obj; int i = 0; CCARRAY_FOREACH(array,obj) { CCMenuItem * item = (CCMenuItem*)obj; item->setTag(i + 1 + 10000); i++; } CCMenuItem * closeItem = CCMenuItemImage::create("CloseNormal.png","CloseSelected.png"); closeItem->setTarget(this,closeCallback)); CCMenu * menu2 = create(closeItem,138); font-family:新宋体; font-size:9.5pt">NULL); menu2->setPosition(CCPointZero); closeItem->setPosition(ccp(winSize.width - closeItem->getContentSize().width / 2,138); font-family:新宋体; font-size:9.5pt">winSize.height - closeItem->getContentSize().height / 2)); addChild(menu2); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); return true; } void CCObject * sender) { CCMenuItem *)sender; CCScene * pScene = NULL; switch (item->getTag()-10000) { case 1: pScene = T01LayerAnchorPoint::scene(); break; case 2: pScene = T02LayerSprite::scene(); break; case 3: pScene = T03LayerZorder::scene(); break; case 4: pScene = T04ColorLayer::scene(); break; case 5: pScene = T05Coordinate::scene(); break; case 6: pScene = T06BatchNode::scene(); break; case 7: pScene = T07Schedule::scene(); break; case 8: pScene = T08Touch::scene(); break; case 9: pScene = T09Memory::scene(); break; case 10: pScene = T10Label::scene(); break; case 11: pScene = T11CCMenu::scene(); break; case 12: pScene = T12UI::scene(); break; case 13: pScene = T13Action::scene(); break; case 14: pScene = T14Animation::scene(); break; case 15: pScene = T15Speed::scene(); break; case 16: pScene = T16CCFollow::scene(); break; case 17: pScene = T17CCProgressTo::scene(); break; case 18: pScene = T18Grid3D::scene(); break; case 19: pScene = T19Draw::scene(); break; case 20: pScene = T20Music::scene(); break; case 21: pScene = T21Particle::scene(); break; case 22: pScene = T22CCUserDefault::scene(); break; } //下面的代码用于做控制场景切换用 if (pScene != NULL) { static int idx = 0; CCTransitionScene * scene = switchSceneEffect(idx++,2,pScene); if (idx == 27) { idx = 0; } CCDirector::sharedDirector()->replaceScene(scene); } } void CCObject * sender) { exit(0); } bool CCEvent *pEvent) { return true; } void CCEvent *pEvent) { CCRect rcWin = CCRect(0,40,138); font-family:新宋体; font-size:9.5pt">winSize.width,138); font-family:新宋体; font-size:9.5pt">winSize.height-80); CCMenuItem * firstItem = (CCMenuItem *)menu->getChildren()->objectAtIndex(0); CCMenuItem * lastItem = (lastObject(); CCPoint firstInWorld = menu->convertToWorldSpace(firstItem->getPosition()); CCPoint lastInWorld = menu->convertToWorldSpace(lastItem->getPosition()); if (rcWin.containsPoint(firstInWorld)&&pTouch->getDelta().y<0) return; if (rcWin.containsPoint(lastInWorld) && pTouch->getDelta().y >0) return; menu->setPositionY(menu->getPositionY() + pTouch->getDelta().y); } |