<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.wiki.war-castle.ru/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://www.wiki.war-castle.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F</id>
		<title>Тестовая - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://www.wiki.war-castle.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F"/>
		<link rel="alternate" type="text/html" href="https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;action=history"/>
		<updated>2026-04-16T10:34:09Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3158&amp;oldid=prev</id>
		<title>WikiSysop в 20:56, 4 сентября 2014</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3158&amp;oldid=prev"/>
				<updated>2014-09-04T20:56:49Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 20:56, 4 сентября 2014&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt; [http://habrahabr.ru/post/151337/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|&lt;/del&gt;принесет разочарование]. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt; [http://habrahabr.ru/post/151337/ принесет разочарование]. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3157&amp;oldid=prev</id>
		<title>WikiSysop в 20:50, 4 сентября 2014</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3157&amp;oldid=prev"/>
				<updated>2014-09-04T20:50:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 20:50, 4 сентября 2014&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;http://habrahabr.ru/post/151337/ принесет разочарование. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/ins&gt;http://habrahabr.ru/post/151337/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|&lt;/ins&gt;принесет разочарование&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/ins&gt;. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3156&amp;oldid=prev</id>
		<title>WikiSysop в 20:49, 4 сентября 2014</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3156&amp;oldid=prev"/>
				<updated>2014-09-04T20:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 20:49, 4 сентября 2014&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h1 style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&amp;quot;&amp;gt;Своя игра с JavaScript и Canvas&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Перейти в песочницу&amp;quot; href=&amp;quot;http://habrahabr.ru/sandbox/&amp;quot;&amp;gt;из песочницы&amp;lt;/a&amp;gt;&lt;/del&gt;&amp;lt;/h1&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h1 style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&amp;quot;&amp;gt;Своя игра с JavaScript и Canvas&amp;lt;/h1&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http:&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/habrahabr.ru/hub/javascript/&amp;quot;&amp;gt;JavaScript&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;,&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http://habrahabr.ru/hub/gdev/&amp;quot;&amp;gt;Game Development&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;,&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http://habrahabr.ru/hub/canvas/&amp;quot;&amp;gt;Canvas&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/div&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;br &lt;/ins&gt;/&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&amp;lt;a name=&amp;quot;habracut&amp;quot;&amp;gt;&amp;lt;/a&lt;/del&gt;&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;a href=&amp;quot;&lt;/del&gt;http://habrahabr.ru/post/151337/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&amp;gt;&lt;/del&gt;принесет разочарование&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/a&amp;gt;&lt;/del&gt;. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;http://habrahabr.ru/post/151337/ принесет разочарование. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Все бы хорошо, да вот беда &amp;amp;ndash; проблемы кроссбраузерной совместимости до конца не исчерпаны. Среди современных браузеров нет единого мнения насчет названий стандартных функций. Выход &amp;amp;ndash; либо вообще отказаться от их использования, либо делать дорогостоящие адаптеры. Например, я не смог отказать себе в использовании описателей свойств и это дало свои негативные последствия. О том, как их использовать кроссбраузерно, хорошо описано&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/117803/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;, и&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/108295/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;. А вот как их заставить работать быстро &amp;amp;mdash; осталось загадкой.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt; Все бы хорошо, да вот беда &amp;amp;ndash; проблемы кроссбраузерной совместимости до конца не исчерпаны. Среди современных браузеров нет единого мнения насчет названий стандартных функций. Выход &amp;amp;ndash; либо вообще отказаться от их использования, либо делать дорогостоящие адаптеры. Например, я не смог отказать себе в использовании описателей свойств и это дало свои негативные последствия. О том, как их использовать кроссбраузерно, хорошо описано&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/117803/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;, и&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/108295/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;. А вот как их заставить работать быстро &amp;amp;mdash; осталось загадкой.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;2. Оптимизацию кода легко сломать&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;2. Оптимизацию кода легко сломать&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Не так давно на Хабре проскакивала очень полезная статья про&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/154537/&amp;quot;&amp;gt;движок V8 для Chromium&amp;lt;/a&amp;gt;. Самое главное, что я сумел почерпнуть для себя &amp;amp;ndash; это скрытые классы и оптимизация кода для работы с ними. Действительно, JS зачастую провоцирует менять структуру объекта после его конструирования. Не стоит этого делать, если цель &amp;amp;ndash; создать быстрый и легко поддерживаемый код. Как только я это осознал, работа над игрой пошла веселее, а код стал чище и быстрее.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Не так давно на Хабре проскакивала очень полезная статья про&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/154537/&amp;quot;&amp;gt;движок V8 для Chromium&amp;lt;/a&amp;gt;. Самое главное, что я сумел почерпнуть для себя &amp;amp;ndash; это скрытые &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;классы&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;и оптимизация кода для работы с ними. Действительно, JS зачастую провоцирует менять структуру объекта после его конструирования. Не стоит этого делать, если цель &amp;amp;ndash; создать быстрый и легко поддерживаемый код. Как только я это осознал, работа над игрой пошла веселее, а код стал чище и быстрее.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;function myObject() { };&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;function myObject() { };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;var mo = new myObject();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;var mo = new myObject();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3155&amp;oldid=prev</id>
		<title>WikiSysop: Новая страница: «&lt;div&gt; &lt;h1 style=&quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: ...»</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.war-castle.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F&amp;diff=3155&amp;oldid=prev"/>
				<updated>2014-09-04T20:44:34Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;div&amp;gt; &amp;lt;h1 style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: ...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&amp;quot;&amp;gt;Своя игра с JavaScript и Canvas&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Перейти в песочницу&amp;quot; href=&amp;quot;http://habrahabr.ru/sandbox/&amp;quot;&amp;gt;из песочницы&amp;lt;/a&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http://habrahabr.ru/hub/javascript/&amp;quot;&amp;gt;JavaScript&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;,&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http://habrahabr.ru/hub/gdev/&amp;quot;&amp;gt;Game Development&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;,&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a title=&amp;quot;Вы не подписаны на этот хаб&amp;quot; href=&amp;quot;http://habrahabr.ru/hub/canvas/&amp;quot;&amp;gt;Canvas&amp;lt;/a&amp;gt;&amp;lt;span title=&amp;quot;Профильный хаб&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;&amp;quot;&amp;gt;Не так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего&amp;lt;br /&amp;gt; способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;развлечения&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.&amp;lt;br /&amp;gt;&amp;lt;a name=&amp;quot;habracut&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Общие замечания&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Код на JavaScript очень критичен к ресурсам платформы. Несмотря, что почти все современные движки перестали тупо интерпретировать JS код, скорость его выполнения по-прежнему очень сильно уступает скорости &amp;amp;laquo;родного&amp;amp;raquo; кода. Между тем, даже простейшая игра &amp;amp;mdash; это много кода, который должен успевать выполниться между отрисовками двух соседних кадров анимации. Кроме того, JS &amp;amp;mdash; язык весьма специфический и написание объемного кода на нем сопряжено с рядом трудностей. Все вместе может стать причиной того, что приложение на JS перестанет удовлетворять ожиданиям и быстро&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/151337/&amp;quot;&amp;gt;принесет разочарование&amp;lt;/a&amp;gt;. Попробую немного систематизировать выводы, к которым я пришел путем экспериментов.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h5&amp;gt;1. Совместимость&amp;lt;/h5&amp;gt;&lt;br /&gt;
Если мы решили использовать HTML5 и Canvas в частности, то пусть нас больше не беспокоят вопросы совместимости со старыми браузерами &amp;amp;ndash; под ними все равно ничего не заработает. Таким образом, можно смело использовать основные нововведения ECMAScript 5. С другой стороны, не стоит обижать презрением пользователей старого доброго ПО, наподобие IE6. Желательно их уведомить, о причинах, почему они видят&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;фигу&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;серый квадрат, вместо нашей замечательной анимации. Сделать это элементарно, достаточно диагностировать поддержку Canvas и используемых языковых конструкций&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;canvas id=&amp;quot;gameArea&amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;amp;gt;Your browser doesn't supported HTML5 Canvas&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
if(typeof ({}.__defineGetter__) != &amp;quot;function&amp;quot; &amp;amp;amp;&amp;amp;amp; typeof (Object.defineProperty) != &amp;quot;function&amp;quot;)&lt;br /&gt;
  alert(&amp;quot;Your browser doesn't supported latest JavaScript version&amp;quot;);})()&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Все бы хорошо, да вот беда &amp;amp;ndash; проблемы кроссбраузерной совместимости до конца не исчерпаны. Среди современных браузеров нет единого мнения насчет названий стандартных функций. Выход &amp;amp;ndash; либо вообще отказаться от их использования, либо делать дорогостоящие адаптеры. Например, я не смог отказать себе в использовании описателей свойств и это дало свои негативные последствия. О том, как их использовать кроссбраузерно, хорошо описано&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/117803/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;, и&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/108295/&amp;quot;&amp;gt;здесь&amp;lt;/a&amp;gt;. А вот как их заставить работать быстро &amp;amp;mdash; осталось загадкой.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h5&amp;gt;2. Оптимизацию кода легко сломать&amp;lt;/h5&amp;gt;&lt;br /&gt;
Не так давно на Хабре проскакивала очень полезная статья про&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;http://habrahabr.ru/post/154537/&amp;quot;&amp;gt;движок V8 для Chromium&amp;lt;/a&amp;gt;. Самое главное, что я сумел почерпнуть для себя &amp;amp;ndash; это скрытые классы и оптимизация кода для работы с ними. Действительно, JS зачастую провоцирует менять структуру объекта после его конструирования. Не стоит этого делать, если цель &amp;amp;ndash; создать быстрый и легко поддерживаемый код. Как только я это осознал, работа над игрой пошла веселее, а код стал чище и быстрее.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;function myObject() { };&lt;br /&gt;
var mo = new myObject();&lt;br /&gt;
mo.id = 12; //лучше так не делать//Аккуратнее надо быть и с переменными.var v;&lt;br /&gt;
v = 12; //плохо, лучше var v = 12;&lt;br /&gt;
v = &amp;amp;ldquo;12&amp;amp;rdquo;; //так не надо, для нового типа лучше использовать новую переменнуюvar v = 15; //я искренне верю, что так никто не поступает&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Так же нужно стремиться сокращать область видимости переменной до минимума &amp;amp;ndash; это увеличивает вероятность оптимизации кода.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	</feed>