문제

I want to use famo.us standard Scrollview but have a background image which is scrolling at a different speed to give a parallax effect.

Rather than setting up timers and getPosition stuff, i was wondering if there's a way to hook into an event stream, or somehow pipe the Scrollviews position into a transformation that's applied to another object? For example use the modifier within the scrollview and a modifier chain and then apply that to another imageSurface?

The examples are a bit thin here so would appreciate any pointers.

도움이 되었습니까?

해결책

To answer your question, the way to pipe scroll events is to use the sync property of scrollview to get updates on scroll.

That is..

scrollview.sync.on('start',function(e){ // Do Something });
scrollview.sync.on('update',function(e){ // Do Something });
scrollview.sync.on('end',function(e){ // Do Something });

However for rendering objects in sync and ensuring precision on such, I have found the Engine prerender function to be wonderful.

So I would do something like this.

Engine.on('prerender',function(){

  // Divide by scalar to get effect

  var parallaxEffect = 2.0
  var bgPos = -contentScrollview.getPosition() / parallaxEffect;

  imageView.state.setTransform(Transform.translate(0,bgPos,0)));

})

Hope these pointers help!

다른 팁

This is a bit of a lazy answer, but let me link you to one of the famous demos created by their HackerLab alumni. It demonstrates using famous to create some complex scrolling/swiping animations.

I've learned a lot about Famo.us from the code in the demos, however this hasn't been made available to those outside the beta list yet. So I cloned the project files.

UltraVisual: A Parallax Scrolling Demo

https://github.com/KraigWalker/famous-UltraVisual

A more advanced scrolling animation demo

https://github.com/KraigWalker/famous-IFTTT

Hope this helps you out!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top