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

рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
рдЗрдВрдЬрди рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА jQuery рд╣реИред
рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд┐рддреНрд░ - рдЯрд╛рдЗрд▓реЗрдВ - рд╣рдорд╛рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЕрднреА рднреА рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдЙрдирдХреЗ рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдирд┐рдкрдЯрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдм рдХреБрдЫ CANVAS рдкрд░ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреИрдирд▓ рдФрд░ рд▓реЗрдмрд▓ рдХреЗ рдкреЙрдкрдЕрдк рдЬреИрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ рдбреЗрдореЛ рдореЗрдВ рд╡реЗ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИрдВ)ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЙрдбреНрдпреВрд▓рд░ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдХреИрдирд╡рд╕рдбреНрд░реЗрдЧрд░, рдХреИрдирд╡рд╕рдПрд╡реЗрдВрдЯрд░, рдХреИрдирд╡рд╕рдореИрдЧреНрд▓реЛрдбрд░, рдХреИрдирд╡рд╕ рдореИрдкрд░, рдХреИрдирд╡рд╕ рдореИрдХрд░, рдХреИрдирд╡рд╕рдореИрдиреА рдореИрдкрд░, рдХреИрдирд╡рд╕рдСрдЬрд╝рд░, рдХреИрдирд╡рд╕ рдЯреВрд▓, рдХреИрдирд╡рд╕ рдЬрд╝реВрдорд░ред
рдХрд╛рд░реНрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ html'a рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
<canvas id="map2d"></canvas>
рдЕрдЧрд▓рд╛, рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ):
$(function() { mWrap = new MapsWrapper({ mapDivId: "map2d"
рдЖрдЗрдП рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВ:
- staticMapUrl - рдореЗрдЬрдмрд╛рди рдЬрд╣рд╛рдВ рд╕реЗ рдореИрдк рдЯрд╛рдЗрд▓ рднрд░реА рд╣реБрдИ рд╣реИрдВ
- initCrd - рдЧреЙрд╕- рдХреНрд░реБрдПрдЧрд░ рдкреНрд░рдХреНрд╖реЗрдкрдг рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрднрдЧ рд╢реВрдиреНрдп рдХрд┐рд▓реЛрдореАрдЯрд░ рд╕рдбрд╝рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдЬреЛ рдорд╛рдиреЗрдЬ рд╕реНрдХреНрд╡рд╛рдпрд░ рдХреЗ рдкрд╛рд╕ рд╣реИред
- рдорд┐рдирд┐рдПрдк - рдорд┐рдирд┐рдореИрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛
- рдЙрдкрдХрд░рдг - рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрдиреЗрдХреНрд╢рди
рдЖрдВрддрд░рд┐рдХ рдпрд╛рдВрддреНрд░рд┐рдХреА
рдпрд╛ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдпрд╛ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХреНрдпрд╛ рдЫрд┐рдкрд╛ рд╣реИред рдЪрд▓рд┐рдП рдореБрдЦреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдЬрдм рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджрд┐рдЦрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИред 256x256 рдХреЗ рджрд┐рдП рдЧрдП рдЯрд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЬрд╛рдирдирд╛, рд╣рдо рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдирдХреНрд╢рд╛ рдЪрд▓рддрд╛ рд╣реИ - рдбреНрд░реИрдЧ - рд╣рдо рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдордиреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдЗрддрдирд╛ рдЖрдЧреЗ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдирдИ рдЯрд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рднреА рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рднреА рдЯрд╛рдЗрд▓реЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рдореЗрдВ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ "рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░" рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
unVisibleTilesCollector: function() { for(var cnt = 0; cnt < this.__TILES__.length; cnt++) { if( (this.__TILES__[cnt].canvX + this.tileSize) < 0 || this.__TILES__[cnt].canvX > this.canvas.width || this.__TILES__[cnt].canvY > this.canvas.height || (this.__TILES__[cnt].canvY + this.tileSize) < 0 ) { this.__TILES__.splice(cnt, 1); cnt--; } } }
рд╕реНрдХреЗрд▓реЗрдмрд▓ (ZoomIn, zoomOut)
рдЬрдм "рдореВрд╕рд╡реНрд╣реАрд▓" рдШрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИрдВ:
- рд╕рднреА рдЯрд╛рдЗрд▓реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ
$.extend(this.__ANIM_TILES__, this.mapper.__TILES__)
- рдХреИрдирд╡рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдЧрдгрд┐рдд рдХреА рдорджрдж рд╕реЗ pp1 рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдХреЙрдкреА рд╕реЗ рдЯрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдХрдореА рдпрд╛ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ (рд╣рдо рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЛ рдХреИрд╕реЗ рдШреБрдорд╛рддреЗ рд╣реИрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
for(cnt; cnt < this.animSteps; cnt++){ setTimeout(function(){ _this.ctx.clearRect(0,0,_this.canvas.width,_this.canvas.height); _this.ctxMarker.clearRect(0,0,_this.canvas.width,_this.canvas.height); animScale += scale*stepScale; _this.drawAllAnimTiles(evt, { animScale: animScale, stepCurrNum: Math.round(Math.abs(animScaleStart-animScale)/stepScale), stepScale: stepScale }); }, delay*cnt); }
- рдирдП рдЯрд╛рдЗрд▓ рд╢реАрд░реНрд╖ рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдирдП рдкреИрдорд╛рдиреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ
MapsWrapper.v2DMapComponent.update()
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдлрд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо, рд╕рдлрд╛рд░реА, рдУрдкреЗрд░рд╛ рдФрд░ рдЖрдИрдИ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдВ рдлрд┐рд░ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВред рдЪреВрдВрдХрд┐ рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ IE рд╕рдВрд╕реНрдХрд░рдг 8 рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдирд┐рдЪрд▓реЗ рдФрд░ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред
рдХрд╛рд░реНрдб рджреНрд╡рд╛рд░рд╛ TODO рд╕реВрдЪреА
1. рдорд╛рдирдЪрд┐рддреНрд░ рдЯрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ (рдЧрддрд┐ рдореЗрдВ рдПрдХ рдареЛрд╕ рд╡реГрджреНрдзрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП);
2. рдЬрд╝реВрдо рд╕реНрд▓рд╛рдЗрдбрд░;
3. рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг (рднрд╡рди рдХрд╛ рдкрддрд╛, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЖрджрд┐);
4. ???
рдбреЗрдореЛ :
share.arkada-sw.ru/canvasmapps рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рднреА рдЕрдзрд┐рдХрд╛рд░ рдЙрд╕ рдХрдВрдкрдиреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ
pps рдпрджрд┐ рдпрд╣ рд▓реЗрдЦ рд░реБрдЪрд┐ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдореЗрд░реА рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдбреЗрдЯрд╛ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рд╣реЛрдЧрд╛