示例#1
0
ScrollList::ScrollList(ds::ui::SpriteEngine& engine, const bool vertical)
	: ds::ui::Sprite(engine)
	, mScrollArea(nullptr)
	, mStartPositionX(10.0f)
	, mIncrementAmount(50.0f)
	, mAnimateOnDeltaDelay(0.0f)
	, mAnimateOnStartDelay(0.0f)
	, mVerticalScrolling(vertical)
	, mFillFromTop(true)
{
	mScrollArea = new ds::ui::ScrollArea(mEngine, getWidth(), getHeight(), mVerticalScrolling);
	if(mScrollArea){
		mScrollArea->setScrollUpdatedCallback([this](ds::ui::Sprite*){ assignItems(); });
		mScrollArea->setFadeColors(ci::ColorA(0.0f, 0.0f, 0.0f, 1.0f), ci::ColorA(0.0f, 0.0f, 0.0f, 0.0f));
		mScrollArea->setFadeHeight(50.0f);
		mScrollArea->setUseFades(true);
		addChildPtr(mScrollArea);
	}

	mScrollableHolder = new ds::ui::Sprite(mEngine);


	if(mScrollableHolder){
		mScrollArea->addSpriteToScroll(mScrollableHolder);
		mScrollableHolder->enable(false);
	}

	enable(false);
}
示例#2
0
ScrollList::ScrollList(ds::ui::SpriteEngine& engine, const bool vertical)
	: ds::ui::Sprite(engine)
	, mScrollArea(nullptr)
	, mStartPositionX(10.0f)
	, mStartPositionY(0.0f)
	, mIncrementAmount(50.0f)
	, mAnimateOnDeltaDelay(0.0f)
	, mAnimateOnStartDelay(0.0f)
	, mVerticalScrolling(vertical)
	, mFillFromTop(true)
	, mGridLayout(false)
	, mSpecialLayout(false)
	, mTargetRow(0)
	, mTargetColumn(0)
	, mGapping(0)
{
	mScrollArea = new ds::ui::ScrollArea(mEngine, getWidth(), getHeight(), mVerticalScrolling);
	if(mScrollArea){
		mScrollArea->setScrollUpdatedCallback([this](ds::ui::Sprite*){
			assignItems();
			if(mScrollUpdatedCallback){
				mScrollUpdatedCallback();
			}
		});
		mScrollArea->setScrollerTouchedCallback([this]{
			mLastUpdateTime = Poco::Timestamp().epochMicroseconds();
		});
		mScrollArea->setFadeColors(ci::ColorA(0.0f, 0.0f, 0.0f, 1.0f), ci::ColorA(0.0f, 0.0f, 0.0f, 0.0f));
		mScrollArea->setFadeHeight(50.0f);
		mScrollArea->setUseFades(true);
		addChildPtr(mScrollArea);
	}

	mScrollableHolder = new ds::ui::Sprite(mEngine);


	if(mScrollableHolder){
		mScrollArea->addSpriteToScroll(mScrollableHolder);
		mScrollableHolder->enable(false);
	}

	mLastUpdateTime = Poco::Timestamp().epochMicroseconds();

	enable(false);
}
示例#3
0
void ScrollList::layout(){

	layoutItems();


	if(mVerticalScrolling){
		float scrollyHeight = mScrollableHolder->getHeight();

		if(scrollyHeight < getHeight()){
			scrollyHeight = getHeight();
		}

		if(mScrollableHolder){
			mScrollableHolder->setSize(getWidth(), scrollyHeight);
		}
		if (getPerspective()){
			if(mFillFromTop){
				pushItemsTop();
			}
		} else if(!mFillFromTop){
			pushItemsTop();
		}

	} else {
		float scrollyWidth = mScrollableHolder->getWidth();

		if(scrollyWidth < getWidth()){
			scrollyWidth = getWidth();
		}

		if(mScrollableHolder){
			mScrollableHolder->setSize(scrollyWidth, getHeight());
		}
	}

	if(mScrollArea){
		mScrollArea->setScrollSize(getWidth(), getHeight());
	}


	assignItems();
}