--- title: "🦹🏻 Π’ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² PixiJS" date: 2022-08-15T02:13:35+03:00 draft: false tags: [pixijs, javascript, gamedev, tutorial] --- Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `visible` Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Волько я Ρ…ΠΎΡ‡Ρƒ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ прилоТСния, с диском ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ холста ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, которая Π΄Π΅Π»Π°Π΅Ρ‚ диск Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ. ΠšΠ°Ρ€ΠΊΠ°Ρ прилоТСния. ```javascript let app = new PIXI.Application({ width: 400, height: 400, backgroundColor: 0x2a2a3a }); document.body.appendChild(app.view); const shapeCircle = new PIXI.Graphics(); const shapeRect = new PIXI.Graphics(); shapeCircle.lineStyle(4, 0x101024, 1); shapeCircle.beginFill(0xec8a4b, 1); shapeCircle.drawCircle(app.screen.width / 2, app.screen.height / 2, 50); shapeCircle.endFill(); shapeRect.lineStyle(2, 0x101024, 1); shapeRect.beginFill(0xDE3249); shapeRect.drawRect(app.screen.width / 2 - 100, app.screen.height - 100, 200, 50); shapeRect.endFill(); const basicText = new PIXI.Text('On / Off'); basicText.anchor.set(0.5); basicText.x = app.screen.width / 2; basicText.y = app.screen.height - 75; app.stage.addChild(shapeCircle, shapeRect, basicText); ``` Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π₯ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° Π½Π΅Ρ‘ Ρ†Π²Π΅Ρ‚ тСкст измСнялся. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ `mouseover`. ```javascript shapeRect.on('mouseover', (event) => { }); ``` Π’ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ```javascript shapeRect.interactive = true; shapeRect.cursor = 'pointer'; shapeRect.on('mouseover', (event) => { // Π΄Π΅Π»Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ тСкста Π±Π΅Π»Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° курсор находится Π² области ΠΊΠ½ΠΎΠΏΠΊΠΈ basicText.style.fill = 0xffffff; }); shapeRect.on('mouseout', (event) => { // Π΄Π΅Π»Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ тСкста Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° курсор Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ basicText.style.fill = 0; }); ``` Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ скрытиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. ```javascript shapeRect.on('click', (event) => { shapeCircle.visible = shapeCircle.visible ? false : true; }); ``` ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π£ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ) Но это Π΅Ρ‰Ρ‘ Π½Π΅ всё. Π₯ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ диск ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π» ΠΏΠ»Π°Π²Π½ΠΎ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ влияСт ΠΈ Π½Π° ΠΎΠ±Π²ΠΎΠ΄ΠΊΡƒ ΠΈ Π½Π° Π·Π°Π»ΠΈΠ²ΠΊΡƒ. НазываСтся ΠΎΠ½ `alpha`. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ появлСния/исчСзновСния Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΊΠΎΠ΄. Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ `cirleVisible`, внСсём измСнСния Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ `click`, ΠΈ напишСм Ρ‚ΠΈΠΊΠ΅Ρ€. ```javascript let cirleVisible = true; shapeRect.on('click', (event) => { cirleVisible = cirleVisible ? false : true; // shapeCircle.visible = shapeCircle.visible ? false : true; }); app.ticker.add((delta) => { if (cirleVisible) { if (shapeCircle.alpha < 1) { shapeCircle.visible = true; shapeCircle.alpha += 0.05; } } else { if (shapeCircle.alpha > 0) shapeCircle.alpha -= 0.05; else shapeCircle.visible = false; } }); ``` НСплохо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π½Π΅ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?)