Pixi.js: рдкреИрд░реЗрдВрдЯ рдХрдВрдЯреЗрдирд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдмрдврд╝рд╛рдП рдмрд┐рдирд╛ рд░рд╛рдЗрдЯ-рдЕрд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЕрдЧре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pixijs/pixi.js

рд╣рд╛рдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦрд╛: #4341, #4002, #3476

рдореИрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

anchor.x = 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://jsfiddle.net/r63ud8yL/1/

const app = new PIXI.Application({resizeTo: document.body, backgroundColor: 0xFFFFFF})
document.body.append(app.view)

// Forcing app.stage to occupy width of screen
// Is there a better way to do this?
const neCorner = new PIXI.Sprite()
neCorner.x = 0
neCorner.y = 0
const swCorner = new PIXI.Sprite()
swCorner.x = document.body.clientWidth
swCorner.y = document.body.clientHeight
app.stage.addChild(neCorner, swCorner)

const text = new PIXI.Text('first')
app.stage.addChild(text)
text.anchor.x = 1

// Align text to right edge
text.x = app.stage.width

// Replacing text with a longer string
text.text = 'second'
// It extends past the edge of the window; only 'sec' is visible

(stage.width - text.width) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░рд╛ рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣реИ:
https://jsfiddle.net/r63ud8yL/2/

const app = new PIXI.Application({resizeTo: document.body, backgroundColor: 0xFFFFFF})
document.body.append(app.view)

// Forcing app.stage to occupy width of screen
// Is there a better way to do this?
const neCorner = new PIXI.Sprite()
neCorner.x = 0
neCorner.y = 0
const swCorner = new PIXI.Sprite()
swCorner.x = document.body.clientWidth
swCorner.y = document.body.clientHeight
app.stage.addChild(neCorner, swCorner)

const text = new PIXI.Text('first')
app.stage.addChild(text)

// Align text to right edge
text.x = (app.stage.width - text.width)

// Replacing text with a longer string
// It extends past the edge of the window; only 'sec' is visible
text.text = 'second'

// Attempting to align text to right edge again...
text.x = (app.stage.width - text.width)
// ...but the longer text expanded the width of app.stage
// so still only 'sec' is visible

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ app.stage рдХреА рдореВрд▓ рдЪреМрдбрд╝рд╛рдИ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕ рдкрд░ рдЕрдкрдирд╛ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рдорд╛рди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдпреА рдПрдВрдХрд░ рд╕реЗ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ "рдкреНрд░рд╡рд╛рд╣" рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдХрджрдо рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

рд╡рд╛рддрд╛рд╡рд░рдг

  • pixi.js рд╕рдВрд╕реНрдХрд░рдг : 5.1.0
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг : 75.0.3770.142
  • рдУрдПрд╕ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг : рдореИрдХрдмреБрдХ рдкреНрд░реЛ, рдУрдПрд╕ 10.13.6
  • рд░рдирд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг : https://jsfiddle.net/r63ud8yL/1/ , https://jsfiddle.net/r63ud8yL/2/

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИ? (рдпрджрд┐ рдореВрд▓ рд╕реАрдорд╛ рд╕реНрдерд┐рд░ рд╣реИред)

https://jsfiddle.net/5o0yjusv/

рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕реАрдорд╛рдПрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рддреА рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рда рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

https://jsfiddle.net/2xwb9yk8/

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд▓реЗрдирд╛ рд╣реИ: https://jsfiddle.net/b9zp5kuh/

рд╕реАрдзреЗ рд░реЗрдВрдбрд░рд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд╛рдПрдВред

рдзрдиреНрдпрд╡рд╛рдж, @themoonrat ред рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд▓рд╛ рджрд┐рдпрд╛ред рдореИрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ app.screen рдХреЗ рдмрдЬрд╛рдп app.renderer ред рдореЗрд░рд╛ window.devicePixelRatio 2 рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реЗрдВрдбрд░рд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдореЗрд░реА рд╡рд┐рдВрдбреЛ рдХреА "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдЪреМрдбрд╝рд╛рдИ рд╕реЗ 2x рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, app.screen 1x рд╣реИред

рд╣рд╛рдБ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ! рдХреБрдЫ рднреА 'рдкрд┐рдирд┐рдВрдЧ' рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рдЯреАрдХ рдЬреНрдЮрд╛рдд рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдЪреМрдбрд╝рд╛рдИ/рдКрдВрдЪрд╛рдИ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд╣реЛрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lucap86 picture lucap86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SebastienFPRousseau picture SebastienFPRousseau  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

distinctdan picture distinctdan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

readygosports picture readygosports  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Darker picture Darker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ