πŸ΄β€β˜ οΈ
Башка β˜•
Blog  Tags 
πŸ’€ πŸ”΅ πŸ”΄

🦹🏻 Π’ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² PixiJS

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: 15 августа 2022 Π³.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ visible Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Волько я Ρ…ΠΎΡ‡Ρƒ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ прилоТСния, с диском ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ холста ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, которая Π΄Π΅Π»Π°Π΅Ρ‚ диск Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ.

ΠšΠ°Ρ€ΠΊΠ°Ρ прилоТСния.

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.

shapeRect.on('mouseover', (event) => { });

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

shapeRect.interactive = true;
shapeRect.cursor = 'pointer';
shapeRect.on('mouseover', (event) => {
    // Π΄Π΅Π»Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ тСкста Π±Π΅Π»Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° курсор находится Π² области ΠΊΠ½ΠΎΠΏΠΊΠΈ
  basicText.style.fill = 0xffffff;
});
shapeRect.on('mouseout', (event) => {
  // Π΄Π΅Π»Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ тСкста Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° курсор Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ
  basicText.style.fill = 0;
});

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ скрытиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

shapeRect.on('click', (event) => {
  shapeCircle.visible = shapeCircle.visible ? false : true;
});

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π£ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ)
Но это Π΅Ρ‰Ρ‘ Π½Π΅ всё. Π₯ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ диск ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π» ΠΏΠ»Π°Π²Π½ΠΎ.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ влияСт ΠΈ Π½Π° ΠΎΠ±Π²ΠΎΠ΄ΠΊΡƒ ΠΈ Π½Π° Π·Π°Π»ΠΈΠ²ΠΊΡƒ. НазываСтся ΠΎΠ½ alpha.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ появлСния/исчСзновСния Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΊΠΎΠ΄.
Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cirleVisible, внСсём измСнСния Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ click, ΠΈ напишСм Ρ‚ΠΈΠΊΠ΅Ρ€.

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;
  }
});

НСплохо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π½Π΅ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?)