Author Topic: scrolling text to off screen surface...  (Read 688 times)

jedione

  • Hero Member
  • *****
  • Posts: 564
  • punktoe
    • View Profile
scrolling text to off screen surface...
« on: October 25, 2018, 07:00:49 PM »
ok well im trying to make it so we can have text overview's that will scroll and loop

with the beginning and end going off the surface layer...   here it is using anime on a surface.

iv been onley able to have it start off screen,   than end.....   i need help to make it happen

what do you think....

demo= https://youtu.be/DQ2Ee4RrL_U

code:=
Code: [Select]
//surface anime
local snap = fe.add_surface(1200,1000)
//snap.set_pos = (100,100);
local snapy = snap.add_text("[Overview]", 100, 1200, 800, 900 );

local layer_cfg = {
when = Transition.ToNewSelection,
property = "y",
start = 900,
end = 500,
tween = Tween.Linear,
time = 15000,
delay = 0,
loop = true
}

animation.add( PropertyAnimation( snapy, layer_cfg ) );

snapy.word_wrap = true;
snapy.align = Align.TopLeft;
snapy.set_rgb (0,0,0);
snapy.font="blogger";
snapy.charsize = 28;
//snapy.alpha = 255;

i need it to scroll off surface at the top!       thanks to any one
help a friend....

jedione

  • Hero Member
  • *****
  • Posts: 564
  • punktoe
    • View Profile
Re: scrolling text to off screen surface...
« Reply #1 on: October 25, 2018, 07:03:52 PM »
if any one need a base layout to run and mod i can upload it ,,,
help a friend....

Giacomo1982

  • Full Member
  • ***
  • Posts: 45
    • View Profile
Re: scrolling text to off screen surface...
« Reply #2 on: October 25, 2018, 11:43:05 PM »
This is what I'm looking for, but it is not perfect, the text in your example start from the bottom and when is on top restart.
I can't understand the surface  purpose, actually surface in general... Maybe surface is a container of objects?
I need a command that moves text inside its box

zpaolo11x

  • Sr. Member
  • ****
  • Posts: 199
    • View Profile
Re: scrolling text to off screen surface...
« Reply #3 on: October 26, 2018, 12:42:37 AM »
This is what I'm looking for, but it is not perfect, the text in your example start from the bottom and when is on top restart.
I can't understand the surface  purpose, actually surface in general... Maybe surface is a container of objects?
I need a command that moves text inside its box

Giacomo, I made something vaguely similar to your needs in my theme for scrolling horizontal titles that are longer than the screen width, it's a real mess, I swear, especially if you want the text to "ping pong". Take a look at the bottom of my code, I'll try to isolate an example if I find some time...

Giacomo1982

  • Full Member
  • ***
  • Posts: 45
    • View Profile
Re: scrolling text to off screen surface...
« Reply #4 on: October 26, 2018, 02:10:46 AM »
Thanks Paolo, I decided to make a scroller by myself

local flw = fe.layout.width
local flh = fe.layout.height

class scroller {

   text = null
   time = null
   delay = null
   direction = null      // left, right, top, down
   end = null
   start = null
   current_tick_time = null
   
   constructor( text_name, anim_time, anim_delay, anim_direction, anim_end ) {
      text = text_name;
      time = anim_time;
      delay = anim_delay;
      direction = anim_direction;
      end = anim_end;

      anim_prop()
      fe.add_ticks_callback( this, "move" )
      fe.add_transition_callback( this, "change_game" )
   }

   function anim_prop() {
      current_tick_time = 0
      switch ( direction ) {
         case "top":
            start = text.y;
            end = text.y - end;
            break;
         case "down":
            start = text.y;
            end = text.y + end;
            break;
         case "left":
            start = text.x;
            end = text.x - end;
            break;
         case "right":
            start = text.x;
            end = text.x + end;
            break;
      }
   }

   function move( tick_time ) {
      if ( current_tick_time == 0 ) {
         current_tick_time = tick_time + delay         // assign the current tick_time value to current_tick_time (it not increase durign time)
         if ( direction == "top" || direction == "down" ) text.y = start
         else text.x = start
      }
      local anim_time = tick_time - current_tick_time      // anim_time increase every 16.6ms
      if ( current_tick_time < tick_time ) {
         switch ( direction ) {
            case "top":      if ( text.y > end )      text.y = start - anim_time / time;      break;      // do the movement
            case "down":   if ( text.y < end )      text.y = start + anim_time / time;      break;
            case "left":   if ( text.x > end )      text.x = start - anim_time / time;      break;
            case "right":   if ( text.x < end )      text.x = start + anim_time / time;      break;
         }
      }
   }

   function change_game( ttype, var, ttime ) {
      if ( ttype == Transition.ToNewList || ttype == Transition.ToNewSelection || ttype == Transition.ToNewList )
         current_tick_time = 0                     // assign value 0 to if game changes
   }   
}


local surface = fe.add_surface( flw*0.30, flh*0.30 );
surface.x = 50;
surface.y = 50;
local mytext = surface.add_text( "[Extra]", 0, 0, flw*0.30, flh*0.60 );
mytext.charsize = 15;
mytext.word_wrap = true;
mytext.align = Align.TopLeft;
mytext.set_bg_rgb( 255, 0, 0 );
scroller( mytext, 10, 500, "left", 50 );      // class call





but thanks to jedione I realized is easier using animation module with the text inside a surface




fe.load_module("animate");
local flw = fe.layout.width
local flh = fe.layout.height

local surface = fe.add_surface( flw/3, flh/3 );
surface.x = 100;
surface.y = 200;
local text = surface.add_text( "[Extra]", 0, 0, flw, flh );
text.charsize = 15;
text.word_wrap = true;
text.align = Align.TopLeft;
text.set_bg_rgb( 255, 0, 0 );
      
local an = { when=Transition.ToNewSelection, property="y", start=text.y, end=text.y-200, time=1000 }
animation.add( PropertyAnimation( text, an ) );
« Last Edit: October 26, 2018, 08:03:19 AM by Giacomo1982 »

jedione

  • Hero Member
  • *****
  • Posts: 564
  • punktoe
    • View Profile
Re: scrolling text to off screen surface...
« Reply #5 on: October 26, 2018, 07:57:46 AM »
thanks for the reply,  :D
  almost done

here it is..https://www.youtube.com/watch?v=5B6POnaSbdk&feature=youtu.be
help a friend....

rand0m

  • Full Member
  • ***
  • Posts: 53
    • View Profile
Re: scrolling text to off screen surface...
« Reply #6 on: October 28, 2018, 12:02:52 AM »
thanks for the reply,  :D
  almost done

here it is..https://www.youtube.com/watch?v=5B6POnaSbdk&feature=youtu.be

Nice work Jedione, strange request but is it possible to control the flow of text (vertical) by input from keyboard/ gamepad.

zpaolo11x

  • Sr. Member
  • ****
  • Posts: 199
    • View Profile
Re: scrolling text to off screen surface...
« Reply #7 on: October 28, 2018, 12:15:08 AM »
Nice work Jedione, strange request but is it possible to control the flow of text (vertical) by input from keyboard/ gamepad.

The Hystory plugin does something similar although it's not smooth scroll but line by line scrolling