Ejemplo n.º 1
0
void ReinInfiniteScroller::scrollViewDidScroll(extension::ScrollView *view)
{
    float sectionSize = imageAry.size() * itemSize.width;
    log("infinite offset , pointx before:%f,%f",infiniteScrollView->getContentOffset().x,beforePointX);

    if (beforePointX != infiniteScrollView->getContentOffset().x)
    {
        if (infiniteScrollView->getContentOffset().x < 0)
        {
            if (infiniteScrollView->getContentOffset().x >= (-sectionSize + sectionSize / 2))
            {
                view->setContentOffset(Point(-sectionSize * 2 +sectionSize / 2, 0));
            }
            else if (view->getContentOffset().x <= (-sectionSize * 3 - sectionSize / 2))
            {
                view->setContentOffset(Point(-sectionSize * 2 - sectionSize / 2, 0));
            }
            reloadView(view->getContentOffset().x - getLayoutSize().width / 2);
            
        }
        else
        {
            view->setContentOffset(Point(-sectionSize * 2 + sectionSize / 2, 0));
        }
        
        
        if (!infiniteScrollView->isDragging()) {
            
            if (isFirstDrag) {
                beforePointX = -currSprite->getPosition().x + getLayoutSize().width / 2;
                view->setContentOffset(Point(beforePointX, 0));
                if (_infiniteEventListener && _infiniteEventSelector) {
                    (_infiniteEventListener->*_infiniteEventSelector)(currSprite);
                    
                }
            }
            
            isFirstDrag = true;
        }


    }
    log("view->getContentOffset().x = %f",view->getContentOffset().x);
    
    beforePointX = view->getContentOffset().x;
}
Ejemplo n.º 2
0
void ReinInfiniteScroller::initInfiniteScrollView(const Size& chipSize)
{
    isFirstDrag = false;
    
    beforePointX = 0.0f;
    
    infiniteScrollView = extension::ScrollView::create(getLayoutSize());
    infiniteScrollView->retain();
    infiniteScrollView->setPosition(Point(0, 0));
    
    infiniteScrollView->setBounceable(false);
    infiniteScrollView->setDelegate(this);
    addChild(infiniteScrollView);
    
    
    if (imageAry.size() > 0) {
        itemSize  = chipSize;
    }
 
    if (imageAry.size() > 0) {
        for (int i = 0; i < (imageAry.size() * 5); i++) {
            Sprite* sprite = Sprite::create(imageAry.at(i % imageAry.size()));
            sprite->setTag(i % imageAry.size());
            sprite->setPosition(Point(i * itemSize.width + itemSize.width / 2, getLayoutSize().height / 2));
            imageStore.push_back(sprite);
            infiniteScrollView->addChild(sprite);
        }
    }
    
    infiniteScrollView->setContentSize(Size(imageAry.size() * 5 * itemSize.width, getLayoutSize().height));
    float viewMiddle = imageAry.size() * 2 * itemSize.width;
    
    infiniteScrollView->setContentOffset(Point(-viewMiddle , 0));
    
    
}
Ejemplo n.º 3
0
// on "init" you need to initialize your instance
bool GameMenu::init()
{
	//////////////////////////////
	// 1. super init first
	if (!Layer::init())
	{
		return false;
	}

	Size visibleSize = Director::getInstance()->getVisibleSize();
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	auto label = Label::createWithTTF("Welcome To iBreaker", "fonts/Marker Felt.ttf", 24);
	label->setColor(Color3B(0, 0, 0));
	// position the label on the center of the screen
	label->setPosition(Vec2(origin.x + visibleSize.width / 2,
		origin.y + visibleSize.height - label->getContentSize().height - 10));

	// add the label as a child to this layer
	this->addChild(label, 1);

	auto start_button = ui::Button::create("button_normal.png", "button_clicked.png", "button_disabled.png");

	auto start_label = Label::createWithTTF("START GAME", "fonts/Marker Felt.ttf", 24);
	start_label->setColor(Color3B(0, 0, 0));
	start_label->setPosition(Vec2(start_button->getLayoutSize().width / 2, start_button->getLayoutSize().height / 2));
	
	start_button->addChild(start_label);
	start_button->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 5 * 4 -50));
	start_button->addTouchEventListener([&](Ref* sender, ui::Widget::TouchEventType type)
	{
		int n = 0;
		switch (type)
		{
			case ui::Widget::TouchEventType::BEGAN:
				break;
			case ui::Widget::TouchEventType::ENDED:
				n = 1;
				break;
			default:
				break;
		}
		if (n == 1)
		{
			auto director = Director::getInstance();
			auto scene = HelloWorld::createScene();
			// Transition Fade
			//director->replaceScene(TransitionFade::create(0.5, scene, Color3B(0, 255, 255)));
			// FlipX
			//director->replaceScene(TransitionFlipX::create(2, scene));

			// Transition Slide In
			director->replaceScene(TransitionSlideInT::create(1, scene));

			// run
			//director->replaceScene(scene);
		}
	});
	this->addChild(start_button, 1);

	
	auto quit_button = ui::Button::create("button_normal.png", "button_clicked.png", "button_disabled.png");

	auto quit_label = Label::createWithTTF("QUIT", "fonts/Marker Felt.ttf", 24);
	quit_label->setColor(Color3B(0, 0, 0));
	quit_label->setPosition(Vec2(quit_button->getLayoutSize().width / 2, quit_button->getLayoutSize().height / 2));
	
	quit_button->addChild(quit_label);
	quit_button->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 5 * 2 - 50));
	quit_button->addTouchEventListener([&](Ref* sender, ui::Widget::TouchEventType type)
	{
		int n = 0;
		switch (type)
			{
			case ui::Widget::TouchEventType::BEGAN:
				break;
			case ui::Widget::TouchEventType::ENDED:
				n = 1;
				break;
			default:
				break;
		}
		if (n == 1)
		{
			Director::getInstance()->end();
		}
	});
	this->addChild(quit_button);

	
	drawBackground();
	
	return true;
}