iwmlib/pixi/flippable.html
2019-03-21 09:57:27 +01:00

175 lines
5.2 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="../3rdparty/all.js"></script>
<script src="../all.js"></script>
<script src="./all.js"></script>
</head>
<body onload="Doctest.run()">
<h1>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(.2, .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(.2, .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: .8
})
// Example 3
//--------------------
const sprite5 = new PIXI.Sprite(textures.get('./assets/fruit-5.jpg'))
sprite5.position.set(10, 240)
sprite5.scale.set(.2, .2)
const sprite6 = new PIXI.Sprite(textures.get('./assets/fruit-6.jpg'))
sprite6.position.set(400, 180)
sprite6.scale.set(.3, .3)
sprite6.rotation = .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(.2, .2)
const sprite8 = new PIXI.Sprite(textures.get('./assets/fruit-8.jpg'))
sprite8.position.set(550, 180)
sprite8.scale.set(.15, .15)
sprite8.skew.set(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(.2, .2)
sprite9.skew.set(.2, .2)
const sprite10 = new PIXI.Sprite(textures.get('./assets/fruit-10.jpg'))
sprite10.position.set(700, 130)
sprite10.scale.set(.2, .2)
sprite10.skew.set(-.2, -.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: -.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>