LibCanvas рдореВрд▓ рдмрд╛рддреЗрдВ - рд╕рд┐рджреНрдзрд╛рдВрдд



рд╢реБрдн рджреЛрдкрд╣рд░ LibCanvas рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ "рдЕрдм рдХрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ?"ред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рджрд╣рд▓реАрдЬ рд╕рд░рд▓ рдХреИрдирд╡рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдореИрдВ LibCanvas рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкреНрд░рдХрдЯ рдХрд░реВрдВрдЧрд╛ - рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд, рдЖрджрд┐рдо рдЖрдХреГрддрд┐рдпреЛрдВ, рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдУрдВ, рдХреАрдмреЛрд░реНрдб, рдПрдиреАрдореЗрд╢рди, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрджрд░реНрдн, рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛ред рдореИрдВ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рд╕рдмрд╕реЗ рд╕реБрд▓рдн рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджрд┐рдП рдЧрдП рд╣реИрдВ: рд▓рд┐рдмрд╛рд╕рдирд╡рд╛рд╕ рдХреНрдпрд╛ рд╣реИ? рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВ? рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ?

рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЗрд╕рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА


LibCanvas рдХреИрдирд╡рд╛рд╕ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЗрдо рдФрд░ рдЕрдиреНрдп рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ AtomJS рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдПрдХ рд╣рд▓реНрдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдврд╛рдВрдЪрд╛ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ MooTools рдФрд░ jQuery рдХреЗ рд╕рдорд╛рди рд╣реИред рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА AtomJS рдкреНрд░рд▓реЗрдЦрди рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ MooTools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП AtomJS рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред

LibCanvas рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЧреАрдерд╣рдм рдкрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╕реЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рддрдХ рдХрдИ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ ред рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдХрдИ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░реВрд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ , рд▓реЗрдХрд┐рди рд▓рд┐рдмрдХрдирд╡рд╛рд╕ рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЗ рдЕрднреА рддрдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рд╕рдордп рдХреЗ рд╕рд╛рде, рдпрд╣ рднрд░ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдореЗрд░реА рдорджрдж рдХреА)

рдХреЛрд░


рд╕рднреА рдХреЛрдб LibCanvas рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЦрд╛рдореА рд╣реИ - рдХреНрд░рд┐рдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрдВрдд рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
var circle = new LibCanvas.Shapes.Circle( 100, 100, 50 ); var circle = new LibCanvas.Shapes.Circle( 222, 222, 22 ); 


рдпрд╣ рд╕реНрдерд┐рд░ LibCanvas.extract () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдпрдВ LibCanvas рдХреЛ рд╡реИрд╢реНрд╡реАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд▓рдШреБ рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ:
 LibCanvas.extract(); var circle = new Circle( 100, 100, 50 ); var circle = new Circle( 222, 222, 22 ); 


рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ:
 var Circle = LibCanvas.Shapes.Circle; var circle1 = new Circle( 100, 100, 50 ); var circle2 = new Circle( 222, 222, 22 ); 


LibCanvas.Context2D


рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LibCanvas рд╕рдВрджрд░реНрдн рд╣реИред рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
 var context = document.getElementsByTagName('canvas')[0].getContext('2d-libcanvas'); // or: var context = atom.dom('canvas').first.getContext('2d-libcanvas'); 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореВрд▓ '2 рдбреА' рд╕рдВрджрд░реНрдн рдЕрднреА рднреА рд╕реБрд▓рдн рд╣реИ рдФрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 var context = atom.dom('canvas').first.getContext('2d'); 


'2d-libcanvas' рд╕рдВрджрд░реНрдн рдореВрд▓ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ ('2d-libcanvas' рд╕рдВрджрд░реНрдн рдореЗрдВ '2d' рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдХреЛрдб) рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдирд┐рдореНрди рдлрд╛рдпрджреЗ рд╣реИрдВ:
1. рдЪреЗрдиреЗрдмрд▓ - рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдЪреЗрди рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрд░реАрдХрд╛ jQuery рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛:
 context .set({ fillStyle: 'black', strokeStyle: 'red' }) . fillRect(20, 20, 40, 40) .strokeRect(50, 50, 100, 100); 


2. рдирд╛рдорд╛рдВрдХрд┐рдд рддрд░реНрдХ - рдЕрдм рдЖрдк рди рдХреЗрд╡рд▓ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╣реИрд╢:
 context.drawImage(img, 10, 15, 40, 45, 20, 25, 50, 55); // vs context.drawImage({ image: img, crop : [10, 15, 40, 45], draw : [20, 25, 50, 50] }); 


3. рдЖрдХреГрддрд┐рдпрд╛рдБ - рдЖрдк рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдирд╣реАрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ:
 //  : context.drawImage( image, rect.from.x, rect.from.y, rect.width, rect.height ); // vs context.drawImage( image, rect ); //      : context.save(); context.fillStyle = 'red'; context.fillRect( rect.from.x, rect.from.y, rect.width, rect.height ) context.restore(); // vs: context.fill( rect, 'red' ); 


4. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдкреАрдЖрдИ - рдпрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрде, рдкрд╛рда, рдЪрд┐рддреНрд░, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдпред:
 //      ,   : // original ctx: context.save(); context.translate(this.position.x, this.position.y); context.rotate(this.angle); context.translate(-this.image.width/2, -this.image.height/2); context.drawImage(this.image, 0, 0); context.restore(); // vs context.drawImage({ image : this.image, center: this.position, angle : this.angle }); // : context.text({ text: 'Test string \n with line breaks \n is here' padding: [ 30, 50 ], size: 20, align: 'center' }) //    : context.translate( point.x, point.y); context.rotate(angle); context.translate(-point.x, -point.y); // vs: context.rotate( angle, point ); //   context.beginPath( ); context.moveTo( mt.x, mt.y ); context.lineTo( lt.x, lt.y ); context.bezierCurveTo( bc1.x, bc1.y, bc2.x, bc2.y, bc.x, bc.y ); context.quadraticCurveTo( qc1.x, qc1.y, qc.x, qc.y ); context.closePath(); // vs context .beginPath( mt ) .lineTo( lt ); .curveTo( bc, bc1, bc2 ) .curveTo( qc, qc1 ) .closePath(); //  : var circle = new Circle( 130, 120, 50 ); context.beginPath(); context.arc( circle.center.x, circle.center.y, circle.radius, 0, Math.PI * 2 ); context.closePath(); context.clip(); // vs: context.clip( circle ); //   : context.clear( 0, 0, canvas.width, canvas.height ); // vs context.clearAll(); 


рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрджрд░реНрдн рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрдЦрддреЗ рд╣реИрдВред

LibCanvas рд╡рд╕реНрддреБ


LibCanvas рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ LibCanvas.Canvas2D рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рддрд░реНрдХ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХреИрдирд╡рд╛рд╕ рддрддреНрд╡ (рд╕реАрдПрд╕рдПрд╕-рдЪрдпрдирдХрд░реНрддрд╛, рдбреЛрдо-рдСрдмреНрдЬреЗрдХреНрдЯ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рджреВрд╕рд░реА - рдПрдлрдкреАрдПрд╕ рд╕реАрдорд╛ рдкрд░, рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдлрд╛рдИ, рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
 var libcanvas = new LibCanvas('#my-canvas'); libcanvas instanceof LibCanvas; // true libcanvas instanceof LibCanvas.Canvas2D; // true //      : libcanvas.ctx instanceof LibCanvas.Context2D; // true 


рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рджреЛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╣реИред рдпрд╣ рд╣рд░ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ - рд╡рд╕реНрддреБрдУрдВ, рдЯрдХрд░рд╛рд╡реЛрдВ рдЖрджрд┐ рдХреА рдЧрддрд┐ред рдЗрд╕ рд▓реЗрдпрд░ рдореЗрдВ рдХреЛрдИ рд░рд┐рдбреНрд░рд╛рд╕реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░рд╛ рдЪрд░рдг рдПрдХ рд░реЗрдВрдбрд░ рд╣реИред рдЗрд╕рдореЗрдВ рд╡рд╣ рднрд╛рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ libcanvas.update() рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк libcanvas.addRender() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк libcanvas.addRender() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдбреНрд░рд╛ рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 libcanvas .addFunc(function () { scene.recount(); if (scene.somethingChanged()) { libcanvas.update(); } }) .addRender(function () { //      libcanvas.update(); scene.drawAll(); }); 


рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ - рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреБрдирд░реНрд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд╕реНрдерд┐рд░ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╡реНрдпрд░реНрде рднрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, addRender рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ draw() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред

рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рд╣реА рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдирдпрд╛ рдХрд░реЗрдВред рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдРрд╕рд╛ рдмреБрдирд┐рдпрд╛рджреА рддрдВрддреНрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред

рдкреНрд╡рд╛рдЗрдВрдЯ


LibCanvas.Point рдореВрд▓ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рдШрдЯрдХ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ ред рдЗрд╕рдореЗрдВ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА, рдПрдХ рдХреЛрдг, рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдФрд░ рд╕рднреА рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рд╣реИрдВред

 //   A  60    B: var A = new Point(10, 10), B = new Point(20, 20); A.rotate( (60).degree(), B ); //        : var sum = 0 + matrix[py-1][px-1] + matrix[py-1][px] + matrix[py-1][p.x+1] + matrix[py ][px-1] + matrix[py ][p.x+1] + matrix[p.y+1][px-1] + matrix[p.y+1][px] + matrix[p.y+1][p.x+1] ; // vs var sum = point.neighbours.reduce(function(value, p) { return value + matrix[py][px]; }, 0); 


рдЖрдВрдХрдбрд╝реЗ


LibCanvas.Shapes.* рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ LibCanvas.Shapes.* рдФрд░ рдЫреЛрдЯреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВред рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЖрдВрдХрдбрд╝реЗ Rectangle , Circle , Line ред LibCanvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп - рдЖрдкрдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд░рдВрдЧ - рд░реВрдк рдпрд╛ рдЫрд╛рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд╕реНрддреБ рдЬреЛ рдХрд┐рд╕реА рдЖрдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LibCanvas.Ui.Shaper, рдЬрдмрдХрд┐ рдЖрдВрдХрдбрд╝реЗ рд╕реНрд╡рдпрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ - рдПрдХ рдкрде, рдЪреМрд░рд╛рд╣реЛрдВ рдкрд░ рдХреИрд╕реЗ рдЬрд╛рдПрдВ, рдХреНрдпрд╛ рдПрдХ рдмрд┐рдВрджреБ рдЖрдВрдХрдбрд╝рд╛ рдХреЗ рдЕрдВрджрд░ рд╣реИ, рдЖрджрд┐ред рд╡реЗ рдПрдХ рд╕реВрдХреНрд╖реНрдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рднреМрддрд┐рдХ рд╢рд░реАрд░ рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣ рдЖрдкрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдиреНрджреВрдХ рдореЗрдВ рдПрдХ рдмреЛрд░реНрдб рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрдХреГрддрд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 var Unit = atom.Class({ initialize: function (rectangle, image) { this.shape = rectangle; this.image = image; }, collision: function (anotherUnit) { return this.shape.intersect( anotherUnit.shape ); }, draw: function () { this.libcanvas.ctx.drawImage( this.image, this.shape ); } }); 


Rectangle рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрдВрдХрдбрд╝рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдЖрдпрддреЛрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдмрд▓реНрдХрд┐ рд▓рд┐рдмрдХрдирд╡рд╛рд╕ рдХреА рдХрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрднред рдирд┐рдХрд╛рд╕реА рд╡рд┐рдзрд┐, рдЬреЛ рдХрд╛рдЯрдиреЗ рдФрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрдд рдпрд╛ рдЯрд╛рдЗрд▓ рдЗрдВрдЬрди рд▓реЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдЫреЛрдЯрд╛ рдЖрдпрдд рд╣реИред

рдЬрдм рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЖрдпрдд рдЬреИрд╕реЗ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд╣ рдЖрдпрдд рдХреА рддрд░рд╣ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 context.drawImage({ image: image, crop: { from: { x: 15, y: 10 }, size: { width: 50, height: 100 } }, draw: [10,20,100,200] }); 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╕рд▓ рдФрд░ рдбреНрд░рд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдпрдд (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рдЖрдВрдХрдбрд╝реЗ) рддрдХ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ (рдХреИрдирд╡рд╛рд╕ рдХреЗ рдХрдИ рд░рд┐рдбреНрд░рд╛рд╡рд╛ рдХреЗ рд╕рд╛рде), рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рдмрд╕реЗ рд▓рд╛рднрджрд╛рдпрдХ рд╡рд┐рдзрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рдЖрд╡реЗрджрдиред рдпрд╣ рдирд┐рд░реНрдгрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 var Item = atom.Class({ initialize: function (image) { this.image = image; this.cropRect = new Rectangle(15, 10, 50, 100); this.drawRect = new Rectangle(10, 20, 100, 200); }, draw: function () { context.drawImage({ image: this.image, crop : this.cropRect, draw : this.drawRect }); } }); 


рдЕрдиреНрдп рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рднреА рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 // : context.arc({ circle: new Circle( 100, 100, 50 ), angle : [ (45).degree(), (135).degree() ] }); //  : context.stroke( new Line([13, 13], [42, 42]), 'red' ); 


рд╡реНрдпрд╡рд╣рд╛рд░


рдЕрдЧрд▓рд╛ рднрд╛рдЧ LibCanvas.Behaviors.* ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рд╢рдВрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Animatable рдПрдХ animate рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдбреНрд░рд╛рдПрдмрд▓ рдЖрдкрдХреЗ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ LibCanvas рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╡реИрд╕реЗ, рдпрд╣ рдбреНрд░рд╛рдмрд▓ рд╣реИ рдЬреЛ рд▓рд┐рдмрдХрдирд╡рд╛рд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдбреНрд░рд╛рдПрдмрд▓ рдФрд░ рдЖрдХрд╛рд░ рдХрд╛ рдорд┐рд╢реНрд░рдгред * рдЖрдкрдХреЛ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЖрдХреГрддрд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдЖрдХрд╛рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрдЧрд╛ред
 var Item = atom.Class({ Implements: [ Drawable, Draggable ], initialize: function (shape) { this.shape = shape; }, draw: function () { this.libcanvas.ctx.stroke( this.shape, 'red' ); } }); libcanvas.addElement( new Item( new Rectangle(50, 50, 100, 100) ).draggable() ); 


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдбреНрд░рд╛рдЗрдВрдЧ рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдкреИрдЯрд░реНрди рдЕрдХреНрд╕рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ Ui.Shaper рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ:

 libcanvas.createShaper({ shape : new Rectangle(50, 50, 100, 100), stroke: 'red' }).draggable(); 


рдХреАрдмреЛрд░реНрдб рдФрд░ рдорд╛рдЙрд╕


рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп libcanvas.listenKeyboard() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдХреБрдВрдЬреА рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП libcanvas.getKey( keyName ) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 update: function () { if( this.libcanvas.getKey('aup') ) { this.move(); } } 


рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдорд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ libcanvas.listenMouse() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЙрд╕ рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдм рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдорд╛рдЙрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдорд╛рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:
 this.libcanvas.mouse.subscribe( element ); 


рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдЖрдХрд╛рд░ ( LibCanvas.Shapes.* ) рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, ZIndex рд╕рдВрдкрддреНрддрд┐, рдФрд░ рдпрд╣ atom.Class.Events рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рд╕рдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Draggable рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ draggable() рддрд░реАрдХрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ MouseListener рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рддрддреНрд╡ listenMouse рд╡рд┐рдзрд┐ listenMouse рдХреЙрд▓ рдХрд░реЗрдВред рдлрд┐рд░ рднреА, рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдЕрднреА рднреА рдмрдирд╛ рд╣реБрдЖ рд╣реИ - рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде Shape рдЧреБрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдЖрдкрдХреА рд╡рд╕реНрддреБ рдкрд░ рдорд╛рдЙрд╕ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:

 /* - click - mouseover - mousemove - mouseout - mouseup - mousedown - away:mouseover - away:mousemove - away:mouseout - away:mouseup - away:mousedown */ // : element .listenMouse() .addEvent('click', function () { alert('element clicked'); }); 


рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВрдиреЗ рдпрд╣рд╛рдБ LibCanvas рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдмрддрд╛рдИ рд╣реИрдВред рдпрд╣ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░реЛрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдФрд░ рдкрд╛рдардХ рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп LibCanvas рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In121046/


All Articles