void CCCGameScrollView::scrollToPage( int nPage ) { // 关闭CCScrollView中的自调整 unscheduleAllSelectors(); CCPoint oOffset = getContentOffset(); // 调整位置 CCPoint adjustPos; if (m_eDirection == kCCScrollViewDirectionHorizontal) { adjustPos = ccp(-m_CellSize.width * nPage, 0); } else { adjustPos = ccp(0, m_CellSize.height * nPage); } // 调整动画时间 float adjustAnimDelay = ccpDistance(adjustPos, oOffset) / m_fAdjustSpeed; // 调整位置 setContentOffsetInDuration(adjustPos, adjustAnimDelay); if (nPage != m_nCurPage) { m_nCurPage = nPage; scheduleOnce(schedule_selector(CCCGameScrollView::onScrollEnd), adjustAnimDelay); } }
void ScrollView::scrollToPage(int nPage) { // 关闭CCScrollView中的自调整 unscheduleAllCallbacks(); Vec2 oOffset = getContentOffset(); // 调整位置 Vec2 adjustPos= Vec2(-_cellSize.width*nPage,0); // 调整动画时间 float adjustAnimDelay= adjustPos.getDistance(oOffset)/_adjustSpeed; // 调整位置 setContentOffsetInDuration(adjustPos, adjustAnimDelay); if (nPage!=_prePage) { this->setTouchEnabled(false); schedule(schedule_selector(ScrollView::onScrollEnd),adjustAnimDelay,0,0.0f); _prePage=nPage; if(_delegate) _delegate->scrollViewMoveToPage(nPage); } }
void CScrollView::setContentOffsetToTopInDuration(float fDuration) { if( m_eDirection == eScrollViewDirectionVertical ) { Vec2 tPoint(0, -(m_pContainer->getContentSize().height - _contentSize.height)); setContentOffsetInDuration(tPoint, fDuration); } }
void CCCGameScrollView::scrollToPage( int nPage ) { // 关闭CCScrollView中的自调整 unscheduleAllSelectors(); CCPoint oOffset=getContentOffset(); // 调整位置 CCPoint adjustPos=ccp(-m_CellSize.width*nPage,0); // 调整动画时间 float adjustAnimDelay=ccpDistance(adjustPos,oOffset)/m_fAdjustSpeed; // 调整位置 setContentOffsetInDuration(adjustPos, adjustAnimDelay); if (nPage!=m_nPrePage) { schedule(schedule_selector(CCCGameScrollView::onScrollEnd),adjustAnimDelay,0,0.0f); m_nPrePage=nPage; } }
// on "init" you need to initialize your instance bool ReadyScene::init() { ////////////////////////////// // 1. super init first if (!Layer::init()) { return false; } Singleton<WeaponDB>::getInstance(); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("clotharmor.plist"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("thunder.plist"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ogre.plist"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("pikachu.plist"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("thunder_effect.plist"); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); s = nullptr; auto backgroundSprite = Sprite::create("start_background.png"); backgroundSprite->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); backgroundSprite->setScale(3); this->addChild(backgroundSprite); auto tmap = TMXTiledMap::create("StartMap.tmx"); gamemap = new GameMap(tmap); player = new Player(this, gamemap); player->getSpriteObject()->setScale(1.5f); player->getSprite()->setPosition(Point(visibleSize.width * 7 / 24, visibleSize.height /2)); s = new Weapon(1); player->setWeapon(s); MenuItemImage* PlayMenu = MenuItemImage::create("play_button1.png", "play_button2.png", CC_CALLBACK_1(ReadyScene::onMenu, this)); PlayMenu->setScale(2.5f); Menu* menu = Menu::create(PlayMenu, NULL); menu->setPosition(visibleSize.width * 0.3f, visibleSize.height * 0.3f); this->addChild(menu, 1); MenuItemImage* LeftButton = MenuItemImage::create("left_button1.png", "left_button2.png", CC_CALLBACK_1(ReadyScene::onLeftButton, this)); LeftButton->setScale(2.5f); Menu* left_bt = Menu::create(LeftButton, NULL); left_bt->setPosition(Point(visibleSize.width / 6, visibleSize.height / 2)); this->addChild(left_bt, 1); MenuItemImage* RightButton = MenuItemImage::create("right_button1.png", "right_button2.png", CC_CALLBACK_1(ReadyScene::onRightButton, this)); RightButton->setScale(2.5f); Menu* right_bt = Menu::create(RightButton, NULL); right_bt->setPosition(Point(visibleSize.width * 3 / 7, visibleSize.height / 2)); this->addChild(right_bt, 1); auto weapon_sprite = Sprite::create("weapon_font.png"); weapon_sprite->setScale(2.0f); weapon_sprite->setPosition(Point(visibleSize.width * 0.55f, visibleSize.height * 0.75f)); this->addChild(weapon_sprite); auto scrollView = ScrollView::create(Size(Singleton<WeaponDB>::getInstance()->getWeaponDBSize() * 48, 48)); scrollView->setDirection(ScrollView::Direction::HORIZONTAL); scrollView->setContentOffset(Vec2(0, 0)); scrollView->setContentOffsetInDuration(Vec2(0, 0), 10.f); scrollView->setPosition(Point(visibleSize.width * 0.5f, visibleSize.height * 0.6f)); this->addChild(scrollView); MenuItemImage *test; Menu *menutest; for (int i = 1; i <= Singleton<WeaponDB>::getInstance()->getWeaponDBSize(); i++) { std::string str = StringUtils::format("%s_menu.png", Singleton<WeaponDB>::getInstance()->getWeaponData(i).path.c_str()); test = MenuItemImage::create(str, str, CC_CALLBACK_1(ReadyScene::test2, this)); test->setScale(2.5f); test->setTag(i); menutest = ScrollMenu::create(test, NULL); menutest->setPosition(Point((48 * i), 20)); scrollView->addChild(menutest); } this->schedule(schedule_selector(ReadyScene::gameLogic), 0.2); return true; }