Animation Sample - xkp/Doc GitHub Wiki

Application definition:

    <application source="anim-test.xs" width="640" height="400" title="">
        <resources>
            <resource src="images/img.png"/>
        </resources>
        
        <sequence id="test_anim">
            <at time="0">
                <animate property="img1.x">
                    <keys>
                        <key t="0" value="20"/>
                        <key t="1" value="150"/>
                        <key t="4" value="20"/>
                    </keys>
                </animate>
                <animate property="img1.y" from="20" to="150" in="3"/>
            </at>
            
            <at time="2">
                <run sequence="grow"/>
            </at>
            
            <sequence id="grow">
                <at time="0">
                    <animate property="img1.width"  from="10" to="200" in="5"/>
                    <animate property="img1.height" from="10" to="200" in="5"/>
                </at>
            </sequence>
            
            <when expr="img1.width >= 100">
                <run method="shrink"/>
            </when>

            <when expr="img1.width <= 30">
                <run sequence="grow"/>
            </when>
        </sequence>
      
        <img id="img1" src="images/img.png" x="0" y="0" width="30" height="30"/>
    </application>

Code:

on img1.click()
{
	test_anim.start();
}

Output:

<!DOCTYPE html>

<html>

<head>

<title></title>

<script type="text/javascript" src="js/jquery-1.4.2.min.js" ></script>
<script type="text/javascript" src="js/jquery.utils.js"></script>
<script type="text/javascript" src="js/utils.js"></script>
<script type="text/javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/ms-ui.js"></script>
<script type="text/javascript" src="js/ms-streamer.js"></script>
<script type="text/javascript" src="js/ms-state.js"></script>

<script type="text/javascript">			
var g_ui;
var g_elapsed = 0;
var g_delta = 0.0;
var g_canvas;

function default_interpolate(a, b, t)
{
    return a + (b - a)*t;
}

function start(resolution)  
{  
	var start = new Date().getTime();  
	function update()  
	{  
		var now   = new Date().getTime();
		g_delta  = now - g_elapsed;  
		g_elapsed = now; 
              
		var context = g_canvas.getContext('2d');
		g_ui.update(g_delta, context);
        
        update_sequences(g_delta);
              
		window.setTimeout(update, resolution);  
	}  
	window.setTimeout(update, resolution);  
}  

var g_sequences = [];
function update_sequences(delta)
{
    
	for(var i = 0; i < g_sequences.length; i++)
	{
		var seq = g_sequences[i]
		if (seq.running)
			seq.update(delta);
	}
}

window.onload = function() 
{
	var drawingCanvas = document.getElementById("myCanvas");
        
	g_canvas = drawingCanvas;
	if (drawingCanvas && drawingCanvas.getContext)
	{
		var client =
		{
			width: 640,
			height: 400,
			canvas: drawingCanvas
		};
            
		var streamer = new ms.streamer.Streamer();
		var ui = new ms.ui.Manager(client, streamer);
		g_ui = ui;

		var images = 
		[
            'images/img.png',
		];
      
		ui.load_images(images, function()
		{
			drawingCanvas.onmousemove = function(ev)
			{
				ui.mouse_move(ev.clientX, ev.clientY);                  
			};

			drawingCanvas.onmousedown = function(ev)
			{
				ui.mouse_down(ev.clientX, ev.clientY);                  
			};

			drawingCanvas.onmouseup = function(ev)
			{
				ui.mouse_up(ev.clientX, ev.clientY);                  
			};


			var application = ui.root;
            var img1 = application.newImage('images/img.png');
            img1.rect(0, 0, 30, 30);
            img1.click = function()
            {    
                test_anim.start();
            };
        
            application.rect(0, 0, 640, 400);
        
            var test_anim = new ms.state.Sequence();
            g_sequences.push(test_anim);
            var ____i1 = new ms.state.Interpolator(
                "x", 
                default_interpolate,
                function(value)
                {
                    img1.set_x(value);
                },
                [
                    {t: 0, value: 20},
                    {t: 1, value: 150},
                    {t: 4, value: 20},
                ]);
            test_anim.addAction(img1, "x", new ms.state.State(0, 4, ____i1));                    
            
            var ____i2 = new ms.state.Interpolator(
                "y", 
                default_interpolate,
                function(value)
                {
                    img1.set_y(value);
                },
                [
                    {t: 0, value: 20},
                    {t: 3, value: 150},
                ]);
            test_anim.addAction(img1, "y", new ms.state.State(0, 3, ____i2));                    
            
            var grow = new ms.state.Sequence();
            g_sequences.push(grow);
            var ____i3 = new ms.state.Interpolator(
                "width", 
                default_interpolate,
                function(value)
                {
                    img1.set_width(value);
                },
                [
                    {t: 0, value: 10},
                    {t: 5, value: 200},
                ]);
            grow.addAction(img1, "width", new ms.state.State(0, 5, ____i3));                    
            
            var ____i4 = new ms.state.Interpolator(
                "height", 
                default_interpolate,
                function(value)
                {
                    img1.set_height(value);
                },
                [
                    {t: 0, value: 10},
                    {t: 5, value: 200},
                ]);
            grow.addAction(img1, "height", new ms.state.State(0, 5, ____i4));                    
            
    
			start();
			ui.draw(drawingCanvas.getContext('2d'));
		});
	}
}
</script>

</head>

<body>

	<canvas id="myCanvas" width="640" height="400">

		<p>Your browser doesn't support canvas.</p>

	</canvas>

</body>

</html>
⚠️ **GitHub.com Fallback** ⚠️