93 lines
3.3 KiB
HTML
93 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>PIXI LabeledGraphics</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>
|
|
</head>
|
|
<body onload="Doctest.run()">
|
|
<h1><a href="../index.html">lib.</a><a href="index.html">pixi.</a>LabeledGraphics</h1>
|
|
<p>
|
|
A labeled graphics extends the PIXI.Graphics class with an ensureLabel method that allows to place and reuse
|
|
labels, i.e. PIXI.Text objects. The labels are cached by a given key and only rendered anew if necessary.
|
|
</p>
|
|
<p><a href="../../doc/out/LabeledGraphics.html">JavaScript API</a></p>
|
|
<p>Let's look at an example:</p>
|
|
<br />
|
|
<canvas id="canvas1" class="interactive"></canvas>
|
|
<p>What you should see: A box with a label.</p>
|
|
<script class="doctest">
|
|
const app = new PIXIApp({
|
|
view: canvas1,
|
|
width: 900,
|
|
height: 150
|
|
})
|
|
.setup()
|
|
.run()
|
|
|
|
const labeledBox = new LabeledGraphics()
|
|
labeledBox.ensureLabel('key', 'This is a label in a box', { justify: 'top' })
|
|
labeledBox.beginFill(0x333333)
|
|
labeledBox.drawRect(0, 0, 300, 100)
|
|
labeledBox.endFill()
|
|
|
|
app.scene.addChild(labeledBox)
|
|
</script>
|
|
<h2>Zoomable Labels</h2>
|
|
<p>
|
|
Labeled graphics can also be used to represent zoomable text columns in more complex layouts. Use the
|
|
mousewheel to zoom the following text column:
|
|
</p>
|
|
|
|
<canvas id="canvas2" class="interactive"></canvas>
|
|
<script class="doctest">
|
|
const app2 = new PIXIApp({
|
|
view: canvas2,
|
|
width: 900,
|
|
height: 150
|
|
})
|
|
.setup()
|
|
.run()
|
|
|
|
const loremIpsum = `Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
|
|
At vero eos et accusam et justo duo dolores et ea rebum.`
|
|
|
|
const column = new LabeledGraphics()
|
|
const text = column.ensureLabel('key', loremIpsum, {
|
|
maxWidth: 250,
|
|
zoomFonts: true,
|
|
justify: 'top',
|
|
align: 'align'
|
|
})
|
|
column.beginFill(0x333333)
|
|
column.drawRect(0, 0, 900, 150)
|
|
column.endFill()
|
|
|
|
column.interactive = true
|
|
text.interactive = true
|
|
text.getLocalBounds()
|
|
|
|
text.on('zoom', (event) => {
|
|
let factor = 1.0 + event.wheelDelta / 1000
|
|
text.zoom(factor)
|
|
})
|
|
|
|
app2.view.addEventListener('mousewheel', (event) => {
|
|
text.emit('zoom', event)
|
|
event.preventDefault()
|
|
})
|
|
|
|
app2.scene.addChild(column)
|
|
</script>
|
|
</body>
|
|
</html>
|