<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-676004458466193588</atom:id><lastBuildDate>Thu, 04 Jul 2024 05:46:13 +0000</lastBuildDate><category>Уроки ActionScript 3</category><category>Ни о чём</category><category>Flash</category><category>ActionScript 3.0</category><category>новости блога</category><title>Konan&#39;s thoughts. Уроки ActionScript 3.0</title><description>Flash уроки на языке программирования ActionScript 3.0. Здесь можно найти примеры игр, эффектов или просто мысли вслух :)</description><link>http://konansthoughts.blogspot.com/</link><managingEditor>noreply@blogger.com (KonanMentor)</managingEditor><generator>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-2877145080182620929</guid><pubDate>Wed, 08 Aug 2012 21:02:00 +0000</pubDate><atom:updated>2012-08-09T00:02:18.047+03:00</atom:updated><title>iBlog нового поколения</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://konanmentor.blogspot.com/&quot;&gt;Вот он! Вот он, блог моей мечты!&lt;/a&gt;&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2012/08/iblog.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-4150323064818031571</guid><pubDate>Sat, 04 Aug 2012 21:25:00 +0000</pubDate><atom:updated>2012-08-05T00:25:29.447+03:00</atom:updated><title></title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Привет!&lt;br /&gt;
&lt;br /&gt;Давным давно я ничего не писал, ленюсь сильно..&lt;br /&gt;
&lt;br /&gt;За это время я изучал JavaScript, пытался делать flash-игры, переписал часть уроков, но так и не опубликовал их.&lt;br /&gt;
&lt;br /&gt;
Этот блог я вел, когда только начинал изучать Flash, не имея почти никаких знаний в&amp;nbsp;программировании. Сейчас я, кажется, перешел на новый уровень. :D Поэтому будет лучше, если я создам новый блог, где будут статьи не только про Flash, но и про Web-разработку ( скорее всего, клиентская часть ). Там помещу ссылку на этот блог, чтобы можно было увидеть разницу между моим кодом на данный момент и то, что я писал год назад. :)&lt;br /&gt;
&lt;br /&gt;
В чем будет разница?&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Более широкая тематика ( как минимум, кроме ActionScript 3.0 будут статьи про JavaScript )&lt;/li&gt;
&lt;li&gt;Повышенный опыт&lt;/li&gt;
&lt;li&gt;Из-за более широкой тематики я смогу писать больше&lt;/li&gt;
&lt;li&gt;Постараюсь побольше писать про то, чем я сейчас занимаюсь ( что изучаю, какие проекты выполняю )&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Надеюсь, у меня сохранится энтузиазм заниматься всем этим. :)&lt;/div&gt;
&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2012/08/blog-post.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-1677173811526947042</guid><pubDate>Mon, 03 Oct 2011 21:01:00 +0000</pubDate><atom:updated>2011-10-10T21:26:09.881+03:00</atom:updated><title>Waterball, первая игра</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Waterball или Ice ball, с каким названиям она разошлась по большинству порталов.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGad4YU_nlH7ghlPSQCdROFCnRXsPTWkKhqi9akQRrd-9DwKz7U21Wzr3VbzqZHDeHT0aXti4tXWjZc2XdT3SCfmni6lhOFWWnLeKYr891zKyIYsCNUFeEOoiKZHU1XLeGzP_4RaSbQNio/s1600/waterball.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGad4YU_nlH7ghlPSQCdROFCnRXsPTWkKhqi9akQRrd-9DwKz7U21Wzr3VbzqZHDeHT0aXti4tXWjZc2XdT3SCfmni6lhOFWWnLeKYr891zKyIYsCNUFeEOoiKZHU1XLeGzP_4RaSbQNio/s1600/waterball.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Поиграть можно &lt;a href=&quot;http://www.bestphysics.com/physics-games/water-ball/&quot;&gt;тут&lt;/a&gt;.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;С чего всё начиналось&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Началось всё с того, что мне захотелось сделать игру. :D Ну и “срубить бабла”, конечно :P. 
Значит, сначала мне нужно было придумать идею игры. Кажется, тогда я начинал изучать движок box2d, так что игра должна быть обязательно физическая. Ну и геймплей – тушить свечи.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Разработка&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Сам геймплей был написан дня за 2. Там уже можно было стрелять, выбирать уровни, тушит свечи, но графика выглядела так:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtq9_56ZFs_JlQbSu9odHlqct6KXaDLbczNQQpipVLNcODRgi-SEfSLMIFgMcnvp4wSwQJgR7qVOAsmGsJP7rgv9Ja-QYWYyThzT9qSUsqqsrtOxwICWv23DsTpFVRB2XE_gv11BCCfabZ/s1600/1stWaterballScrenn.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtq9_56ZFs_JlQbSu9odHlqct6KXaDLbczNQQpipVLNcODRgi-SEfSLMIFgMcnvp4wSwQJgR7qVOAsmGsJP7rgv9Ja-QYWYyThzT9qSUsqqsrtOxwICWv23DsTpFVRB2XE_gv11BCCfabZ/s320/1stWaterballScrenn.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
:D&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Потом наступил месяц пиления игры: рисования жуткой графики, левел дизайн, фикс багов, придумывание фич.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Но самая большая проблема была в конце, когда игроки начали жаловаться на то, что снаряд летит не по траектории! Это был ужас. Я исправил это, только подбирая какой-то коэффициент методом тыка. Нигде так и не нашёл нормальной формулы.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Графика и звуки&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Графику рисовал сам (наверное и так видно :D), кроме огня, которого нагло спёр с хитри, так и не поменял D: .
Ну а про звуки я вообще молчу – халтура полная. Думаю научиться писать гитарную музыку (на гитаре играл, чего же не использовать навыки).&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Аукцион&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Ну, началось :Р&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
После аппрува недели 2 тишины. Потом появляется ставка $200. Уиии, радости нет предела!!1 Ну что ж, жду дальше. Ничего нет. Ну думаю, дай ка ласт колл жахну. Жахнул. На 2ой день приходит письмо: парень, я заинтересован в твоей игре, го в скайп. Ну ок, думаю, го. И тут начинается самое интересное – НИКОГДА НЕ ПОВТОРЯЙТЕ ЭТОГО ДОМА.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Он мне пишет - $350 и эксклюзив, нравиться? - говорю – даа. (На тот момент мне больше нравился exclusive, чем primary. Потому что мне казалось, что с эксклюзивом меньше возиться :D)&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Потом говорит – «Мне сделать ставку или ты можешь принять сейчас и закрыть торги?»(Хитрим-хитрим :))&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Ну, а тут я уже начинаю тупить.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Я – Может мне сделать прокси-ставку?&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Он – Ну, сделай, если она победит – вышлю детали.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
И добивающий в голову&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Я – “It seems your bid has been accepted”&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Т_Т&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Ну и полилось. Выяснилось, что первый спонсор поднял бы ставку и нужно ждать 3 дня, перед тем как принять бид.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Началось биение головой об стену.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Когда все стенки закончились, я решил написать письмо, чтобы ставку отменили, ибо такая практика уже наблюдалась.
Ставку отменили без проблем, спонсор оказался русскоязычным, никаких апи не было, реклама – CPMStar.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Цифры&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
В итоге игра продана за $400 (минус $40 – комиссия FGL) = $360&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Просмотров (или плев) за 2 недели  - 300к&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Денег с CPMStar за 2 недели - $130.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Всего можно сказать $500 (где-то пол айфончика пятого :D)&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Опыт
&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Так как это первая игра – опыта over9000 и ещё плюс дофига.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
1. Спонсоры. Ждите этих 3 дня. И всегда просите ТЗ (то, что нужно будет сделать с игрой) ДО того, как приняли ставку.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
2. Качество должно быть на высоте. Не пренебрегайте левел дизайном. А то я его оставил таким, каким он был и люди сказали, что мало :) &lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
3. Перед релизом проверьте всё 10 раз не только на счёт багов, но и саму игру. Например, я зачем-то сделал кнопки continue и new game, а это всё лучше было заменить одной кнопкой play.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Заключение&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Для меня эта игра “пошла” и она стимулирует продолжать делать игры.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
P.S. Думаю сделать продолжение, опираясь на полученный опыт и учитывая все ошибки.
Всем спасибо. :)&lt;/div&gt;
&lt;/div&gt;
</description><link>http://konansthoughts.blogspot.com/2011/10/waterball-ice-ball.html</link><author>noreply@blogger.com (KonanMentor)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGad4YU_nlH7ghlPSQCdROFCnRXsPTWkKhqi9akQRrd-9DwKz7U21Wzr3VbzqZHDeHT0aXti4tXWjZc2XdT3SCfmni6lhOFWWnLeKYr891zKyIYsCNUFeEOoiKZHU1XLeGzP_4RaSbQNio/s72-c/waterball.png" height="72" width="72"/><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-2098783855551898456</guid><pubDate>Mon, 29 Aug 2011 12:27:00 +0000</pubDate><atom:updated>2011-08-29T15:27:47.311+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><title>It&#39;s over 10000!</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Количество просмотров уже перевалило за 10000. Это что-то да значит...&lt;br /&gt;
В скором времени надеюсь написать пост о разработке одной игры. Надеюсь, не поленюсь написать :)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/08/its-over-10000.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8283711304763230749</guid><pubDate>Sun, 24 Jul 2011 16:09:00 +0000</pubDate><atom:updated>2011-07-24T19:09:46.495+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ActionScript 3.0</category><title>Глюк, не глюк?</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;form name=&quot;languageBtFrom&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;input id=&quot;languageBt&quot; name=&quot;languageBt&quot; onclick=&quot;changeText()&quot; type=&quot;button&quot; value=&quot; en &quot; /&gt;&lt;/div&gt;&lt;/form&gt;&lt;br /&gt;
&lt;div class=&quot;ru&quot; style=&quot;display: block;&quot;&gt;Привет, недавно заметил такую особенность:&lt;br /&gt;
Когда объявляешь булевую переменную, она по умолчанию - false.&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var a:Boolean;
trace(a);//flase
&lt;/pre&gt;Но, если написать:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var b,c:Boolean;
trace(b);//undefined
trace(c);//false
&lt;/pre&gt;O_o&lt;br /&gt;
Капаем дальше:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var b,c,d:Boolean;
trace(b);//undefined
trace(c);//undefined
trace(d);//false
&lt;/pre&gt;Вот так-то, может так и должно быть, но выглядит странно...&lt;br /&gt;
Пока :P&lt;/div&gt;&lt;div class=&quot;en&quot; style=&quot;display: none;&quot;&gt;Hi, recently noticed a peculiarity:&lt;br /&gt;
When you declare a Boolean variable, it is default - false.&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var a:Boolean;
trace(a);//flase
&lt;/pre&gt;But, if you write:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var b,c:Boolean;
trace(b);//undefined
trace(c);//false
&lt;/pre&gt;O_o&lt;br /&gt;
Drips on:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var b,c,d:Boolean;
trace(b);//undefined
trace(c);//undefined
trace(d);//false
&lt;/pre&gt;Now, that may well be, but it looks weird ...&lt;br /&gt;
Bye : P&lt;/div&gt;&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/07/blog-post.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-3677918160364015871</guid><pubDate>Sun, 03 Jul 2011 17:49:00 +0000</pubDate><atom:updated>2012-10-28T21:30:44.236+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flash</category><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 20. Маска с дыркой.</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;form name=&quot;languageBtFrom&quot;&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;h2&gt;
&lt;a href=&quot;http://konanmentor.blogspot.com/2012/10/mask-with-hole.html&quot;&gt;http://konanmentor.blogspot.com/2012/10/mask-with-hole.html&lt;/a&gt;&lt;/h2&gt;
&lt;input id=&quot;languageBt&quot; name=&quot;languageBt&quot; onclick=&quot;changeText()&quot; type=&quot;button&quot; value=&quot; en &quot; /&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;br /&gt;
&lt;div class=&quot;ru&quot; style=&quot;display: block;&quot;&gt;
Привет! Сегодня столкнулся с проблемой – маска с дыркой. Это капец. Хорошо, что нашел, как это исправить. В общем, допустим, нам нужно сделать такую маску:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;en&quot; style=&quot;display: none;&quot;&gt;
Hi! Today I had a problem – make mask with hole. It’s nightmare. Good that I found how to fix it. Generally let we need to make mask like this.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFleBfrjhY1MJ8z1KcFLf7ryJf2UofulKqIRDbyNIkyJCESDiThrtCOsxtSzWZh4hYW7KsRoxeQkYRV-MDpu-qUK9TZE-qtD62pavyet1JxUkHYElsXOIPRe2dNrFJc5yDqjJYdCpwbBL-/s1600/lesson20maskExample.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFleBfrjhY1MJ8z1KcFLf7ryJf2UofulKqIRDbyNIkyJCESDiThrtCOsxtSzWZh4hYW7KsRoxeQkYRV-MDpu-qUK9TZE-qtD62pavyet1JxUkHYElsXOIPRe2dNrFJc5yDqjJYdCpwbBL-/s320/lesson20maskExample.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;ru&quot; style=&quot;display: block;&quot;&gt;
Ну, что ж, нет проблем, &lt;a href=&quot;http://konansthoughts.blogspot.com/2011/01/10.html&quot;&gt;тут &lt;/a&gt;написано, как использовать маски, всё понятно… Но не тут-то было))&lt;br /&gt;
Флеш, не долго думая, превратит нашу маску с дыркой в маску без дырки! Типа “зачем напрягаться?”). Так что же нам делать? Оказывается, есть до безобразия простой способ). Давайте подумаем логически, если флеш хорошо справляется с фигурами без дырок, то нам нужно сделать из нашей фигуры с дыркой фигуру без дырки). Логично блин :D. Ну и как же это можно сделать? Всё, как я и говорил, просто. Мы разрезаем нашу фигуру так, чтобы  обе части были без дырок и размещаем их на разных слоях.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;en&quot; style=&quot;display: none;&quot;&gt;
Ok, no problem, we can read &lt;a href=&quot;http://konansthoughts.blogspot.com/2011/01/10.html&quot;&gt;there &lt;/a&gt; how to use masks in Flash, clear. But it isn’t so easy)) &lt;br /&gt;
Flash, without hesitation, turn our mask with a hole in the mask without holes! Like &quot;why strain.&quot;) So what do we do? It turns out that there is very easy way to fix it). Let&#39;s think logically, if the flash is good at figures without holes, we need to make our shape with a hole in a shape without holes). Logical, damn! :D. So how can this be done? Everything, as I said, simply. We cut our shape, so that both sides were no holes and place them on different layers.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSxvf6lxaYDWL8iyuEKNby9affBDLm9lwFy6zcLClPUQTdK-G3OzdV886rBIkM84OnMMRxzhHOmlExvxL4evjqO5g_Jgvmv4hRS6Dk2SYPT2eG5N4dhnpWgkOAA8TmQLVVieXiHWnsgokl/s1600/lesson20maskSolution.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSxvf6lxaYDWL8iyuEKNby9affBDLm9lwFy6zcLClPUQTdK-G3OzdV886rBIkM84OnMMRxzhHOmlExvxL4evjqO5g_Jgvmv4hRS6Dk2SYPT2eG5N4dhnpWgkOAA8TmQLVVieXiHWnsgokl/s320/lesson20maskSolution.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;ru&quot; style=&quot;display: block;&quot;&gt;
И как ни странно всё работает!:)&lt;br /&gt;
Удачи!&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;en&quot; style=&quot;display: none;&quot;&gt;
And oddly enough it works:)&lt;br /&gt;
Good luck!&lt;/div&gt;
&lt;/div&gt;
</description><link>http://konansthoughts.blogspot.com/2011/07/20.html</link><author>noreply@blogger.com (KonanMentor)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFleBfrjhY1MJ8z1KcFLf7ryJf2UofulKqIRDbyNIkyJCESDiThrtCOsxtSzWZh4hYW7KsRoxeQkYRV-MDpu-qUK9TZE-qtD62pavyet1JxUkHYElsXOIPRe2dNrFJc5yDqjJYdCpwbBL-/s72-c/lesson20maskExample.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8183306138038465962</guid><pubDate>Wed, 29 Jun 2011 19:44:00 +0000</pubDate><atom:updated>2011-07-24T19:12:32.865+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">новости блога</category><title>Now in English!</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;form name=&quot;languageBtFrom&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;input id=&quot;languageBt&quot; name=&quot;languageBt&quot; onclick=&quot;changeText()&quot; type=&quot;button&quot; value=&quot; en &quot; /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/form&gt;&lt;div class=&quot;en&quot; style=&quot;display: none;&quot;&gt;Hi there! From today I’ll endeavor to translate my posts from Russian to English. You can see a button “ru” on the top of the post (You can poke at it :) ). This is my result of the study of javascript). Possibly I’ll translate my past posts if you need it.&lt;br /&gt;
&lt;br /&gt;
Well, it&#39;s all that I wanted to say you. Till we meet again!&lt;br /&gt;
&lt;br /&gt;
Upd. But this feature only works if you use mozilla firefox, if you don&#39;t use Google translator and only on post&#39;s page:P&lt;/div&gt;&lt;div class=&quot;ru&quot; style=&quot;display: block;&quot;&gt;Привет! С сегодняшнего дня я постараюсь переводить посты на английский язык. Вверху есть кнопка “en” (можно потыкать :) ). Это мой pезультат изучения javascript). Возможно, я переведу и прошлые посты, если в этом есть необходимость.&lt;br /&gt;
&lt;br /&gt;
Ну, это всё, что я хотел сказать. До новых встреч!&lt;br /&gt;
&lt;br /&gt;
Upd. Но эта фича работает только в мозиле, если не юзать гугл переводчик и только на странице самого поста :Р&lt;/div&gt;&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/06/now-in-english.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-5487329394280743213</guid><pubDate>Mon, 27 Jun 2011 19:53:00 +0000</pubDate><atom:updated>2011-06-28T00:04:52.966+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 19. Двойной клик или как убить Event.</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Привет, я хочу рассказать о такой интересной и безусловно полезной функции как stopImmediatePropagation();. Что же она делает? Приведу пример. Есть игра, там есть кнопка Play. Когда нажимаешь на эту кнопку, ты можешь управлять player’ом, который может стрелять (естественно на клик мыши). Так вот, ты нажимаешь на Play, и… player стреляет! Бесит, не так ли? Это нужно как-то убрать. Есть много “способов”. Так вот, чтобы убить Event, достаточно просто написать:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;event.stopImmediatePropagation();
&lt;/pre&gt;Ну, например:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;private function Play(e:MouseEvent){
e.stopImmediatePropagation();
}
&lt;/pre&gt;Тогда этот event не будет дальше расползаться. Мало получилось, но всё же может кому-то пригодиться…&lt;br /&gt;
Bye :-/&lt;br /&gt;
P.S. Понравилась картинка: &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEKXITiCCXkZpt-canjSFvLKj7I45TYB4NAzUZRFIOyFzhqqk-yvhlYU7yp6QLI4wO82zmPR0vbb6QXpzPJlmWg1uc-hBdgbnqdG9KSIDE8hOeq2sUcOp41hIrZN3gzIe1FSDSHKr9iG4J/s1600/interface.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEKXITiCCXkZpt-canjSFvLKj7I45TYB4NAzUZRFIOyFzhqqk-yvhlYU7yp6QLI4wO82zmPR0vbb6QXpzPJlmWg1uc-hBdgbnqdG9KSIDE8hOeq2sUcOp41hIrZN3gzIe1FSDSHKr9iG4J/s320/interface.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/06/19-event.html</link><author>noreply@blogger.com (KonanMentor)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEKXITiCCXkZpt-canjSFvLKj7I45TYB4NAzUZRFIOyFzhqqk-yvhlYU7yp6QLI4wO82zmPR0vbb6QXpzPJlmWg1uc-hBdgbnqdG9KSIDE8hOeq2sUcOp41hIrZN3gzIe1FSDSHKr9iG4J/s72-c/interface.jpg" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-7466007386114693791</guid><pubDate>Fri, 17 Jun 2011 14:49:00 +0000</pubDate><atom:updated>2011-06-17T18:02:20.767+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 18. URL-locker</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Привет, сегодня я расскажу, как сделать url-lock для флеш игры. Не знаю, есть ли ещё такие уроки или нет..,  как-то не искал)&lt;br /&gt;
Так вот, что же за url-lock? Когда хочешь продать игру, например, на том же FGL, то появляется вопрос: как же защитить свои игру от всяких невменяемых людей, которые могут просто выложить твою игру в свободный доступ, и спонсоры уже просто не будут покупать её? Аукцион предлагает защиту от некого kindisoft!. Но все два раза, когда я использовал эту защиту, у меня вместо игры был белый экран &lt;strike&gt;смерти&lt;/strike&gt;. Хотя вероятность того, что игру стырят, мала, но лучше перестраховаться.&lt;br /&gt;
Для того, чтобы сделать простенький url-locker нужно всего лишь  узнать домен сайта, с которого запущена игра и сравнить с правильным доменом.&lt;br /&gt;
Вот как это реализуется:&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;
var localConnection:LocalConnection = new LocalConnection();
var Domain:String = localConnection.domain;
const correctDomain:String=&quot;flashpuzzle.ucoz.ru&quot;;
if(Domain!=correctDomain){
 trace(&quot;играйся с сайта &quot;+correctDomain+&quot;, хацкер!)&quot;);
}
else{
 trace(&quot;молодец, играешь с сайта!)&quot;);
}

&lt;/pre&gt;&lt;br /&gt;
При таком коде &quot;играть&quot; можно будет только с домена flashpuzzle.ucoz.ru&lt;br /&gt;
&lt;br /&gt;
Вот swf, но попробуйте &lt;a href=&quot;http://flashpuzzle.ucoz.ru/load/url_locker/1-1-0-29&quot;&gt;скачать&lt;/a&gt; и запустить с компа)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot; height=&quot;400&quot; width=&quot;500&quot;&gt; &lt;param name=movie value=&quot;http://flashpuzzle.ucoz.ru/_ld/0/24_urlLocker.swf&quot;&gt;&lt;embed src=&quot;http://flashpuzzle.ucoz.ru/_ld/0/24_urlLocker.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
P.S. Я использовал домен flashpuzzle.ucoz.ru потому что swf лежит и подгружается оттуда, если кто-нибудь знает как запилилть swf в блоггер, то напишите в комменты плиз :)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/06/18-url-locker.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8082960008669173650</guid><pubDate>Mon, 13 Jun 2011 20:06:00 +0000</pubDate><atom:updated>2011-06-15T12:02:53.560+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flash</category><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 17. Контекстное меню</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Hi, guys! Recently I had a problem: I tried to hide context menu, but Flash is very sly…&lt;br /&gt;
Блин, ладно. Короче, я пытался скрыть контекстное меню, но флеш очень хитрый)&lt;br /&gt;
Для начала вот, что было, когда кликаешь ПКМ:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwu1OT0rHW1B9Pr-_SM8UM_WV7pxSl5QCHPuq9WvRCm2iLsHtQLf0YZesvvtnlt-SoDuhVDPzsGsrwGaWjXhDFdQhdvC0F01Wm-yAQ3wqKB0aBFyRepykaWVskwT7R9z5blWfWQQ-gJVjj/s1600/forLesson17start.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwu1OT0rHW1B9Pr-_SM8UM_WV7pxSl5QCHPuq9WvRCm2iLsHtQLf0YZesvvtnlt-SoDuhVDPzsGsrwGaWjXhDFdQhdvC0F01Wm-yAQ3wqKB0aBFyRepykaWVskwT7R9z5blWfWQQ-gJVjj/s1600/forLesson17start.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И вот, что должно было получиться:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6kfkudvxtHoqcGXc6ejqmMMivofxWb2ryP2cSnCkjaUwT0aDY_PhbTeA6vpJvpwOIRGFAbLNCYHao7_c-WaeK_7TdyeJQVHC88nrWw_Y2frwch3qXj3W06-fvB80kYw7_msFW5P9SXMSC/s1600/forLesson17finish.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6kfkudvxtHoqcGXc6ejqmMMivofxWb2ryP2cSnCkjaUwT0aDY_PhbTeA6vpJvpwOIRGFAbLNCYHao7_c-WaeK_7TdyeJQVHC88nrWw_Y2frwch3qXj3W06-fvB80kYw7_msFW5P9SXMSC/s1600/forLesson17finish.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вот способ, который я нашёл:&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;stage.showDefaultContextMenu = false;
&lt;/pre&gt;Но что же мы видим, когда компилируем флешку:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcgNKnyGR4PEMKLtrraj3V5P-ZrI7WbDjTelmw-YTf2g-CwzIrV-d2gyZ9yCX5VUwdUBdOlhy38-qlGuCbykdBdn6lx6ThcofJpnax6pI1czr8h58Eyi5uhqCqSW1CclHLdly0ydwgO2Qu/s1600/figa.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcgNKnyGR4PEMKLtrraj3V5P-ZrI7WbDjTelmw-YTf2g-CwzIrV-d2gyZ9yCX5VUwdUBdOlhy38-qlGuCbykdBdn6lx6ThcofJpnax6pI1czr8h58Eyi5uhqCqSW1CclHLdly0ydwgO2Qu/s1600/figa.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
нуу, почти:)&lt;br /&gt;
&lt;span id=&quot;goog_471639019&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_471639020&quot;&gt;&lt;/span&gt; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD-qjhBdFiDtdS6llYHzhqxarktHuo16m131A8yYp1OjIL8hUPvoCx1EdOc346iPBWKbUc6TYYjynSx6hln4QcnSclnaeKB8y8YKVXDEJ0T5f96uH3RP4EmNbGGezzdTATHniuOiEFx53D/s1600/forLesson17debug.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD-qjhBdFiDtdS6llYHzhqxarktHuo16m131A8yYp1OjIL8hUPvoCx1EdOc346iPBWKbUc6TYYjynSx6hln4QcnSclnaeKB8y8YKVXDEJ0T5f96uH3RP4EmNbGGezzdTATHniuOiEFx53D/s1600/forLesson17debug.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;….мда, не лучше))&lt;br /&gt;
&lt;br /&gt;
Но, если просто открыть swf, не из флеша, то мы увидим, то что нужно.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqBQCyCKiKwEywew4dtvA6PVvl70C1BjpilEcNtfS_8YWRpqn3Ak0DtvDZrJlRTsRtGaWRuCrtaNOlK1ek7NjJg-yda12rLof5HxgsdaPDKgyimC4h3YYoepEQQYaeBKiy_T5AtsLQdA4G/s1600/forLesson17finish.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqBQCyCKiKwEywew4dtvA6PVvl70C1BjpilEcNtfS_8YWRpqn3Ak0DtvDZrJlRTsRtGaWRuCrtaNOlK1ek7NjJg-yda12rLof5HxgsdaPDKgyimC4h3YYoepEQQYaeBKiy_T5AtsLQdA4G/s1600/forLesson17finish.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Хитроо:) Я обнаружил это только спустя минут 10, и нигде про это не было написано. Хотя может быть я плохо искал..&lt;br /&gt;
Вывод: не верьте дебажному флеш плееру)&lt;br /&gt;
P.S. Я написал это только для того чтобы вы не попались на этом как я)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/06/17.html</link><author>noreply@blogger.com (KonanMentor)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwu1OT0rHW1B9Pr-_SM8UM_WV7pxSl5QCHPuq9WvRCm2iLsHtQLf0YZesvvtnlt-SoDuhVDPzsGsrwGaWjXhDFdQhdvC0F01Wm-yAQ3wqKB0aBFyRepykaWVskwT7R9z5blWfWQQ-gJVjj/s72-c/forLesson17start.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-6711372239150250216</guid><pubDate>Sun, 15 May 2011 20:00:00 +0000</pubDate><atom:updated>2011-05-15T23:00:57.970+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 16. Box2d</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&amp;nbsp; Привет! Я уже говорил, что изучаю box2d, но урок по нему не написал, да и вообще я последнее время ничего не писал в блог. Так что попробую рассказать основные принципы создания игр на физическом движке box2d.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Box2d – абсолютно бесплатный, скачать его можно с &lt;a href=&quot;http://www.box2dflash.org/&quot;&gt;официального сайта&lt;/a&gt;, там над демкой есть большая кнопка скачать. Там же можно почитать &lt;a href=&quot;http://www.box2dflash.org/docs/2.1a/reference/&quot;&gt;документацию&lt;/a&gt;, лучше сразу повесить эту ссылку в закладки т.к. при изучении Вам скорее всего она понадобится много раз. Но перейдём к практике.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Значит так, все начинается с физического мира, туда мы будем добавлять тела и всякие физические штуки. Создаётся мир так: &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;gravity=new b2Vec2(0,9.8);
world = new b2World(gravity,true);
&lt;/pre&gt;&lt;br /&gt;
Всё! Gravity – это вектор гравитации, а в параметрах мира, корме гравитации мы указали ещё что тела могут “спать”. Это значит, что когда новых контактов с телом не возникает, то оно перестаёт выполнять какие-то расчёты, и игра будет жрать меньше памяти. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Дальше нам нужно обновление мира, просто вешаем слушатель:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;addEventListener(Event.ENTER_FRAME, UpdateWorld);
public function UpdateWorld(e:Event):void
{
world.Step(1 / 30, 10, 10);
…
}
&lt;/pre&gt;&lt;br /&gt;
Это очень удобно т.к. если потребуется сделать паузу, то достаточно просто убрать этот слушатель. Параметры 1 / 30, 10, 10 лучше оставить как есть, что они означают, можете почитать в документации. Я написал после world.Step многоточие т.к. там обычно обновляют юзердату тел. Юзердата (userdata) – это мувиклип (точнее содержащая его переменная) физ. тела, то есть в этой функции мы будем обновлять сам мир и обновлять визуальные тела, например, я вместо многоточия обычно пишу что-то такое:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;for (var bb:b2Body = world.GetBodyList(); bb; bb = bb.GetNext()) {
var ud=bb.GetUserData();//UserData
if (ud is box){
ud.x=bb.GetPosition().x*pixels_in_a_meter;
ud.y=bb.GetPosition().y*pixels_in_a_meter;
ud.rotation=bb.GetAngle()*(180/Math.PI);
}
else if(ud is …
}
&lt;/pre&gt;&lt;br /&gt;
* pixels_in_a_meter=30, но об этом чуть позже.&lt;br /&gt;
То есть мы перебираем все физические тела, записываем в переменную юзердату и смотрим, если это коробка, то изменяем координаты и угол поворота.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Кагбе с этим всё. Уроков по box2d over9000, так что разберётесь)) Но по ходу создания физических игр я написал себе бокс2д хелпер. Это класс, который создаёт тела практически в одну строчку. Я его писал для себя так что не надо меня увольнять из гугла.&lt;br /&gt;
&lt;a href=&quot;http://filesdownload.do.am/load/box2d_helper/1-1-0-37&quot;&gt;ВОТ ОН!!!1&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Как им пользоваться? О_о&lt;br /&gt;
Я всё делаю в четыре строки, например, создадим шарик:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var bodyDef=box2dHelper.createBodyDef(100, 50, 2);//x(в пикселях), y(в пикселях), тип
var shape=box2dHelper.createCircleShape(50);//радиус(в пикселях)
var fixtureDef=box2dHelper.createFixtureDef(1, 0.1, 0.1, shape);//плотность,трение, упругость, фигура
var Body=box2dHelper.createBody(world, bodyDef, fixtureDef, 20, this);//мир, определение тела, определение фикстуры, поворот(в градусах), юзердата.
&lt;/pre&gt;&lt;br /&gt;
Ну, в комментариях всё написано. Только остаётся непонятным что же такое тип.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 – статический, не двигается.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 – кинематик, на него действуют силы только те, которые ты сам ему задашь (Прекрасно подходит для создания лифтов, т.к. не действует гравитация и вес пассажира).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 – динамичный, всё по нормальному, действуют все силы, ну в общем  как в нашем мире)&lt;br /&gt;
И ещё я уточнял, что x, y и радиус указываются в пикселях, почему? Если Вы почитаете где-нибудь уроки по box2d, то обязательно встретите такое, что значения в пикселях делят на 30 или реже на 60. Дело в том, что все измерения box2d делает в метрах. И для реалистичности люди делят пиксели на 30. А при переводе из box2d’шных – умножают (чуть выше у меня использовалась переменная pixels_in_a_meter=30, это как раз и есть перевод).&lt;br /&gt;
Ну, вроде как всё. Я уже оставлял эту ссылку, но напишу ещё раз &lt;a href=&quot;http://www.emanueleferonato.com/category/box2d/&quot;&gt;лучший блог по box2d&lt;/a&gt;.&lt;br /&gt;
Cheerio!&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/05/16-box2d.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-1055766734156690279</guid><pubDate>Mon, 02 May 2011 20:28:00 +0000</pubDate><atom:updated>2011-05-02T23:29:15.470+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flash</category><title>отчёт BAFPUG</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Привет! Я уже вернулся с BAFPUG’а. На самой конференции было только около 20ти человек, но всё  равно было интересно. Там была шарная вода, чай, кофе и печеньки)) Сами доклады, я думаю, в ближайшее время появятся на &lt;a href=&quot;http://bafpug.com/&quot;&gt;официальном сайте&lt;/a&gt;.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
На конференции был Виталий Кузьменко, создатель прекрасного сайта &lt;a href=&quot;http://easyflash.org/&quot;&gt;easyflash.org&lt;/a&gt;. Там познакомился с Дмитрием Хусаиновым и Дмитрием Круком, надеюсь на дальнейшее сотрудничество;)&lt;br /&gt;
&lt;br /&gt;
Так же погулял по Минску. Был в зоопарке, в “Столице”, в Аэропорте, на Немиге и ещё в разных интересных местах. Короче, было круто!)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/05/bafpug.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-2971239539298312981</guid><pubDate>Tue, 26 Apr 2011 19:04:00 +0000</pubDate><atom:updated>2011-04-26T22:04:11.206+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flash</category><title>BAFPUG</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Еее!!! 30 апреля я поеду на BAFPUG в Минск. BAFPUG - это сокращённо Belarus Adobe Flash Platform User Group, уже слово Adobe говорит о многом)) Это первый BAFPUG, на который я поеду, должно быть интересно) Подробнее о конференции и о прошлых мероприятиях можно почитать на официальном сайте http://bafpug.com/. Good luck!&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/04/bafpug.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8155023794032758280</guid><pubDate>Wed, 13 Apr 2011 20:39:00 +0000</pubDate><atom:updated>2011-04-13T23:40:35.851+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flash</category><title>Alternativa3D</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Привет! Помучив box2d я решил перейти на Alternativa3D (но, кончено, я продолжу изучать box2d). Alternativa3D - 3D движок, который признал Adobe, значит всё будет как нельзя лучше) Пока что всё понятно и всё работает (не ожидал :) ). Вот то, что я склепал за первые 10 минут:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot; height=&quot;400&quot; width=&quot;400&quot;&gt; &lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/36_cube.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/36_cube.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;400&quot; height=&quot;400&quot;&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
Синтаксис достаточно простой (пока что), это радует. Это, конечно, далеко не все возможности этого движка. Может, что и получится...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Скоро появится Flash CS5.5. &lt;a href=&quot;http://www.adobe.com/uk/products/creativesuite/web/features.html?trackingid=IJUKV&quot;&gt;Убедиться&lt;/a&gt;.Что ж будем ждать)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/04/alternativa3d.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8737557759358352077</guid><pubDate>Wed, 30 Mar 2011 20:48:00 +0000</pubDate><atom:updated>2011-04-13T23:34:27.554+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><title>Странная активность на блоге...</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Странно... Вчера блог посетили 79 человек, сегодня 107(!). Раньше максимум было человек 30, да и то редко... Странно, но приятно)&lt;br /&gt;
До сих пор мучаю физ. движок box2d. Пробовал перейти на nape. Перешёл и... сразу ушёл. Первый и самый большой минус nape&#39;а - отсутствие уроков. По box2d уроков тоже относительно мало, но по сравнению с nape есть что почитать) Взять хотя бы &lt;a href=&quot;http://www.emanueleferonato.com/&quot;&gt;этот &lt;/a&gt;блог, есть раздел box2d, на данный момент в нём находится 91 неплохой урок. Если поискать, то можно найти ещё пару блогов с уроками по box2d. А по nape... Может я, конечно, плохо искал.. я не знаю. Так, что-то я заговорился.&lt;br /&gt;
Давно хотел сказать, что игру мою так и не купили, чего и можно было ожидать, т. к. графика там ниже среднего, как и впрочем, всё остальное)&lt;br /&gt;
Что же ещё сказать...&amp;nbsp; А! Я откопал свою первую флешку. Можно посмотреть &lt;a href=&quot;http://konansthoughts.blogspot.com/p/smile.html&quot;&gt;здесь &lt;/a&gt;и в большом формате &lt;a href=&quot;http://filesdownload.do.am/_ld/0/34_smail.swf&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
Может, кто поделится своими первыми флеш-приложениями?)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/03/blog-post.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-5243650590604447447</guid><pubDate>Sat, 19 Mar 2011 10:12:00 +0000</pubDate><atom:updated>2011-03-19T12:13:12.844+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 15. Get и set, override или Оптимизация.</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
Здравствуйте! Бывают такие случаи, когда нужно при изменении или чтении переменной выполнять какие-либо действия. Ну, например, у меня есть переменная – тик таймера. Когда я изменяю значение это переменной мне нужно изменить и delay таймера. Каждый раз после изменения переменной прописывать изменение delay таймера не хорошо. Что же делать? - Для этого есть специальная фича:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;private var timerDelay:Number = 100;
private function set TimerDealy(value:Number){
timerDelay=value;
//здесь я уже могу прописать и изменение delay таймера
}
private function get TimerDealy(){
return timerDelay;
}
TimerDealy=500;//будет вызываться функция set TimerDealy
trace(TimerDealy);// будет вызываться функция get TimerDealy, выведет 500
&lt;/pre&gt;&lt;br /&gt;
Тут я думаю всё понятно. Так что переходим к override :)&lt;br /&gt;
Но для начала нам нужно понять, что такое наследование классов.&lt;br /&gt;
Допустим у нас есть класс A:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package{
import flash.display.Sprite;
public class A extends Sprite{
public var foo:Number=20;
public function A(){

}
public function traceFoo(){
trace(foo);
}
}
}
&lt;/pre&gt;&lt;br /&gt;
A extends Sprite – это и есть наследование. То есть у класса A будут доступны функции и переменные класса Sprite (x, y, z …). Мы сделаем то же самое, просто мы будем наследовать свой класс, чтобы было понятней.&lt;br /&gt;
Теперь напишем класс B, который будет наследовать класс A:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package{
public class B extends A{
public function B(){

}
}
}
&lt;/pre&gt;&lt;br /&gt;
Сразу видно, что в конструкторе ничего нет, но я говорил, что у наследника будут доступны функции предка. Проверим. Для этого напишем класс Main, который будет создавать экземпляры класса A и B и вызывать у них функцию traceFoo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package  {
import flash.display.Sprite;
public class Main extends Sprite{
public function Main() {
var a:A=new A();
var b:B=new B();

a.traceFoo();
b.traceFoo();
}
}
}
&lt;/pre&gt;&lt;br /&gt;
Должно работать. А где же это может иметь практическое применение? – например, когда вам нужно создать кучу разных врагов, у них всех будет какая-то своя фича, но все они будут двигаться, стрелять, у каждого из них будет броня и жизни. Для этого как раз можно создать класс, у которого будут функции ходьбы, стрельбы, переменные жизни и брони. А потом просто наследовать этот класс.&lt;br /&gt;
Теперь переходим к override. Что это такое и для чего это нужно? Сразу объясню на прошлом примере. Допустим, у нас есть враг, который не будет стрелять, а будет ходить с мечом и бить, кого видит. Но отдельно для него вызывать функцию атаки мечом глупо. Для решения этой проблемы нам и понадобится override. Override просто переназначает функцию. Изменим немного наши классы, в классе A изменяем функцию traceFoo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;virtual public function traceFoo(){
trace(foo);
}
&lt;/pre&gt;&lt;br /&gt;
Просто добавили слово virtual. Теперь в классе B дописываем функцию traceFoo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;override public function traceFoo(){
trace(&quot;у функций одинаковое название, но они выполняют разные действия&quot;);
}
&lt;/pre&gt;&lt;br /&gt;
Класс Main не трогаем, запускаем. Выведет в output :&lt;br /&gt;
20&lt;br /&gt;
у функций одинаковое название, но они выполняют разные действия&lt;br /&gt;
Ну, собственно и всё. Если не получилось – &lt;a href=&quot;http://filesdownload.do.am/load/setgetoverride/1-1-0-33&quot;&gt;качайте пример&lt;/a&gt;. Удачи!)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/03/15-get-set-override.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-2046349470821285780</guid><pubDate>Sat, 05 Mar 2011 17:53:00 +0000</pubDate><atom:updated>2011-03-05T19:54:18.231+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Первая тысяча и peer to peer</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Привет! Мой блог уже посетило 1000 человек!) И в честь этого события я написал небольшой отчёт о p2p. Сейчас я изучаю помимо p2p (peer to peer) ещё физический движок box2d и связку as3+php+mySQL. Но так как я обещал поделиться своими результатами в изучении peer to peer, то в первую очередь расскажу он нём.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ● Для чего нужен p2p и почему это круто?&lt;br /&gt;
&lt;br /&gt;
p2p (он же peet to peer) служит для связи между двумя или более флеш приложениями. Для связи не требуется сервер (Наверное, peer to peer использует сервер Adobe). Данные передаются как сообщения, которые ловят другие клиенты. То есть преимущество peer to peer в том, что нету никакого пинга: обычно делают так – предают данные на сервер, сохраняют их в базу данных и через некаторе время посылают запрос на сервер и получают данные, а p2p нигде данные не хранит, а сразу передаёт их в клиент. Так же можно передавать объекты, переменные, видео и т.д. В то время, как в базе данных мы можем сохранить только строку (текст или число).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ●Как работать с peer to peer?&lt;br /&gt;
&lt;br /&gt;
Что бы работать с peer to peer Вам потребуется flashplayer 10.1 такой имеется в Flash CS5 и в flash develop (я использую Flash CS5). Ещё Вам потребуется код девелопера получить его можно &lt;a href=&quot;http://www.adobe.com/cfusion/entitlement/index.cfm?e=cirrus&quot;&gt;тут&lt;/a&gt;. Мы будем использовать сервер rtmfp://p2p.rtmfp.net/.&lt;br /&gt;
&lt;br /&gt;
В p2p есть такое понятие как группа. Когда пользователь подключается к группе, он видит только тех пользователей, которые находятся в этой группе и сообщения отсылаются только пользователям этой группы.&lt;br /&gt;
&lt;br /&gt;
Для прослушивания сообщений существует специальный слушатель – NetStatusEvent. Вот небольшой пример:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;private function netStatusHandler(e:NetStatusEvent)
{
switch (e.info.code)
{
case &quot;NetConnection.Connect.Success&quot; :
&amp;nbsp; trace(&quot;соединение успешно установлено&quot;);
&amp;nbsp; break;
case &quot;NetGroup.Connect.Success&quot; :
&amp;nbsp; trace (&quot;соединение с группой  успешно установлено &quot;);
&amp;nbsp; break;
case &quot;NetGroup.Posting.Notify&quot; :
&amp;nbsp; trace (&quot;сообщение получено&quot;); 
&amp;nbsp; break;
case &quot;NetGroup.Neighbor.Connect&quot; :
&amp;nbsp; trace (&quot;клиент успешно подключился к группе&quot;);
&amp;nbsp; break;
case &quot;NetGroup.Neighbor.Disconnect&quot; :
&amp;nbsp; trace (&quot;клиент отключился&quot;);
&amp;nbsp; break;
}
}

&lt;/pre&gt;&lt;br /&gt;
Вот так Мы можем отслеживать различные действия.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ●Практика&lt;br /&gt;
&lt;br /&gt;
Я не буду перепечатывать то, что уже написано, поэтому просто оставлю ссылку на урок по созданию чата с помощью одного лишь флеша:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://demiart.ru/forum/index.php?showtopic=150351&quot;&gt;http://demiart.ru/forum/index.php?showtopic=150351&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Demiart требует регистрации, но оно того стоит.&lt;br /&gt;
&lt;br /&gt;
P.S. Код можно сократить, но для понимания сойдёт))&lt;br /&gt;
&lt;br /&gt;
На этом всё)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/03/peer-to-peer.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-2117293542070573248</guid><pubDate>Sun, 20 Feb 2011 14:26:00 +0000</pubDate><atom:updated>2011-02-23T10:11:55.646+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><title>Bow fighting готов к продаже</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;После того как мне пришло сообщение с оценкой моей игры в 5 баллов из 10, я принялся ваять новую версию. Особенно они надавили на графику (4 балла), так что тут мне пришлось подумать как её изменить в лучшую сторону, без помощи дизайнеров. Я решил пойти самым лёгкикм путём, а именно - чёрно-белая графика. Но просто чёрно-белая графика мало кого бы заинтересовала, поэтому мне пришлось добавить несколько эффектов (хочу заметить, что на чёрно-белом фоне игры эффекты выглядели гораздо интереснее). Пришлось ещё добавить 5 уровней для ровного счёта. Но это не главное, главное это то, что игра готова на 100% и осталось только ждать, пока её кто-нибудь купит) &lt;a href=&quot;http://www.flashgamelicense.com/view_game.php?from=dev&amp;amp;game_id=16227&quot;&gt;Играть&lt;/a&gt;&lt;br /&gt;
Так как у меня появилось чуть больше свободного времени и собираюсь начать делать онлайн игру&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Но для онлайн игры нужен сервер, а сервер платный. Поэтому я начну изучать p2p &lt;a href=&quot;http://ru.wikipedia.org/wiki/P2P&quot;&gt;Подробнее здесь&lt;/a&gt;. Если что-нибудь получится, я обязательно отпишусь здесь;)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/02/bow-fighting_20.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-8398799446653977218</guid><pubDate>Wed, 09 Feb 2011 10:18:00 +0000</pubDate><atom:updated>2011-02-09T12:18:46.863+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 14. Меню как основа для игр</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Вроде бы сделал игру, можно играть, но понимаешь, что чего-то не хватает. Чего? Меню. А добавлять его, когда сама игра уже сделана, как-то не хочется. Приходится что-то менять, появляются ошибки и т.д. Как же это исправить? Сделать шаблон меню с основными пунктами, которые есть/должны быть в игре. Чем мы сейчас и займёмся. &lt;br /&gt;
Как оно у нас будет работать:&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot; height=&quot;400&quot; width=&quot;500&quot;&gt; &lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/31_Menu.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/31_Menu.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Меню будет у нас как отдельный мувиклип со своим классом, чтобы не мучаться с настройкой/приклейкой меню к игре.&lt;br /&gt;
Для начала нам нужно его нарисовать: рисуем кнопки (start game, options и help). Так, теперь конвертируем их в мувиклипы НЕ экспротирум в ActionScript (они нам там не понадобятся) и раз мы их не экспротировали, то называем каждую кнопку start game – start_game_bt, options – options_bt и help - help_bt. Кнопки нарисовали.&lt;br /&gt;
Теперь выделяем ВСЕ кнопки, нажимаем F8, называем main_menu И экспортируем в ActionScript. Заходим в меню, там видим наши кнопки, если не видим – значит, что-то не правильно сделали. &lt;br /&gt;
А теперь я расскажу принцип работы нашего меню. Но очень прост: &lt;br /&gt;
1ый кадр – просто кнопка возврата в главное меню, а всё остальное прозрачное, чтобы была видна сама игра, и не приходилось удалять это меню.&lt;br /&gt;
2ой кадр – именно главное меню с теми кнопками, которые мы нарисовали.&lt;br /&gt;
3ий кадр – настройки. Там у нас будет переключатель звука и качества изображения.&lt;br /&gt;
4ый кадр – help – помощь, просто текст с объяснением сути игры и как в ней играть.&lt;br /&gt;
&lt;b&gt;Options:&lt;/b&gt;&lt;br /&gt;
Вот и всё. Теперь руководствуясь этим планом, доделаем наши кнопки. Создаём переключатель:&lt;br /&gt;
1ый кадр &lt;b&gt;переключателя&lt;/b&gt; – Рисуем зелёный фон, создаём статичное текстовое поле и пишем там “on”&lt;br /&gt;
2ой кадр &lt;b&gt;переключателя&lt;/b&gt; – всё то же самое только текст уже “off” и фон уже красный.&lt;br /&gt;
Пошли настройки качества изображения.&lt;br /&gt;
3ий кадр &lt;b&gt;переключателя&lt;/b&gt; – всё то же самое только текст - “best” и фон зелёный.&lt;br /&gt;
4ый кадр &lt;b&gt;переключателя&lt;/b&gt; – всё то же самое только текст - “low” и фон красный.&lt;br /&gt;
Всё это было у нас в мувиклипе &lt;b&gt;переключатель&lt;/b&gt;, не буду уже говорить, как его создать.&lt;br /&gt;
Теперь создаём кейфрейм на 3ем кадре в нашем меню. Добавляем туда  2 статичных текстовых поля с текстами Sounds и Quality, напротив них размещаем 2 переключателя.&lt;br /&gt;
&lt;b&gt;Help:&lt;/b&gt;&lt;br /&gt;
На 4ом кадре создаём keyFrame. Добавляем статичное тестовое поле и пишем туда что-то умное. &lt;br /&gt;
&lt;br /&gt;
И последний штрих: кнопка для возврата в главное меню. Тут всё просто. Создаём кнопку (как создать описано выше) и называем её to_main_menu_bt. А теперь размещаем эту кнопку по всем кадрам меню, кроме 2ого (т.к. там и находится наше главное меню).&lt;br /&gt;
Всё. Меню мы нарисовали. Теперь код. Если у нас есть наше меню на сцене – удаляем его.&lt;br /&gt;
В первом кадре ничего не должно быть, там и пишем код (не создаём класс т.к. тут будет всего 1 строчка):&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var Main_menu=new main_menu(stage);
&lt;/pre&gt;эта строчка создаст это меню.&lt;br /&gt;
Ну, а теперь создаём новый документ ActionScript File и копируем туда код:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package {
 import flash.display.MovieClip;
 import flash.display.Sprite;
 import flash.events.MouseEvent;
 import flash.filters.GlowFilter;
 public class main_menu extends MovieClip {
  private var stg;
  private var sound, quality:Boolean;
  
  public function main_menu(Stg) {
   stg=Stg;
   sound=true;
   quality=true;
   
   stg.addChildAt(this,0);
   this.gotoAndStop(2);
   
   addEventListeners();
  }
  private function addEventListeners(){
   this.start_game_bt.addEventListener(MouseEvent.CLICK, start_game);
   this.options_bt.addEventListener(MouseEvent.CLICK, options_clicked);
   this.help_bt.addEventListener(MouseEvent.CLICK, help_clicked);  
   
   this.start_game_bt.addEventListener(MouseEvent.MOUSE_OVER, start_game_mouseOver);
   this.options_bt.addEventListener(MouseEvent.MOUSE_OVER, options_mouseOver); 
   this.help_bt.addEventListener(MouseEvent.MOUSE_OVER, help_mouseOver); 
   
   this.start_game_bt.addEventListener(MouseEvent.MOUSE_OUT, bt_mouseOut);
   this.options_bt.addEventListener(MouseEvent.MOUSE_OUT, bt_mouseOut); 
   this.help_bt.addEventListener(MouseEvent.MOUSE_OUT, bt_mouseOut); 
  }
  //делаем свечение при наводе мышкой на кнопку
  private function help_mouseOver(e:MouseEvent){
   this.help_bt.filters = [new GlowFilter(0xFFFF00, 0.5, 40, 40, 3.2, 9, false, false)];
  }
  private function start_game_mouseOver(e:MouseEvent){
   this.start_game_bt.filters = [new GlowFilter(0x00FFFF, 0.5, 40, 40, 3.2, 9, false, false)];
  }
  private function options_mouseOver(e:MouseEvent){
   this.options_bt.filters = [new GlowFilter(0xFF00FF, 0.5, 40, 40, 3.2, 9, false, false)];
  }
  //эта функция убирает свечение кнопки 
  private function bt_mouseOut(e:MouseEvent){
   if(this.currentFrame==2){
    e.target.filters = [];//e.target - &quot;текущая кнопка&quot;
   }
  }
  private function help_clicked(e:MouseEvent){
   this.gotoAndStop(4);
   this.to_main_menu_bt.addEventListener(MouseEvent.CLICK, toMainMenu);
  }
  private function start_game(e:MouseEvent){
   new_game();
   self_destruction();
  }
  private function options_clicked(e:MouseEvent){
   this.gotoAndStop(3);
   
   if(sound){
    sound_bt.gotoAndStop(1);
   }
   else{
    sound_bt.gotoAndStop(2);
   }
   
   if(quality){
    quality_bt.gotoAndStop(3);
   }
   else{
    quality_bt.gotoAndStop(4);
   }
   
   sound_bt.addEventListener(MouseEvent.CLICK, sound_clicked);
   quality_bt.addEventListener(MouseEvent.CLICK, quality_bt_clicked);
   this.to_main_menu_bt.addEventListener(MouseEvent.CLICK, toMainMenu); 
  }
  private function new_game(){
   // START GAME
  }  
  public function toMainMenu(e:MouseEvent){
   this.gotoAndStop(2);
   
   addEventListeners();
  }
  private function self_destruction(){   
   this.removeEventListener(MouseEvent.CLICK, start_game);
   this.gotoAndStop(1);
   this.to_main_menu_bt.addEventListener(MouseEvent.CLICK, toMainMenu);
  }
  private function sound_clicked(e:MouseEvent){
   //в зависимости от переменной sound звук будет играть или нет
   if(sound){
    sound=false;
    sound_bt.gotoAndStop(2);
   }
   else{
    sound=true;
    sound_bt.gotoAndStop(1);
   }
   
  }
  private function quality_bt_clicked(e:MouseEvent){
   //чтобы у нас в настройках было по больше пунктов)) делаем пункт качество изображения
   //quality влияет только на те изображения, которые нарисованы во flash
   if(quality){
    quality=false;
    quality_bt.gotoAndStop(4);
    stg.quality = &quot;low&quot;
   }
   else{
    quality=true;
    quality_bt.gotoAndStop(3);
    stg.quality = &quot;best&quot;
   }
   
  }
 }
}
&lt;/pre&gt;На этом всё. Для ленивых &lt;a href=&quot;http://filesdownload.do.am/load/menu_rar/1-1-0-32&quot;&gt;вот исходник&lt;/a&gt;) Пока!&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/02/14.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-6188173805973705584</guid><pubDate>Tue, 08 Feb 2011 21:40:00 +0000</pubDate><atom:updated>2011-02-09T23:31:28.837+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><title>После перерыва...</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Да, что-то я давно не писал ничего. Надо это исправить... Хорошо, напишу я ещё один урок)&lt;br /&gt;
Что же у меня был за перерыв? За это время я написал 2,5 игры. И сейчас ищу арт-дизайнера для одной из них. Кстати об играх. Моя игра &quot;&lt;a href=&quot;http://www.flashgamelicense.com/view_game.php?game_id=16227&quot;&gt;Bow fighting&lt;/a&gt;&quot; стоит 14ой в очереди на рассмотрение (скажут, что мне нужно изменить, как улучшить игру и т.д.). Так что через день-два, я надеюсь, будет маленький отчёт по этой игре. Так, новости вроде бы закончились... Ну, я пошёл писать урок)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/02/blog-post.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-390915134780275854</guid><pubDate>Tue, 01 Feb 2011 21:11:00 +0000</pubDate><atom:updated>2011-02-01T23:11:21.558+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ни о чём</category><title>Bow fighting на аукционе!</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div&gt;Да, это та самая игра, которую уже, наверное, все забыли. Несколько дней назад у меня появился Photoshop CS5 и я смог рисовать некое подобие графики для своей игры) После двух дней мучений, я наконец-то выдавил из себя что-то похожее на то, что я хотел получить и понял, что арт-дизайнер из меня никакой)). Но, тем не менее, я, как и обещал, выложил эту игру на аукцион. &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Если Вы зарегистрированы на &lt;a href=&quot;http://www.flashgamelicense.com/&quot;&gt;этом &lt;/a&gt;сайте, то сможете посмотреть моё &quot;творение&quot; &lt;a href=&quot;http://www.flashgamelicense.com/view_game.php?from=dev&amp;amp;game_id=16227&quot;&gt;пройдя по ссылке&lt;/a&gt;. Если у Вас есть идеи уровней - welcome to комментарии). Вообще-то я сомневаюсь, что эту игру кто-нибудь купит, но попробовать стоит.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Просматривая статистику посещений, я заметил, что ко мне на блог начали приходить люди с поисковиков по запросам, соответствующим теме моего блога, это радует). Если бы они ещё оставляли комментарии, спрашивали, если что-то не понятно... (это такой тонкий намёк :) ). Но, если и так всё получается, то я тоже рад). Ну, и в заключение мне хотелось добавить, что идей уроков у меня, можно сказать, уже нету. Так что, если Вы хотели бы видеть здесь урок, интересный не только Вам, то пишите в комментариях. Даже, если что-то Вам не понятно по ActionScript, то можете написать вопрос мне на &lt;a href=&quot;mailto:konanmentor@gmail.com&quot;&gt;e-mail&lt;/a&gt;. Bye guys!)&lt;/div&gt;&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/02/bow-fighting.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-5731492462341788109</guid><pubDate>Thu, 27 Jan 2011 18:14:00 +0000</pubDate><atom:updated>2011-01-27T20:14:00.147+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 13. Текстовый эффект</title><description>Вот собственно и он:&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;500&quot; height=&quot;400&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot;&gt;
&lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/29_Fall_letters.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/29_Fall_letters.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt;
&lt;/embed&gt;
&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Начнём. Создаём текстовое поле, в нём пишем словно, которое должно у нас падать по буквам. Написали. Теперь нажимаем правой кнопкой мыши и выбираем пункт Break Apart. Текстовое поле разбивается на отдельные текстовые поля, которые содержат отдельную букву. Если Вы ничего не нажимали, то у Вас все эти текстовые поля останутся выделенными. Нажимаем Break Apart ещё раз. И теперь текстовые поля превратились в shape. Теперь самое скучное – выделяем первую букву, конвертируем в символ MovieClip, называем l0 (letter 0)  и в строке имени, где написано &lt;Instance Name&gt; тоже пишем l0 и так далее (l1, l2, l3…). Так, если Вы сделали эту рутинную работу, то выделяем все буквы, жмём F8, называем word, в строке имени пишем то же самое.&lt;br /&gt;
Создаём статичное (нельзя изменять текст) текстовое поле, в нём пишем restart, конвертируем и везде ставим имя restart_bt. Графическая часть готова. Теперь на сцене в первом кадре пишем код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;var fall_distance:Number=200;//дистанция, на которую будут падать буквы
var fall_speed:Number=7.5;//скорость падения
var currentLetter:Number=0;//текущая падающая буква
var start_position:Number=0;//начальный y буквы
restart_bt.visible=false;//прячем кнопку
st_pos();//узнаём стартовый y
restart_bt.addEventListener(MouseEvent.CLICK, restart);
function restart(e:MouseEvent){
 restart_bt.visible=false;//прячем кнопку
 currentLetter=0;//устанаввливаем текущую букву в 0
 for(var i:int=0;i&amp;lt;word.numChildren;i++){//уменьшаем y всех букв на fall_distance
  word.getChildAt(i).y-=fall_distance;
 } 
 word.addEventListener(Event.ENTER_FRAME, fall_letter);//добавляем слушатель
}
word.addEventListener(Event.ENTER_FRAME, fall_letter);//добавляем слушатель
function fall_letter(e:Event){
 var CurLet=word.getChildByName(&quot;l&quot;+currentLetter);//текущая буква (уже не просто номер, а мувиклип)
 if(CurLet.y&lt;start_position+fall_distance){//если ещё не прилетела,
  CurLet.y+=fall_speed;//то увеличиваем y
 }
 else{
  if(word.numChildren&gt;currentLetter+1){//если это была не последняя буква,
   currentLetter++;//то увличиваем номер 
   st_pos();//и пересчитывем начальный y
  }
  else{
   restart_bt.visible=true;//кнопка появляется
   word.removeEventListener(Event.ENTER_FRAME, fall_letter);//слушатель удаляется
  }
 }
}
function st_pos(){
 start_position=word.getChildByName(&quot;l&quot;+currentLetter).y;//устанавливается начальный y буквы
}
&lt;/pre&gt;&lt;br /&gt;
Но так скучно, нужно добавить эффекты, не зря же так звучит тема) Как не странно это займёт мало места, т.к. есть встроенная функция, которая называется filters (фильтры). Сейчас мы будем использовать один вид фильтра – GlowFilter (Свечение). Пишем после строки:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;restart_bt.addEventListener(MouseEvent.CLICK, restart);
&lt;/pre&gt;&lt;br /&gt;
строку&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;this.addEventListener(Event.ENTER_FRAME, effect);//добавляем слушатель, чтобы всегда был эффект свечения
&lt;/pre&gt;&lt;br /&gt;
и пишем саму функцию:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;function effect(e:Event){
 word.filters = [new GlowFilter(Math.random()*0xFFFFFFFF, 1, 20, 20, 3.2, 3, false, false)];//создаём фильтр свечения с рандомным цветом, не прозрачный, с разбросом по x 20 и по y 20 и т.д.
}
&lt;/pre&gt;&lt;br /&gt;
Только для красоты следует установить цвет фона тёмный.&lt;br /&gt;
Нажимаем Ctrl+Enter и любуемся) &lt;a href=&quot;http://filesdownload.do.am/load/fall_lettersrar/1-1-0-30&quot;&gt;Исходник &lt;/a&gt;как всегда для Вас в свободном доступе) Пока!</description><link>http://konansthoughts.blogspot.com/2011/01/13.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-4782930087247710894</guid><pubDate>Wed, 26 Jan 2011 17:08:00 +0000</pubDate><atom:updated>2011-06-17T23:59:16.807+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 12. Столкновения со стенами</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Мне так кажется, что предложений по урокам можно скоро не ждать, так что я пока что напишу ещё один урок. Из названия урока можно понять, что в нашем примере будет бегать человек и биться головой об стены) Так оно, в общем-то, и есть:&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot; height=&quot;400&quot; width=&quot;500&quot;&gt; &lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/28_labirint.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/28_labirint.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Сразу скажу, что это не самый лучший вариант проверки столкновений, но встроенная функция – есть встроенная функция. Так что прошу любить и комментировать. Надеюсь, что Вы уже привыкли работать с классами, потому что в последующих уроках они также будут присутствовать. Открываем новый документ as3, подсоединяем класс game, сохраняем. Создаём класс game и пишем код:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package {
 import flash.display.Sprite;
 public class game extends Sprite {
   public var Man, Map;
   public var stgWidth:Number=500;
   public var stgHeight:Number=400;
   public var general_container;
  public function game() {
   general_container=new Sprite();
   stage.addChildAt(general_container, 0);
   
   Map=new map();
   general_container.addChildAt(Map,0);
   
   Man=new man(this);
  }
 }
}
&lt;/pre&gt;&lt;br /&gt;
Так, лучше сейчас всё нарисовать, чтобы потом не отвлекаться. Рисуем кружок или квадратик, короче всё что хотите, только стандартной формы, чтобы маркеры было удобно вешать. Выделяем то, что Вы нарисовали, нажимаем  F8 и называем man. &lt;b&gt;Теперь заходим в man и там&lt;/b&gt; выделяем картинку, (ту, что Вы нарисовали) жмём f8 и называем это man_image. Создаём 4 маркера, 1ый называем  top_marker и размещаем его вверху, 2ой называем bottom_marker и размещаем внизу и т.д.  Здесь всё нужно экспортировать в as. Рисуем стену ( квадратик). Называем wall (стена) *Здесь всё нужно экспортировать в as *). И, наконец составляем карту из этих стен. Потом, выделяем все стены в нашей карте и называем это map. Так, нам осталось всего ничего – написать класс man.&lt;br /&gt;
Код ходьбы будет такой же, как и в вертолёте. Только мы добавим ещё функцию проверки столкновений:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;private function check_hit(){
var currentWall;
 var speedX=Math.cos(this.man_image.rotation*radians)*Speed;
 var speedY=Math.sin(this.man_image.rotation*radians)*Speed;
 for(var i:int=0;i&amp;lt;game.Map.numChildren;i++){
  currentWall=game.Map.getChildAt(i);
  if(this.top_marker.hitTestObject(currentWall)){
   if(speedY&amp;lt;0){
    Speed*=-1;
   }  
  }
  else if(this.bottom_marker.hitTestObject(currentWall)){
   if(speedY&amp;gt;0){
    Speed*=-1;
   }
  }
  else if(this.left_marker.hitTestObject(currentWall)){
   if(speedX&amp;lt;0){
    Speed*=-1;
   }
  }
  else if(this.right_marker.hitTestObject(currentWall)){
   if(speedX&amp;gt;0){
    Speed*=-1;
   }
  }
 }
}

&lt;/pre&gt;Сразу скажу, что это очень приблизительная проверка. Здесь нет отражения угла, да и сам hitTestObject &lt;b&gt;очень &lt;/b&gt;не точный. Если Вам нужно точное определение столкновений, то забудьте про hitTestObject и открывайте учебник по геометрии. Ну, а про сам алгоритм: перебираем все стены и проверяем столкновение с учётом направления (с какой стороной мяч столкнулся со стеной). Можно, конечно написать свою проверку, но это довольно таки не просто. Вот весь код класса man:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package {
 import flash.display.MovieClip;
 import flash.events.*;
 import flash.ui.Keyboard;
 public class man extends MovieClip {
  public var game;
  private var radians:Number=Math.PI/180;

  private var up,down,left,right:Boolean;
  public var Speed,rotationSpeed:Number;
  private var moveSpeed,friction,maxSpeed,rotatSpeed:Number;

  public function man(Game){
   game=Game;
   this.x=game.stgWidth/2;
   this.y=game.stgHeight/2;
   Speed=0;
   rotationSpeed=0;
   maxSpeed=10;
   friction=0.94;
   moveSpeed=0.5;
   rotatSpeed=1;
   
   top_marker.visible=false;
   bottom_marker.visible=false;
   left_marker.visible=false;
   right_marker.visible=false;
   
   game.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
   game.stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
   this.addEventListener(Event.ENTER_FRAME,move_player);
   
   game.general_container.addChildAt(this,1);
  }  
  private function key_down(e:KeyboardEvent) {
   if (e.keyCode==Keyboard.UP||e.keyCode==87) {
    up=true;
   }
   if (e.keyCode==Keyboard.LEFT||e.keyCode==65) {
    left=true;
   }
   if (e.keyCode==Keyboard.RIGHT||e.keyCode==68) {
    right=true;
   }
   if (e.keyCode==Keyboard.DOWN||e.keyCode==83) {
    down=true;
   }
  }
  private function key_up(e:KeyboardEvent) {
   if (e.keyCode==Keyboard.UP||e.keyCode==87) {
    up=false;
   }
   if (e.keyCode==Keyboard.LEFT||e.keyCode==65) {
    left=false;
   }
   if (e.keyCode==Keyboard.RIGHT||e.keyCode==68) {
    right=false;
   }
   if (e.keyCode==Keyboard.DOWN||e.keyCode==83) {
    down=false;
   }
  }
  private function move_player(e:Event) {
   if (maxSpeed&amp;gt;=Math.abs(Speed)) {
    if (right==true) {
     rotationSpeed+=rotatSpeed;
    }
    if (up==true) {
     Speed+=moveSpeed;
    }
    if (left==true) {
     rotationSpeed-=rotatSpeed;
    }
    if (down==true) {
     Speed-=moveSpeed;
    }
   }
   else{
    Speed=maxSpeed*(Speed/Math.abs(Speed));
   }
   check_hit();
   update_coordinats();   
  }
  private function check_hit(){
   var currentWall;
   var speedX=Math.cos(this.man_image.rotation*radians)*Speed;
   var speedY=Math.sin(this.man_image.rotation*radians)*Speed;
   for(var i:int=0;i&amp;lt;game.Map.numChildren;i++){
    currentWall=game.Map.getChildAt(i);
    if(this.top_marker.hitTestObject(currentWall)){
     if(speedY&amp;lt;0){
      Speed*=-1;
     }  
    }
    else if(this.bottom_marker.hitTestObject(currentWall)){
     if(speedY&amp;gt;0){
      Speed*=-1;
     }
    }
    else if(this.left_marker.hitTestObject(currentWall)){
     if(speedX&amp;lt;0){
      Speed*=-1;
     }
    }
    else if(this.right_marker.hitTestObject(currentWall)){
     if(speedX&amp;gt;0){
      Speed*=-1;
     }
    }
   }
  }
  private function update_coordinats() {
   this.man_image.rotation+=rotationSpeed;   
   
   this.x+=Math.cos(this.man_image.rotation*radians)*Speed;
   this.y+=Math.sin(this.man_image.rotation*radians)*Speed;
   rotationSpeed-=rotationSpeed*0.1;
   Speed*=friction;   
  }
 }
}&amp;nbsp;&lt;/pre&gt;Более подробно про столкновения можно узнать &lt;a href=&quot;http://noregret.org/tutor/n/collision/#start&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
Надеюсь, что эта информация была для Вас полезной. Комментируйте, оставляйте идеи уроков и удачи Вам! &lt;a href=&quot;http://filesdownload.do.am/load/labirint/1-1-0-27&quot;&gt;Исходник &lt;/a&gt;и good bye)&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/01/12.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-3191679378439078906</guid><pubDate>Mon, 24 Jan 2011 16:21:00 +0000</pubDate><atom:updated>2011-01-24T19:50:23.271+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 11.6. Меню</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Это как не печально последний урок( Написать больше у меня не хватит вдохновения и с каждым уроком я всё больше запутываюсь сам и запутываю Вас. Но этот урок я постараюсь объяснить полностью. Я надеюсь, что менюшка у Вас выйдет покрасивее, чем у меня, но тем не менее вот:&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot; height=&quot;400&quot; width=&quot;500&quot;&gt; &lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/25_helicopter.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/25_helicopter.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Первое, что нам нужно сделать – это нарисовать меню. Обязательно у Вас должны быть 2 текстовых поля с именами health_txt и score_txt. Конвертируем меню с текст. полями в мувиклип, называем menu_mc и Export for ActionScript. Дальше ставим своё меню в координаты x=0, y=0, заходим в меню (двойной клик) и перемещаем как Вам нужно относительно сцены (Просто чтобы Вам потом не пришлось двигать меню в какие-то координаты при помощи кода, а по умолчанию координаты 0,0).&lt;br /&gt;
Так, отлично. Открываем класс player. Пишем там, где мы объявляли переменные:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;public var Score, health;
&lt;/pre&gt;Дальше, под &lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;friction=0.94;//замедление
moveSpeed=1;
rotatSpeed=1;
&lt;/pre&gt;Пишем:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;health=100;
Score=0;
&lt;/pre&gt;С этим классом закончили. Переходим к классу bot_bullet&lt;br /&gt;
Находим функцию check_hit() и после&lt;br /&gt;
//отнимаем жизни у игрока&lt;br /&gt;
Пишем:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.Player.health-=1;
game.Menu_mc.update_TextFields();
&lt;/pre&gt;Можно написать вместо 1 другое число (это сколько health points снимится за одно попадание)&lt;br /&gt;
Открываем класс bot, тоже находим функцию check_hit(), только уже в классе man и после строки&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.bullets_container.getChildAt(i).self_destruction();
&lt;/pre&gt;пишем:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.Player.Score+=3;
game.Menu_mc.update_TextFields();
&lt;/pre&gt;Осталось всего 2 класса) (Теперь, Вы, наверное, понимаете, почему я не писал все изменения в уроках)&lt;br /&gt;
Опять находми функцию check_hit() и после&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;if(this.Marker.hitTestObject(game.Player.Marker)){
kill=true;
&lt;/pre&gt;вставляем &lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.Player.Score+=5;
&lt;/pre&gt;а после 2ого kill=true; пишем&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.Player.Score-=2;
&lt;/pre&gt;Ну и наконец, чтобы тексты обновились, в if(kill==true){&lt;br /&gt;
Пишем &lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;game.Menu_mc.update_TextFields();
&lt;/pre&gt;Остался последний класс - game!) &lt;br /&gt;
Объявляем переменную Menu_mc:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;public var Player, Map, Menu_mc;
&lt;/pre&gt;и в самом конце, после&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;Player=new player(this);
&lt;/pre&gt;пишем&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;Menu_mc=new menu_mc(this);
&lt;/pre&gt;Ха-ха, я Вас обшутил, нам же ещё и класс menu_mc нужно написать) Но на этот раз это реально последнее, что нам нужно сделать. Создаём новый документ ActionScript File, называем menu_mc. Код:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package {
 import flash.display.Sprite;
 import flash.events.Event;
 public class menu_mc extends Sprite {
  private var game;
  public function menu_mc(Game) {
   game=Game;
   this.addEventListener(Event.ADDED_TO_STAGE, addToStg);
   game.general_container.addChildAt(this,4);   
  }
  private function addToStg(e:Event){
   this.removeEventListener(Event.ADDED_TO_STAGE, addToStg);
   update_TextFields();
  }
  public function update_TextFields(){
   this.health_txt.text=game.Player.health;
   this.score_txt.text=game.Player.Score;
  }
 }
}
&lt;/pre&gt;Всё! Ну а главное меню и всякие мелкие доработки Вам придётся писать самим. Если Вы внимательно прочитали уроки, то проблем не должно возникнуть. Что там осталось написать? Чтобы не было отрицательных жизней, чтобы можно было начать новую игру, (вставить ссылку на мой блог xD) кажется всё. Можно ещё сделать разные настройки: звук, графика… Но это уже на любителя. Это был последний урок серии “Создание игры” (Уроки 11 серии). Жду дельных предложений в комментариях к этому посту на счёт идей уроков или можете написать мне на e-mail. Вы думали это всё? А вот и нет!) …&lt;a href=&quot;http://filesdownload.do.am/load/helicopter_v1_6/1-1-0-26&quot;&gt;Исходник&lt;/a&gt;!!! :) Ну, ладно, пока!&lt;/div&gt;</description><link>http://konansthoughts.blogspot.com/2011/01/116.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-676004458466193588.post-5957460474501921049</guid><pubDate>Sun, 23 Jan 2011 16:02:00 +0000</pubDate><atom:updated>2011-01-23T18:02:02.314+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Уроки ActionScript 3</category><title>Урок 11.5  Боты</title><description>Скучно вот так просто летать… Нужно добавить экшена) Значит - делаем ботов.&lt;br /&gt;
Искусственный интеллект у нас будет простой – если игрок в видимости бота и время перезарядки вышло, то тогда стрелять. В общем, боты довольно тупые) Можете в этом убедиться:&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;500&quot; height=&quot;400&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;Install_Flash_Player_9.exe&quot;&gt;
&lt;param name=movie value=&quot;http://filesdownload.do.am/_ld/0/24_helicopter.swf&quot;&gt;&lt;embed src=&quot;http://filesdownload.do.am/_ld/0/24_helicopter.swf&quot; pluginspage=&quot;Install_Flash_Player_9.exe&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;400&quot;&gt;
&lt;/embed&gt;
&lt;/object&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Класс ботов похож на класс людей, а класс пули ботов на класс пули игрока, так что открываем класс man, жмём save as, в имя файла пишем bot. Код будет очень похож, и выкладывать его в урок я не буду. Всё как всегда в &lt;a href=&quot;http://filesdownload.do.am/load/helicopter_v1_4/1-1-0-23&quot;&gt;исходнике&lt;/a&gt;. И не забываем нарисовать это НЛО (называть bot, экспортировать …). Рисуем пулю, называем bot_bullet. Уже не говорю про экспортирование :) Код тоже похож, но он маленький, так что вот:&lt;br /&gt;
&lt;pre class=&quot;brush:as3&quot;&gt;package {
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.geom.Point;
 public class bot_bullet extends MovieClip {

  private var speedX,speedY:Number;
  private var game;
  private var Speed:Number=15;
  private var radians:Number=Math.PI/180;
  private var speedRotation:Number;

  public function bot_bullet(Game, Parent) {
   game=Game;
   speedRotation=Math.random()*9+1;
   this.rotation=Parent.Rotation;
   var bulletAngle:Number=this.rotation*radians;
   speedX=Math.cos(bulletAngle)*Speed;
   speedY=Math.sin(bulletAngle)*Speed;
   
   this.x=Parent.x;
   this.y=Parent.y;
   
   this.addEventListener(Event.ENTER_FRAME,update_bullet);
   
   game.bot_bullets_container.addChildAt(this,0);
  }
  private function update_bullet(e:Event) {
   update_coordinats();
   check_hit();
   rotate();
  }
  private function rotate(){
   this.rotation+=speedRotation;
  }
  private function check_hit(){
   if(this.hitTestObject(game.Player.Marker)){
    //отнимаем жизни у игрока
    self_destruction();
   }
  }
  private function update_coordinats() {
   //проверка на вылет пули за пределы окна
   var point:Point=new Point(this.x,this.y);
   point=game.bot_bullets_container.localToGlobal(point);
   if ((point.x+this.width&amp;lt;game.stgWidth+30)&amp;&amp;(point.y+this.height&amp;lt;game.stgHeight+30)&amp;&amp;(point.x-this.width&amp;gt;0-30)&amp;&amp;(point.y-this.width&amp;gt;0-30)) {
    this.x+=speedX;
    this.y+=speedY;
   } else {
    self_destruction();
   }
  }
  public function self_destruction() {
   // иногда по неизвестной мне причине объект может удалить себя дважды и при этом возникнет ошибка
   //поэтому лучше себя застраховать
   try { 
    this.removeEventListener(Event.ENTER_FRAME,update_bullet);
    this.parent.removeChild(this); 
   } catch (Error) {

   }
  }
 }
} 
&lt;/pre&gt;Надеюсь, Вы поймёте, что если бы я писал все изменения в урок, то это заняло бы страниц 10. В следующем уроке мы сделаем меню, а в следующем будут всякие доработки. Так что осталось всего 2 урока! Пойду праздновать свой день рождения (21 января). Как всегда &lt;a href=&quot;http://filesdownload.do.am/load/helicopter_v1_4/1-1-0-23&quot;&gt;исходник &lt;/a&gt;и до следующего поста!))</description><link>http://konansthoughts.blogspot.com/2011/01/115.html</link><author>noreply@blogger.com (KonanMentor)</author><thr:total>0</thr:total></item></channel></rss>