
рдпрд╣
LibCanvas рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдШрд╛рдд рд╢рд╛рдорд┐рд▓ рдереЗ, рддреЛ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ рдмрд╣реБрдд рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп LibCanvas рдХреА рдмрд╣реБрдд рдореВрд▓ рдмрд╛рддреЗрдВ рдорд╛рд╕реНрдЯрд░ рдХрд░рдирд╛ рд╣реИ, рд╣рдо рдмрд╣реБрдд рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдорд╣рд╛рди рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдЪрдЯреАрдПрдордПрд▓
HTML рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="atom.js"></script> <script src="libcanvas.js"></script> <script src="application.js"></script> </head> <body> <canvas></canvas> </body> </html>
рдЖрдкрдХреЛ рдирд╡реАрдирддрдо
AtomJS рдФрд░
LibCanvas рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реБрд░реБрдЖрддреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ
*-full-compiled
рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЖрдЧреЗ рд╣рдо
application.js
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ
рд╕рд░рд▓ рдХреИрдирд╡рд╛рд╕ рдкреЗрдВрдЯрд┐рдВрдЧ
рд╣рдо рдЕрднреА рднреА рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдбреЛрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рди рд╣реЛ рдЬрд╛рдП, рдХреИрдирд╡рд╛рд╕ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рдФрд░ рджреЛ рдЖрдХреГрддрд┐рдпрд╛рдВ рдмрдирд╛рдПрдВред рдореИрдВрдиреЗ рддреБрд░рдВрдд LibCanvas рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рд╡реИрд╢реНрд╡реАрдХрд░рдг рдХрд░ рджрд┐рдпрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЬрдм рдореИрдВ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рд╛рдордЧреНрд░реА рдирд┐рд╣рд┐рдд рд╣реЛрдЧреАред
рдЕрдм рд╣рдо рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рдЖрдпрдд рдФрд░ рдПрдХ рд╣рд▓реНрдХрд╛ рдХреЙрдлреА рдХреИрдирд╡рд╛рд╕ рдкрд░ рдПрдХ рд▓рд╛рд▓ рд╡реГрддреНрдд рдмрдирд╛рддреЗ рд╣реИрдВ:
LibCanvas.extract(); atom.dom(function() { var canvas = atom.dom('canvas').first; var context = canvas.getContext('2d-libcanvas'); context .fillAll( '#efebe7' ) .fill( new Rectangle( 75, 75, 30, 30 ), 'green' ) .fill( new Circle ( 50, 50, 20 ) , '#c00' ); });

рдПрдиреАрдореЗрд╢рди
рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реНрдерд┐рд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреБрдЫ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ LibCanvas рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ - рдПрдХ рдХрд╛рд▓рд╛ рдХреИрдирд╡рд╛рд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣рд░реЗ рдЖрдпрддреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред
рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
1. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреИрдирд╡рд╛рд╕ рдХреЛ рд╣рд░ рдлреНрд░реЗрдо рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ
{ clear: null }
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛
2. рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рд╕рдорд╛рд░реЛрд╣ рдкреНрд░рддрд┐рдкрд╛рджрди рдЪрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ
.addFunc( libcanvas.update )
рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╣реИред
var libcanvas = new LibCanvas('canvas', { clear: null }); libcanvas.ctx.fillAll('black'); libcanvas .start(function () { this.ctx.fill( new Rectangle({ from: this.ctx.rectangle.getRandomPoint(), size: [ 2, 2 ] }), 'green' ); }) .addFunc( libcanvas.update );

рд╡рд╕реНрддреБрдПрдВ
рдЕрдм рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕реЗ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрдиреЗ рджреЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдореЗрдЧрд╛ред рдЗрд╕ рдмрд╛рд░ рд╣рдореЗрдВ рдЕрдЧрд▓рд╛ рдлреНрд░реЗрдо рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ:
var Item = atom.Class({ Implements: [ Drawable ],
рд╣рдореЗрдВ рдПрдХ
рдЪрд░рдЦрд╛ рдорд┐рд▓рд╛ред
рдорд╛рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рддреАрд░ рдХреЛ рдПрдХ рд▓рд╛рд▓ рд╕рд░реНрдХрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрджрд▓реА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ
shape
рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдИ рд╣реИ, рди рдХрд┐
circle
ред рдпрд╣ рдбреНрд░реИрдЧреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
var Item = atom.Class({ Implements: [ Drawable, Draggable ], [...] initialize: function (center, speed) { [...]
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ
рдХрд┐ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдПрдХ рдЧрд▓рддреА рд╣реИ рдЬрдм рд╣рдо рдПрдХ рд╕рд░реНрдХрд▓ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ - рддреАрд░ рдЕрдкрдиреА рд▓рдВрдмрд╛рдИ рдмрджрд▓рддрд╛ рд╣реИред рд░рд╣рд╕реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рд╕рд░реНрдХрд▓ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ
center
рдмрд┐рдВрджреБ рднреА рдЪрд▓рддрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдЗрди рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред рдЦрдВрдб рдХрд╛ рдЕрдВрдд рд╕реНрдерд╛рди рдкрд░ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдП рдкрде рдХреЗ рд╕рд╛рде рдШреВрдордирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рд╣реА рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдЪрд╛рд▓рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╕реЗ рдпрд╣ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:
initialize: function (center, speed) { [...]
рдЕрдм рд╕рд╣реА рд╣реИрд╕реНрдЯреЙрдкрд╡реЙрдЪ рджреЗрдЦрдиреА
рдЕрдм рдПрдХ рдФрд░ рддреАрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рд╡рд╣ рд╕рдордп рдЬреЛ рдкреГрд╖реНрда рдХреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмреАрдд рдЪреБрдХрд╛ рд╣реИред рдХреЛрдб рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди, рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдХреЛрдб рджреВрдВрдЧрд╛:
var StopWatch = atom.Class({ Implements: [ Drawable, Draggable ], initialize: function (center) { this.center = center; this.millisec = this.line(); this.seconds = this.line(); this.minutes = this.line(); this.shape = new Circle( center, 25 ); center.addEvent('move', function (diff) {
рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ!рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд╛рдВ, рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рдЕрдзрд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдмрджрд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА, рдЕрдЪреНрдЫреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдорд┐рд▓рддреЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ LibCanvas рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдкреНрд░рд╢реНрди рд╣реИрдВ - рддреЛ рдЖрдк рдмреЗрдЭрд┐рдЭрдХ рдХрдореЗрдВрдЯ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдИрдореЗрд▓ shocksilien@gmail.com рдкрд░ рдпрд╛ jabber shock@jabber.com.ua рдкрд░