-
- void SetupInnerPageCubeEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- customEffect.SetPageSpacing(Vector2(30.0f, 30.0f));
- customEffect.SetAngledOriginPageRotation(ANGLE_CUBE_PAGE_ROTATE);
- customEffect.SetSwingAngle(ANGLE_CUBE_PAGE_ROTATE.x, Vector3(0,-1,0));
- customEffect.SetOpacityThreshold(0.7f);
- }
-
- void SetupOuterPageCubeEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOut);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOut);
- mScrollView.RemoveConstraintsFromChildren();
-
- Vector2 pageSize = Stage::GetCurrent().GetSize();
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0));
- customEffect.SetSwingAngleOut(ANGLE_CUSTOM_CUBE_SWING.x, Vector3(0.0f, -1.0f, 0.0f));
- customEffect.SetSwingAnchor(AnchorPoint::CENTER, AnchorPoint::CENTER_LEFT);
- customEffect.SetOpacityThreshold(0.5f);
- }
-
- void SetupCarouselPageEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- customEffect.SetPageTranslation(Vector3(0,0,0), Vector3(-30, 0, 0));
- customEffect.SetPageSpacing(Vector2(60.0f, 60.0f));
- customEffect.SetAngledOriginPageRotation(-ANGLE_CUBE_PAGE_ROTATE);
- customEffect.SetOpacityThreshold(0.2f, 0.6f);
- }
-
- void SetupSpiralPageEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- Vector2 pageSize = Stage::GetCurrent().GetSize();
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0.0f));
- customEffect.SetSwingAngle(-ANGLE_SPIRAL_SWING_IN.x, Vector3(0.0f, -1.0f, 0.0f), ANGLE_SPIRAL_SWING_OUT.x, Vector3(0.0f, -1.0f, 0.0f));
- customEffect.SetSwingAnchor(AnchorPoint::CENTER_RIGHT);
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0), Vector3(pageSize.x, pageSize.y, 0) * 0.5f);
- customEffect.SetOpacityThreshold(0.66f);
- }
-
- /**
- * [Page]
- * Applies effect to the pages within scroll view.
- *
- * @param[in] page The page Actor to apply effect to.
- */
- void ApplyEffectToPage(Actor page)
- {
- page.RemoveConstraints();
- page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
-
- if( ( mEffectMode == InnerCubeEffect ) ||
- ( mEffectMode == OuterCubeEffect ) ||
- ( mEffectMode == SpiralEffect ) ||
- ( mEffectMode == CarouselEffect) )
- {
- ApplyCustomEffectToPage(page);
- }
- }
-
- void ApplyCustomEffectToPage(Actor page)
- {
- ScrollViewCustomEffect customEffect = ScrollViewCustomEffect::DownCast(mScrollViewEffect);
- Vector2 vStageSize(Stage::GetCurrent().GetSize());
- customEffect.ApplyToPage(page, Vector3(vStageSize.x, vStageSize.y, 1.0f));
- }
-
- /**
- * [Actor]
- * Applies effect to child which resides in page (which in turn resides in scrollview)
- *
- * @note Page is typically the Parent of child, although in
- * some scenarios Page is simply a container which has a child as
- * a descendent.
- *
- * @param[in] child The child actor to apply effect to
- * @param[in] page The page which this child is inside
- */
- void ApplyEffectToActor( Actor child, Actor page )
- {
- if( mEffectMode == DepthEffect )
- {
- ApplyDepthEffectToActor( child );
- }
- else if(mEffectMode == CubeEffect )
- {
- ApplyCubeEffectToActor( child );
- }
- }
-