181 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html lang="en">
 | 
						|
    <head>
 | 
						|
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 | 
						|
 | 
						|
        <title>PIXI Flippable</title>
 | 
						|
 | 
						|
        <link rel="stylesheet" href="../3rdparty/highlight/styles/default.css" />
 | 
						|
        <link rel="stylesheet" href="../../css/doctest.css" />
 | 
						|
 | 
						|
        <script src="../3rdparty/highlight/highlight.pack.js"></script>
 | 
						|
        <script src="../../dist/iwmlib.3rdparty.js"></script>
 | 
						|
 | 
						|
        <script src="../../dist/iwmlib.js"></script>
 | 
						|
        <script src="../../dist/iwmlib.pixi.js"></script>
 | 
						|
 | 
						|
        <script src="../3rdparty/gsap/src/minified/TweenMax.min.js"></script>
 | 
						|
    </head>
 | 
						|
    <body onload="Doctest.run()">
 | 
						|
        <h1><a href="../index.html">lib.</a><a href="index.html">pixi.</a>Flippable</h1>
 | 
						|
        <p>
 | 
						|
            Using the Flippable class, any PIXI element (PIXI.DisplayObject) can be back-mounted (which can include
 | 
						|
            another PIXI.DisplayObject), and turning it over to the back can be adjusted by many parameters in speed and
 | 
						|
            behavior.
 | 
						|
        </p>
 | 
						|
        <p><a href="../../doc/out/Flippable.html">JavaScript API</a></p>
 | 
						|
        <p>Let's look at some flippable examples:</p>
 | 
						|
        <br />
 | 
						|
        <canvas id="canvas" class="interactive"></canvas>
 | 
						|
        <p>What you should see: Six flippable elements and one button.</p>
 | 
						|
        <script class="doctest">
 | 
						|
            const app = new PIXIApp({
 | 
						|
                view: canvas,
 | 
						|
                width: 900,
 | 
						|
                height: 420,
 | 
						|
                transparent: false
 | 
						|
            })
 | 
						|
                .setup()
 | 
						|
                .run()
 | 
						|
 | 
						|
            app.loadTextures(
 | 
						|
                [
 | 
						|
                    './assets/fruit-1.jpg',
 | 
						|
                    './assets/fruit-2.jpg',
 | 
						|
                    './assets/fruit-3.jpg',
 | 
						|
                    './assets/fruit-4.jpg',
 | 
						|
                    './assets/fruit-5.jpg',
 | 
						|
                    './assets/fruit-6.jpg',
 | 
						|
                    './assets/fruit-7.jpg',
 | 
						|
                    './assets/fruit-8.jpg',
 | 
						|
                    './assets/fruit-9.jpg',
 | 
						|
                    './assets/fruit-10.jpg'
 | 
						|
                ],
 | 
						|
                (textures) => {
 | 
						|
                    // Example 1
 | 
						|
                    //--------------------
 | 
						|
                    const sprite1 = new PIXI.Sprite(textures.get('./assets/fruit-1.jpg'))
 | 
						|
                    sprite1.position.set(10, 10)
 | 
						|
                    sprite1.scale.set(0.2, 0.2)
 | 
						|
                    const sprite2 = new PIXI.Sprite(textures.get('./assets/fruit-2.jpg'))
 | 
						|
 | 
						|
                    const flippable1 = new Flippable(sprite1, sprite2, app.renderer)
 | 
						|
 | 
						|
                    // Example 2
 | 
						|
                    //--------------------
 | 
						|
                    const sprite3 = new PIXI.Sprite(textures.get('./assets/fruit-3.jpg'))
 | 
						|
                    sprite3.position.set(10, 120)
 | 
						|
                    sprite3.scale.set(0.2, 0.2)
 | 
						|
                    const sprite4 = new PIXI.Sprite(textures.get('./assets/fruit-4.jpg'))
 | 
						|
 | 
						|
                    const flippable2 = new Flippable(sprite3, sprite4, app.renderer, {
 | 
						|
                        duration: 6,
 | 
						|
                        ease: Bounce.easeOut,
 | 
						|
                        shadow: true,
 | 
						|
                        eulerX: 0.8
 | 
						|
                    })
 | 
						|
 | 
						|
                    // Example 3
 | 
						|
                    //--------------------
 | 
						|
                    const sprite5 = new PIXI.Sprite(textures.get('./assets/fruit-5.jpg'))
 | 
						|
                    sprite5.position.set(10, 240)
 | 
						|
                    sprite5.scale.set(0.2, 0.2)
 | 
						|
                    const sprite6 = new PIXI.Sprite(textures.get('./assets/fruit-6.jpg'))
 | 
						|
                    sprite6.position.set(400, 180)
 | 
						|
                    sprite6.scale.set(0.3, 0.3)
 | 
						|
                    sprite6.rotation = 0.3
 | 
						|
 | 
						|
                    const flippable3 = new Flippable(sprite5, sprite6, app.renderer, {
 | 
						|
                        duration: 4,
 | 
						|
                        ease: Circ.easeInOut,
 | 
						|
                        shadow: true,
 | 
						|
                        useBackTransforms: true
 | 
						|
                    })
 | 
						|
 | 
						|
                    // Example 4
 | 
						|
                    //--------------------
 | 
						|
                    const sprite7 = new PIXI.Sprite(textures.get('./assets/fruit-7.jpg'))
 | 
						|
                    sprite7.position.set(700, 10)
 | 
						|
                    sprite7.scale.set(0.2, 0.2)
 | 
						|
                    const sprite8 = new PIXI.Sprite(textures.get('./assets/fruit-8.jpg'))
 | 
						|
                    sprite8.position.set(550, 180)
 | 
						|
                    sprite8.scale.set(0.15, 0.15)
 | 
						|
                    sprite8.skew.set(0, 0.1)
 | 
						|
 | 
						|
                    const flippable4 = new Flippable(sprite7, sprite8, app.renderer, {
 | 
						|
                        duration: 5,
 | 
						|
                        ease: Elastic.easeOut.config(1, 0.3),
 | 
						|
                        transformEase: Elastic.easeOut.config(1, 0.3),
 | 
						|
                        shadow: true,
 | 
						|
                        focus: 600,
 | 
						|
                        near: 50,
 | 
						|
                        far: 10000,
 | 
						|
                        useBackTransforms: true
 | 
						|
                    })
 | 
						|
 | 
						|
                    // Example 5
 | 
						|
                    //--------------------
 | 
						|
                    const sprite9 = new PIXI.Sprite(textures.get('./assets/fruit-9.jpg'))
 | 
						|
                    sprite9.position.set(700, 130)
 | 
						|
                    sprite9.scale.set(0.2, 0.2)
 | 
						|
                    sprite9.skew.set(0.2, 0.2)
 | 
						|
                    const sprite10 = new PIXI.Sprite(textures.get('./assets/fruit-10.jpg'))
 | 
						|
                    sprite10.position.set(700, 130)
 | 
						|
                    sprite10.scale.set(0.2, 0.2)
 | 
						|
                    sprite10.skew.set(-0.2, -0.2)
 | 
						|
 | 
						|
                    const flippable5 = new Flippable(sprite9, sprite10, app.renderer, {
 | 
						|
                        duration: 2,
 | 
						|
                        useBackTransforms: true
 | 
						|
                    })
 | 
						|
 | 
						|
                    // Example 6
 | 
						|
                    //--------------------
 | 
						|
                    const graphic1 = new PIXI.Graphics()
 | 
						|
                    graphic1.position.set(700, 280)
 | 
						|
                    graphic1.beginFill(0x6b6acf, 1)
 | 
						|
                    graphic1.drawRect(0, 0, 160, 100)
 | 
						|
                    graphic1.lineStyle(1, 0xe7bc51, 1)
 | 
						|
                    for (let i = 0; i < 100; i++) {
 | 
						|
                        graphic1.drawCircle(Math.random() * 160, Math.random() * 100, 2)
 | 
						|
                    }
 | 
						|
 | 
						|
                    const graphic2 = new PIXI.Graphics()
 | 
						|
                    graphic2.position.set(700, 280)
 | 
						|
                    graphic2.beginFill(0xcedc9c, 1)
 | 
						|
                    graphic2.drawRect(0, 0, 160, 100)
 | 
						|
                    for (let i = 0; i < 1000; i++) {
 | 
						|
                        graphic2.beginFill((Math.random() * 0xffffff) << 0, 1)
 | 
						|
                        graphic2.lineStyle(1, (Math.random() * 0xffffff) << 0, 1)
 | 
						|
                        graphic2.drawCircle(Math.random() * 160, Math.random() * 100, 2)
 | 
						|
                    }
 | 
						|
 | 
						|
                    const flippable6 = new Flippable(graphic1, graphic2, app.renderer, {
 | 
						|
                        eulerX: -0.3
 | 
						|
                    })
 | 
						|
 | 
						|
                    // Button
 | 
						|
                    //--------------------
 | 
						|
                    const button = new Button({
 | 
						|
                        x: 400,
 | 
						|
                        y: 10,
 | 
						|
                        label: 'Toggle',
 | 
						|
                        type: 'checkbox',
 | 
						|
                        action: (e) => {
 | 
						|
                            flippable1.toggle()
 | 
						|
                            flippable2.toggle()
 | 
						|
                            flippable3.toggle()
 | 
						|
                            flippable4.toggle()
 | 
						|
                            flippable5.toggle()
 | 
						|
                            flippable6.toggle()
 | 
						|
                        }
 | 
						|
                    })
 | 
						|
 | 
						|
                    app.scene.addChild(sprite1, sprite3, sprite5, sprite7, sprite9, graphic1, button)
 | 
						|
                },
 | 
						|
                { resolutionDependent: false }
 | 
						|
            )
 | 
						|
        </script>
 | 
						|
    </body>
 | 
						|
</html>
 |