• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

P3D v3 Pages Slide Right to Left

Messages
10,142
Country
us-arizona
Hey all,

So... I was hoping I could figure this out myself.. but not getting anywhere.

I have a LCD screen. I have multiple pages. I wish to have each page 'slide' into view, like an Android App or iOS app, where the pages slide into view from the outside edge.

It works like this:
* Page A is 'always active' background
* Click page B screen click zone
* Page B slides out from far right, sliding left into center of screen.
* Click page C click zone and page B slides left, out of sight, and page C slides from 'right' side (not left) into view, centering on screen.
* * * Timer system that keeps the pages visible for 6 seconds

So I need a page enum system for pages to show up. (Done.. )
I need a 'trolly system' that brings the pages out from the edges;
* * Trolly page B Open (Macros?) (slides page into view)
* * Trolly page B Close (slides page out)
* * Trolly page C Open (slides page into view)
* * Trolly page C Close (slides page out)
etc, etc, up to say page J or M...
*** and not to forget the timer system

When page is turned off and a new page is brought into view, the page turning off is 'slide the screen out of view and then off' and the new screen is brought in.

Then there is the timer... for the screen to be active only for say 6 seconds, then it reverts back to primary screen page A, unless you tap it, work a gauge, click the screen, or its a special screen that doesnt need a timer.

How in the world would one write the trolly code?

Lets say, this is page B...

<Element>
<Visible>(L:SyrosOS_Page,enum) 1 ==</Visible>
<Position X="0" Y="0"/>
<Image Name="ScreenBackgroundTESTPAGETHREE.bmp"/>
</Element>


I need to also bring this into a sliding gauge element, like a horizontal dial gauge code, with adjustable speed of animation. So the part shows up (first), then slides into view (second) and timer begins running and page disappears at 6 second mark (third) or holds position if no timer is set for that particular page (such as the NAV page).

I am using 1024 x 1024 as the $pan sheet size. The gauge size is 1500,681. Thats the resolution I want. So I have start point of the trolly at X=1500 and stop point as X=0. Then when either the timer goes off, or another page is selected, the trolly then goes to point X=-1500 (negative 1500, to slide out of view)
These would have an animation speed as well.

So probably a draft would be;

Element
<enum,Page B> turn on
Element
Trolly page B to X=1500 to X=0
Turn on timer
/Element
/Element

Then how to turn off the active window...? Send the trolly to left stage and shut down that page enum.

Its not an easy one... Any thoughts?


I was thinking it would be cool if you could swipe left and swipe right to move through the gauge screens. This is a 2D gauge that represents a glass LCD screen with TTF touch screen interaction, so its all touch screen controls.



Bill
LHC
 
Last edited:
Assuming the LCD pages are separate <Elements> in a 2D gauge, one approach is to play with <Shift><Value> to move the horizontal position of the Element's objects. <Value> is a variable (an L:Var) that can be updated each gauge cycle in the <Update> section to control page slide speed: how much <Value> is increased or decreased each Update cycle determines how fast the object "slides". Try turning on/off pages using <Visible>. Note that the <Element> itself cannot change it's <Position> dynamically, but the objects it displays can dynamically change position within the <Element> each gauge cycle. Anyway, this should work for you, but not at all sure how nice it will look ... might never look as smooth as your iPad in action.

If you try to get sophisticated by making the speed of page movement a function of how fast you swipe right or left, then it will get much more complicated, but even that could be possible.

My advice is to set up a simple version first to see if it looks nice enough to devote more time to it.

By the way, what will the pages display? Maps (hope not)? Gauge with .bmp manipulation like an artificial horizon? Text and numbers? Just static .bmps like "ScreenBackgroundTESTPAGETHREE.bmp"?

Bob
 
Last edited:
and, to add to Karol's examples, a couple more:

Code:
<Element Name="Circle Shift">
    <Visible>(L:ShowCircle, bool)</Visible>
    <Position X="-1" Y="-1"/>
    <Circle Bright="True" Radius="3.5" FillColor="yellow" Color="#010101" LineWidth="1">
        <Axis X="0" Y="0"/>
    </Circle>
        <Shift>
            <Value>(L:X_Shift, number)</Value>
            <Scale X="1"/>
        </Shift>
        <Shift>
            <Value>(L:Y_Shift, number)</Value>
            <Scale Y="1"/>
        </Shift>
</Element>      

<Element Name="Text Shift">
    <Visible>(L:ShowFormattedText, bool)</Visible>
    <Position X="-24" Y="0"/>
    <FormattedText X="21" Y="7" Font="arial" FontSize="7" LineSpacing="8" Color="blue" BackgroundColor="#C4C4C4" Bright="Yes">
        <String>%((A:PLANE ALTITUDE, feet))%!5d! :ALTITUDE</String>
    </FormattedText>
        <Shift>
            <Value>(L:X_Shift, number)</Value>
            <Scale X="1"/>
        </Shift>
        <Shift>
            <Value>(L:Y_Shift, number)</Value>
            <Scale Y="1"/>
        </Shift>
</Element>
 
So far, zero animation.

This is what I have. It shows up, but its instant on/instantly where it needs to be, then gone. My hopes are to have it slide into view, be visible, then slide out.

Code:
     <Element>
          <Position X="200" Y="0"/>   
             <Image Name="Garmin_Rail_Dial_Down_Pointer_G.bmp" Bright="Yes" ImageSizes="10,12">
              <Axis X="5" Y="12" PointsTo="North" />
                  <Nonlinearity>
                   <Item Value="-600" X="600" Y="0"/>
                   <Item Value="600" X="-600" Y="0"/>
                   </Nonlinearity>
                   </Image>                   
                   <Shift>
                 <Value Minimum="-600" Maximum="600">
                           (L:SyrosOS_Page,enum) 1 ==
                              if{ -600 (>L:TrollyPage1,enum) }
                            els{ 600 (>L:TrollyPage1,enum) }
                 </Value>
               <Delay PixelsPerSecond="9"/>
            </Shift>
      <Element>
      <Visible>(L:SyrosOS_Page,enum) 1 ==</Visible>
       <Image Name="ScreenBackgroundTESTPAGETHREE.bmp"/>
      </Element>
      </Element>

I know that having the 'enum visible' causes an instant-on. I guess what I need is a 'visible active / now slide over to here / hold.. move to off mode, move over to here, turn off visible.
 
what are you trying to accomplish with this part ... ?
Code:
     <Element>
          <Position X="200" Y="0"/> 
             <Image Name="Garmin_Rail_Dial_Down_Pointer_G.bmp" Bright="Yes" ImageSizes="10,12">
              <Axis X="5" Y="12" PointsTo="North" />
                  <Nonlinearity>
                   <Item Value="-600" X="600" Y="0"/>
                   <Item Value="600" X="-600" Y="0"/>
                   </Nonlinearity>
                   </Image>                 
                   <Shift>
                 <Value Minimum="-600" Maximum="600">
                           (L:SyrosOS_Page,enum) 1 ==
                              if{ -600 (>L:TrollyPage1,enum) }
                            els{ 600 (>L:TrollyPage1,enum) }
                 </Value>
               <Delay PixelsPerSecond="9"/>
            </Shift>

Bob
 
what are you trying to accomplish with this part ... ?

Bob


When clicking on the screen the first time, a bitmap graphic showing on it would slide left 1200 pixels.

Then I would know;
* Its showing up
* Its animating with a clickable command

It occurred to me last night, I probably do not need to be worrying about 'visibility.' Just animation. If the part (element graphics) are sliding out of site, and its not rendered, then it might as well be off, right? Its not rendering, so it should be system-dead until its brought back out.
 
Bill,

No idea why you're using <Nonlinearity> and <Delay> but I don't imagine it's working for you, so why don't you just try this ... it's one way to do what you want. You'll get the idea of what can be done with simple 2D gauge XML, but it doesn't exactly look like your iPad, so you will have to decide if it looks good enough.

Attached is a fully functional 500 x 400 2D gauge. Add it in your panel.cfg and click START to start it. Then, please study the XML script to see how <Shift>, <Value>, and <Scale> work, and how an <Update> section can "animate" it.

Bob
 

Attachments

WOW...........................................!

That is showing off! My goodness... Now to find my jaw, which fell off and rolled behind the desk.

A thousand thanks, Bob.... Make that ten thousand thanks...
 
In experimenting with your gauge, I tried to make a variant of one of your variants. I set it to;
* Have a click zone that activates it
* Have it slide over a certain distance
The Element immediately blinks to that new location, then back again when you click the click zone again. So I added a 'Delay' string, and that didnt do anything for making the Element slow down. Just blink to the new location and blink back. I need it to smoothly slide.

This is my code for it;

Code:
    <Element Name="Trolly One">
        <Position X="400" Y="275"/>
        <FormattedText X="200" Y="25" Font="arial bold" FontSize="10" LineSpacing="12" Color="CRIMSON" BackgroundColor="blue" Bright="Yes">
            <String>
                EXPERIMENT WITH THESE PARAMETERS \n
                TO SEE HOW SHIFT, VALUE, AND SCALE WORK
            </String>
        </FormattedText>
            <Shift>
                <Value>(L:TrollyOne, number)</Value>
                <Scale X="-600"/>
            </Shift>
            <Shift>
                <Value>(L:TrollyOne, number)</Value>
                <Scale Y="0"/>
            </Shift>                                 
               <Delay PixelsPerSecond="9"/>
    </Element>


I guess my question is, can I make something that is click-able, that animates smoothly without going through the update section? Is that absolutely required? Can an L:var work in a 2D graphic slider motion slowly with just a click or do I definitely need to go through an Update timer system?

Goodness, I just realized.. I need it to return also via a timer... But some pages will be click on and they stay on, click off and they stay off. Others will be click on, they stay on for a bit, then return home, hiding on the edge out of sight.

Thanks again for this gauge. It really shows me a lot. A huge Christmas gift of information.


By the way, I have a question on. What does 'cos' and 'sin' mean? I see that it makes the dots spin in opposite directions, but what do they do, what do they mean?
(L:Rads2, number) (L:CircleCounter, number) * -1 * cos (L:Radius, number) * 2 * (>L:Circle_XShift2, number)
(L:Rads2, number) (L:CircleCounter, number) * -1 * sin (L:Radius, number) * 2 * (>L:Circle_YShift2, number)

I take it that this is the 'RPM' setting for the dots.

For those following, this is the gauge block;

Code:
<Gauge Name="MULTIPATH" Version="1.0">
<Size X="500" Y="400" />

    <Update Hidden="No">
        20 dgrd d (>L:Rads, number) 2 / (>L:Rads2, number)
        30 (>L:Radius, number)
 
        (L:StartAnimation, bool) 1 ==
            if{
                    (L:CycleCounter, number) ++ (>L:CycleCounter, number)
                 
                            (L:CycleCounter, number) 50 &gt;
                                if{ (L:TextX_Shift, number) -- (>L:TextX_Shift, number) }
                             
                            0 45 (L:CycleCounter, number) rng
                                if{ (L:Poly_XShift, number) ++ (>L:Poly_XShift, number) }
                             
                            46 80 (L:CycleCounter, number) rng
                                if{ (L:Poly_YShift, number) -- (>L:Poly_YShift, number) }
                             
                            81 120 (L:CycleCounter, number) rng
                                if{ (L:Poly_XShift, number) -- (>L:Poly_XShift, number) } 
                             
                            121 171 (L:CycleCounter, number) rng
                                if{ (L:Poly_XShift, number) -- (>L:Poly_XShift, number) (L:Poly_YShift, number) ++ (>L:Poly_YShift, number) } 
                             
                            172 217 (L:CycleCounter, number) rng         
                                if{ (L:Poly_XShift, number) ++ (>L:Poly_XShift, number) }
                             
                            218 269 (L:CycleCounter, number) rng         
                                if{ (L:Poly_YShift, number) -- (>L:Poly_YShift, number) }
                             
                            (L:CycleCounter, number) 270 &gt;=
                                if{
                                    (L:CircleCounter, number) ++ (>L:CircleCounter, number)
                                    (L:Rads, number) (L:CircleCounter, number) * cos (L:Radius, number) * (>L:Circle_XShift, number)
                                    (L:Rads, number) (L:CircleCounter, number) * sin (L:Radius, number) * (>L:Circle_YShift, number)
                                    (L:Rads2, number) (L:CircleCounter, number) * -1 * cos (L:Radius, number) * 2 * (>L:Circle_XShift2, number)
                                    (L:Rads2, number) (L:CircleCounter, number) * -1 * sin (L:Radius, number) * 2 * (>L:Circle_YShift2, number)     
                                }
                             
                            (L:CycleCounter, number) 400 &gt;
                                if{ (L:TextX_Shift2, number) ++ (>L:TextX_Shift2, number) (L:TextY_Shift2, number) ++ (>L:TextY_Shift2, number) }
                             
                            (L:CycleCounter, number) 610 &gt;
                                if{ 0 (>L:StartAnimation, bool) }
            }
    </Update>
     
    <Element Name="B A C K G R O U N D   R E C T A N G L E">     
        <Position X="0" Y="0"/>
        <Rectangle Width="500" Height="400" FillColor="gainsboro" Bright="Yes" />     
    </Element>     
 
    <Element Name="START BUTTON"><Position X="10" Y="360"/><Circle Bright="True" Radius="15" FillColor="%(L:StartAnimation, bool) 0 == if{ 'dodgerblue' } (L:StartAnimation, bool) 0 != if{ 'lime' }" Color="#101010" LineWidth="1"><Axis X="0" Y="0"/></Circle></Element>     
    <Element Name="START"><Position X="45" Y="372"/><FormattedText X="33" Y="9" Font="courier new" FontSize="10" LineSpacing="10" Color="#111111" BackgroundColor="gainsboro" Bright="Yes"><String>START</String></FormattedText></Element>
    <Element Name="Cycle Counter"><Position X="95" Y="372"/><FormattedText X="100" Y="9" Font="courier new" FontSize="10" LineSpacing="10" Color="#111111" BackgroundColor="gainsboro" Bright="Yes"><String>%((L:CycleCounter, enum))%!d! :CYCLES</String></FormattedText></Element>
 
    <Element Name="Polygon Shift">
        <Visible>(L:CycleCounter, number) 270 1 - &lt;</Visible>
        <Position X="250" Y="200"/>
        <Polygon FillColor="red" Color="#010101" LineWidth="1" Bright="Yes"><Point X="0" Y="0"/><Point X="4" Y="0"/><Point X="4" Y="-8"/><Point X="-4" Y="-8"/><Point X="-4" Y="0"/><Point X="0" Y="0"/></Polygon>             
            <Shift>
                <Value>(L:Poly_XShift, number)</Value>
                <Scale X="5"/>
            </Shift>
            <Shift>
                <Value>(L:Poly_YShift, number)</Value>
                <Scale Y="5"/>
            </Shift>
    </Element>  

    <Element Name="Circle Shift">
        <Visible>270 610 (L:CycleCounter, number) rng</Visible>
        <Position X="250" Y="200"/>
            <Circle Bright="True" Radius="5" FillColor="green" Color="green" LineWidth="1">
                <Axis X="0" Y="0"/>
            </Circle>
                <Shift>
                    <Value>(L:Circle_XShift, number)</Value>
                    <Scale X="1"/>
                </Shift>
                <Shift>
                    <Value>(L:Circle_YShift, number)</Value>
                    <Scale Y="1"/>
                </Shift>
    </Element>

    <Element Name="Circle Shift2">
        <Visible>270 610 (L:CycleCounter, number) rng</Visible>
        <Position X="250" Y="200"/>
            <Circle Bright="True" Radius="5" FillColor="blue" Color="blue" LineWidth="1">
                <Axis X="0" Y="0"/>
            </Circle>
                <Shift>
                    <Value>(L:Circle_XShift2, number)</Value>
                    <Scale X="1"/>
                </Shift>
                <Shift>
                    <Value>(L:Circle_YShift2, number)</Value>
                    <Scale Y="1"/>
                </Shift>
    </Element>  

    <Element Name="Text Shift">
        <Visible>(L:CycleCounter, number) 50 &gt;=</Visible>
        <Position X="500" Y="200"/>
        <FormattedText X="425" Y="10" Font="arial bold" FontSize="10" LineSpacing="10" Color="#101010" BackgroundColor="gainsboro" Bright="Yes">
            <String>BILL, THIS IS A WAY TO SHIFT STUFF IN A 2D GAUGE USING Update TO "ANIMATE" IT</String>
        </FormattedText>
            <Shift>
                <Value>(L:TextX_Shift, number)</Value>
                <Scale X="2"/>
            </Shift>
    </Element>
 
    <Element Name="Text Shift2">
        <Visible>(L:CycleCounter, number) 400 &gt;=</Visible>
        <Position X="-200" Y="-15"/>
        <FormattedText X="200" Y="25" Font="arial bold" FontSize="10" LineSpacing="12" Color="CRIMSON" BackgroundColor="gainsboro" Bright="Yes">
            <String>
                EXPERIMENT WITH THESE PARAMETERS \n
                TO SEE HOW SHIFT, VALUE, AND SCALE WORK
            </String>
        </FormattedText>
            <Shift>
                <Value>(L:TextX_Shift2, number)</Value>
                <Scale X="3"/>
            </Shift>
            <Shift>
                <Value>(L:TextY_Shift2, number)</Value>
                <Scale Y="2"/>
            </Shift>                                 
    </Element>
 
            <Element Name="Good Luck">
            <Visible>(L:CycleCounter, number) 610 &gt;=</Visible>
            <Position X="220" Y="200"/>
            <FormattedText X="65" Y="10" Font="arial bold" FontSize="10" LineSpacing="12" Color="#101010" BackgroundColor="gainsboro" Bright="Yes">     
                <String>GOOD LUCK</String>
            </FormattedText>                     
    </Element>

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    <Mouse>             

        <Area Name="Start Animation" Left="10" Top="360" Width="30" Height="30"><Cursor Type="Hand"/>
            <Click Kind="LeftSingle">
                (L:StartAnimation, bool) ! (>L:StartAnimation, bool)
                0 (>L:CycleCounter, number)
                0 (>L:Poly_XShift, number)
                0 (>L:Poly_YShift, number)
                0 (>L:CircleCounter, number)
                0 (>L:TextX_Shift, number)
                0 (>L:TextX_Shift2, number)
                0 (>L:TextY_Shift2, number)
            </Click>
        </Area> 
    </Mouse>
</Gauge>

I took out my trolly click zone and trolly code block so that people can see the gauge purely. Not the experimented-on version.
 
... can I make something ... that animates smoothly without going through the update section? Is that absolutely required?

In a 2D XML gauge, translational movement (i.e., "sliding") of objects in an Element in the x and/or y direction is accomplished using <Shift>. Each gauge update cycle, the object is moved relative to its' initial x, y <Position> by whatever value is in <Shift><Value> during that particular cycle.

To smoothly slide the object, you must continuously change the number found in <Shift><Value>. The easy way do that is to increment an L:Var each gauge update cycle and use that L:Var in the <Value>(L:Var)</Value> expression.

As an example, say the initial position of an object is <Position X="20" Y="5"> and the shift expression is <Shift><Value>(L:Var, number)</Value><Scale X="1"/></Shift>. If, during the current gauge update cycle, L:Var=1, then the object is displayed at x=21, y=5. In the subsequent cycle, if L:Var now equals 2, then the object is displayed at x=22, y=5. It is sliding in the x direction because L:Var continuously changes. Now, if <Scale> had been <Scale X="3"/>, then the x positions would be x=23 and then x=26.

Must the incrementing occur in an <Update> section? No, but continuously changing the number found in <Shift><Value> must occur somewhere and I find <Update> is the most logical and efficient place to do it. Alternatively, you could write:
Code:
<Element Name="Text Shift">
    <Visible>(L:CycleCounter, number) 50 &gt;=</Visible>
    <Position X="500" Y="200"/>
    <FormattedText X="425" Y="10" Font="arial bold" FontSize="10" LineSpacing="10" Color="#101010" BackgroundColor="gainsboro" Bright="Yes">
        <String>BILL, THIS IS A WAY TO SHIFT STUFF IN A 2D GAUGE USING Update TO "ANIMATE" IT</String>
    </FormattedText>
        <Shift>
            <Value>(L:TextShift, number) -- (>L:TextShift, number) (L:TextShift, number)</Value>
            <Scale X="2"/>                        
        </Shift>
</Element>

OR

<Element Name="Text Shift">
   <Visible>(L:CycleCounter, number) 50 &gt;=</Visible>
   <Position X="500" Y="200"/>
   <FormattedText X="425" Y="10" Font="arial bold" FontSize="10" LineSpacing="10" Color="#101010" BackgroundColor="gainsboro" Bright="Yes">
       <String>%((L:TextShift, number) -- (>L:TextShift, number))%BILL, THIS IS A WAY TO SHIFT STUFF IN A 2D GAUGE USING Update TO "ANIMATE" IT</String>
   </FormattedText>
       <Shift>
           <Value>(L:TextShift, number)</Value>
           <Scale X="2"/>                        
       </Shift>
</Element>
without the need for <Update>.

<Scale X="number"/> and <Scale Y="number"/> determine which axis the shift is applied to, and the number acts as a multiplier of the respective <Value>. They do not indicate position, as you thought when you tried <Scale X="-600"/> and <Scale Y="0"/>.

The actions of these parameters are difficult to describe in words alone, so that is why I included a fully functional gauge. It's probably easier to experiment with the gauge XML to understand how <Shift>, <Value>, <Scale> work than to read about it.

What does 'cos' and 'sin' mean?
Trig functions, cosine and sine.

Bob
 
Last edited:
Many thanks Bob. That explains it well. Thats why I see the pulsing in the animations.

I had the idea I could make the Element move calmly, without any pulsing, just like a vertical or horizontal gauge needle in a PFD screen, but those are getting a constant readout of change, which is what this requires. Already, this will be a large gauge with many pages which will include the radios, autopilot, etc. It would probably have a very large Update section.

Man, I want those sliding pages... I wonder, if I make one appear and move.... Then another that appears and moves back in to the hiding slot, while the other disappears as the second appears. This way, I have 'animation to center of gauge' and 'animation to hiding spot'. Two elements. I figure this because from what I see, the Element can only go one way, so it would need two Elements; one that arrives and one that departs. Exchange them in a blink as the page is sent back home to hide.
 
Bill, you would simply run the animation backwards.

For example, you are counting from 0 to 200 to slide out, to slide in you run the counter backwards from 200 to 0. One element, reversing the count.

The page movement will stop when the counter reaches its limit, whatever that might be.
If this is moving the page from right to left,
(L:TextShift, number) -- (>L:TextShift, number)

then this will move the page from left to right!
(L:TextShift, number) ++ (>L:TextShift, number)
 
Thats why I see the pulsing in the animations.
The 'pulsing' observed is due to higher <Scale> values. Using higher <Scale> values, the object appears to move faster, but it isn't as smooth as when <Scale X="1"/>. When you get your pages set up, experiment with different values for scale to see the trade-off between speed and smoothness. Bob
 
Having difficulty coming to grips with the entire timing thing. I dont know why. (My super power is bending polygons and plastering them with paint).

Trying to figure out how to make it be able to return, how that would be done. Would it be two totally different Elements? Another words, two totally different pages? One that slides out, one that slides back out of sight?

This is what I have so far, my latest version. This slides out and stops.



Timers in Updates section
Code:
        (L:TrollyOne, number) 1 ==
            if{

                    0 50 (L:CycleCounterTrolly, number) rng
                        if{ (L:Poly_XShiftTrolly, number) -- (>L:Poly_XShiftTrolly, number) }

                    (L:CycleCounterTrolly, number) ++ (>L:CycleCounterTrolly, number)
                            (L:CycleCounterTrolly, number) 50 &gt;
                                if{ 0 (>L:TrollyOne, number) }
                    (L:TrollyOne, number) 1 ==
                        if{ (L:TrollyAppearance, number) ++ (>L:TrollyAppearance, number) }

                    (L:CycleCounter, number) 610 &gt;
                                                                      if{ 0 (>:TrollyOne, number) }



Code block, bottom stack..
Code:
<!-- TEST TROLLY AAA -->

<Element Name="Text Shift">
   <Position X="500" Y="0"/>
   <Visible>(L:Poly_XShiftTrolly, number) 1 &lt;
   </Visible>
      <Element>
           <Visible>
       0 200 (L:TrollyAppearance, number) rng
           </Visible>
   <Rectangle Width="500" Height="400" FillColor="black" Bright="Yes" />      
       <Shift>
           <Value>(L:Poly_XShiftTrolly, number)</Value>
           <Scale X="5"/>     // speed setting                    
       </Shift>
</Element>
</Element>

Click zone, bottom right.
Code:
        <Area Name="Start Animation" Left="400" Top="360" Width="100" Height="50"><Cursor Type="Hand"/>
            <Click Kind="LeftSingle">
                 (L:TrollyOne, number) ! (>L:TrollyOne, number)                    
            </Click>
        </Area>

My next step is to get it to blip out with a timer that 'expires' and then hides the gauge. Then I will create an interrupter argument or logic that will reset the 'expiration timer', sort of like an Android tablet does when you touch the screen, keeping it from going to sleep. This would keep it from making the page go back out of sight.
 
My gauge bitmap texture (PFD screen) is 1500 pixels wide. So sliding it out from the side needs for the pages to move kind of fast. Like you said earlier in this post, it might look a little choppy. Especially at 1500 pixels and a scale that is pretty high so that its not slow.
 
Back
Top