<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Разработка flash игр</title>
	<atom:link href="http://www.anegmetex.com/devblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anegmetex.com/devblog</link>
	<description>Всё для разработки флэш игр, полезные классы, статьи, уроки</description>
	<lastBuildDate>Fri, 29 Apr 2011 12:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Спонсорский код CPMStar</title>
		<link>http://www.anegmetex.com/devblog/2011/04/29/sponsorskijj-kod-cpmstar/</link>
		<comments>http://www.anegmetex.com/devblog/2011/04/29/sponsorskijj-kod-cpmstar/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 12:00:31 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Монетизация]]></category>
		<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=347</guid>
		<description><![CDATA[Многие интересуются могу ли я дать им спонсорский код чтобы выпустить игру с рекламой CPMStar. Могу, пишите мне на почту oleg[at]anegmetex.com
]]></description>
			<content:encoded><![CDATA[<p>Многие интересуются могу ли я дать им спонсорский код чтобы выпустить игру с рекламой CPMStar. Могу, пишите мне на почту oleg[at]anegmetex.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/04/29/sponsorskijj-kod-cpmstar/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Achievements engine</title>
		<link>http://www.anegmetex.com/devblog/2011/04/28/achievements-engine/</link>
		<comments>http://www.anegmetex.com/devblog/2011/04/28/achievements-engine/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 22:27:34 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Полезные классы]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Геймплей]]></category>
		<category><![CDATA[Классы]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=343</guid>
		<description><![CDATA[А вот ещё класс от меня. Точнее даже не класс, а система классов плюс визуальный компонент… короче для краткости будем называть движком ачивок 
И нужен, как вы уже наверно догадались, для менеджмента ачивок, хранения их значений между сессиями игры, отображение взятых ачивок и т.д.
Для всего этого безобразия нам потребуется куча классов которые я навыкладывал в [...]]]></description>
			<content:encoded><![CDATA[<p>А вот ещё класс от меня. Точнее даже не класс, а система классов плюс визуальный компонент… короче для краткости будем называть движком ачивок <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
И нужен, как вы уже наверно догадались, для менеджмента ачивок, хранения их значений между сессиями игры, отображение взятых ачивок и т.д.</p>
<p>Для всего этого безобразия нам потребуется куча классов которые я навыкладывал в предыдущих сериях, а именно <a href="http://www.anegmetex.com/devblog/2009/12/15/kak-ispolzovat-cookies-vo-flash/">Cookie.as</a>, <a href="http://www.anegmetex.com/devblog/2009/12/30/klass-s-poleznymi-matematicheskimi-funkciyami/">ageMath.as</a>, <a href="http://www.anegmetex.com/devblog/2010/01/19/klass-vektora/">ageVector.as</a>, <a href="http://www.anegmetex.com/devblog/2011/04/15/zvuki-i-muzyka/">sounds.as</a>, <a href="http://www.anegmetex.com/devblog/2009/12/04/klass-dlya-plavnogo-poyavleniya-i-zatukhaniya-movieclip-ov/">alphaFader.as</a>. Все они уже есть в исходниках примера, так что отдельно качать ничего не надо. </p>
<p>Да я знаю что практика таскания  кучи библиотек многим не по душе, однако я хочу отметить – я даю готовые решения, а не делаю уроки <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  так что этот беспредел будет и дальше продолжаться. Я вообще подумываю собрать все наработки в какое-то подобие фреймворка, точнее даже темплейта, который можно будет загрузить и уже на основе него ваять новую игрушку <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ну ладна, от лирики к нашим баранам, то есть ачивкам.<br />
<span id="more-343"></span></p>
<p>Сразу смотрим как это работает:<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="500" height="400"><param name=movie value="http://www.anegmetex.com/devblog/files/achEngine.swf"><param name=quality value=high><embed src="http://www.anegmetex.com/devblog/files/achEngine.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="400"></embed></object></p>
<p>Первые три кнопки &#8211; получение ачивки, последняя кнопка очищает все набранные достижения. </p>
<p>Все ачивки делятся на два типа – обычные и с параметром.<br />
<em>Обычные</em> – это такие, которые получаешь за определённое действие, например пройти первый уровень.<br />
<em>С параметром</em> – это когда например чтобы получить ачивку надо убить 5 монстров. Все текущие значения сохраняются внутри движка ачивок, так что ни о чём думать не надо. </p>
<p>Как же использовать движок ачивок в своих проектах? Во-первых надо добавить мовиклип achInfo на главную временную линейку. Его можно кастомизировать под стиль игры. Проще всего скопировать его из примера. Назовём этот экземпляр «achInfoClip».</p>
<p>Потом в классе ach в функции loadAllAch() записываем те ачивки, которые нам нужны. Можно конечно и напрямую вызывать addAchToDB(…) из главной программы. Это кому как удобно.</p>
<p>Далее инициализируем движок ачивок:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">ach.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'myAch'</span>,achInfoClip<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><br/><br />
где первый параметр – имя куки, в который будут сохранятся достижения, второй – имя нашего информационного мовиклипа.</p>
<p>Далее можно загрузить старые значения ачивок:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">ach.<span style="color: #006600;">loadAchFromCookie</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><br/><br />
и можно уже получать достижения <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  для простых ачивок есть функция:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">ach.<span style="color: #006600;">getAch</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'lev1'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><br/><br />
для ачивок с параметром:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">ach.<span style="color: #006600;">incAchCnt</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill5'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><br/><br />
Вот собственно и всё. Класс ach уже сам определит, была ли взята ачивка или нет. Если ещё нет – покажет информацию по ачивке через мовиклип achInfoClip. И конечно же сохранит результат в файл куки. Думаю довольно удобно.</p>
<p>Обнулить все результаты ачивок можно следующей функцией:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">ach.<span style="color: #006600;">initAchCookie</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><br/><br />
Сам же код примера выглядит следующим образом. Из комментариев думаю всё ясно:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">&nbsp;
<span style="color: #0066CC;">import</span> main.<span style="color: #66cc66;">*</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//инициализация движка ачивок</span>
ach.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'myAch'</span>,achInfoClip<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//также нам потребуется звук</span>
sounds.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">400</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Загружаем старые ачивки</span>
ach.<span style="color: #006600;">loadAchFromCookie</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Обновление информации по ачивкам</span>
<span style="color: #000000; font-weight: bold;">function</span> updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	txt.<span style="color: #0066CC;">text</span>=<span style="color: #ff0000;">&quot;Achievements:<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> iobj:<span style="color: #0066CC;">String</span>;
	<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>iobj <span style="color: #b1b100;">in</span> ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		txt.<span style="color: #006600;">appendText</span><span style="color: #66cc66;">&#40;</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">title</span>+<span style="color: #ff0000;">' '</span><span style="color: #66cc66;">&#41;</span>;
		txt.<span style="color: #006600;">appendText</span><span style="color: #66cc66;">&#40;</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span>?<span style="color: #ff0000;">'on'</span>:<span style="color: #ff0000;">'off'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #808080; font-style: italic;">//Если ачивка количественная - выводим сколько осталось в процентах</span>
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntNeed</span><span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
			txt.<span style="color: #006600;">appendText</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'   completed '</span>+ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span><span style="color: #66cc66;">/</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntNeed</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">100</span>+<span style="color: #ff0000;">'%'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		txt.<span style="color: #006600;">appendText</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #66cc66;">&#125;</span>
updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//кнопки получения ачивок</span>
but1.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, but1_Click<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> but1_Click<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	ach.<span style="color: #006600;">getAch</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'lev1'</span><span style="color: #66cc66;">&#41;</span>;
	updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>	
&nbsp;
but2.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, but2_Click<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> but2_Click<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	ach.<span style="color: #006600;">getAch</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'dropAb'</span><span style="color: #66cc66;">&#41;</span>;
	updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>	
&nbsp;
but3.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, but3_Click<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> but3_Click<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	ach.<span style="color: #006600;">incAchCnt</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'kill5'</span><span style="color: #66cc66;">&#41;</span>;
	updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>	
&nbsp;
<span style="color: #808080; font-style: italic;">//Стереть все записанные ачивки</span>
but4.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, but4_Click<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> but4_Click<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	ach.<span style="color: #006600;">initAchCookie</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	updateTXT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><br/><br />
Класс ach – главный класс движка ачивок. Здесь происходит всё управление:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package main 
<span style="color: #66cc66;">&#123;</span> 
     <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ach 
	 <span style="color: #66cc66;">&#123;</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> db:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Все ачивки здесь</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> achInfoMC:achInfo; <span style="color: #808080; font-style: italic;">//Мовиклип с инфой по ачивке</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> cookieName:<span style="color: #0066CC;">String</span>; <span style="color: #808080; font-style: italic;">//Имя куки файла куда пишем ачивки</span>
&nbsp;
&nbsp;
		   <span style="color: #808080; font-style: italic;">//Внутрение переменные</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> iobj:<span style="color: #0066CC;">String</span>;
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> myCookie:Cookie;
&nbsp;
		   <span style="color: #808080; font-style: italic;">//создаём ачивки. Можно конечно вызывать извне класса но думаю так удобней</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> loadAllAch<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span> 	
				addAchToDB<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;lev1&quot;</span>,<span style="color: #ff0000;">&quot;Beginner&quot;</span>,<span style="color: #ff0000;">&quot;Complete the first level.&quot;</span><span style="color: #66cc66;">&#41;</span>;
				addAchToDB<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;dropAb&quot;</span>,<span style="color: #ff0000;">&quot;Mad drop&quot;</span>,<span style="color: #ff0000;">&quot;Use 'Drop' ability four times during the battle.&quot;</span><span style="color: #66cc66;">&#41;</span>;
				addAchToDB<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;kill5&quot;</span>,<span style="color: #ff0000;">&quot;Warrior&quot;</span>,<span style="color: #ff0000;">&quot;Kill 5 enemies.&quot;</span>,<span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
&nbsp;
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Инициализация движка ачивок</span>
			<span style="color: #808080; font-style: italic;">// _cookieName - имя кукиса куда пишем взятые ачивки</span>
			<span style="color: #808080; font-style: italic;">// _achInfoMC - имя мовиклипа, отвечающего за отображение инфы по взятой ачивке</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span>_cookieName:<span style="color: #0066CC;">String</span>,_achInfoMC:achInfo<span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span> 
		   		achInfoMC=_achInfoMC;
				cookieName=_cookieName;
&nbsp;
				myCookie=<span style="color: #000000; font-weight: bold;">new</span> Cookie<span style="color: #66cc66;">&#40;</span>cookieName<span style="color: #66cc66;">&#41;</span>;
&nbsp;
				loadAllAch<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;	
           <span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Добавление ачивки базу</span>
			<span style="color: #808080; font-style: italic;">// _achName - имя ачивки по которой будем её вызывать</span>
			<span style="color: #808080; font-style: italic;">// _achTitle - отображаемое имя ачивки</span>
			<span style="color: #808080; font-style: italic;">// _achDsc - описание ачивки</span>
			<span style="color: #808080; font-style: italic;">// _achCnt - если не ноль - ачивка с параметром</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addAchToDB<span style="color: #66cc66;">&#40;</span>_achName:<span style="color: #0066CC;">String</span>,_achTitle:<span style="color: #0066CC;">String</span>,_achDsc:<span style="color: #0066CC;">String</span>,_achCnt:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span> 
				db<span style="color: #66cc66;">&#91;</span>_achName<span style="color: #66cc66;">&#93;</span>=<span style="color: #000000; font-weight: bold;">new</span> achItem<span style="color: #66cc66;">&#40;</span>_achName,_achTitle,_achDsc,_achCnt<span style="color: #66cc66;">&#41;</span>;
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
		   <span style="color: #808080; font-style: italic;">// Загрузка ачивок из кукисов</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> loadAchFromCookie<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>iobj <span style="color: #b1b100;">in</span> db<span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					db<span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span>=<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#40;</span>myCookie.<span style="color: #0066CC;">get</span><span style="color: #66cc66;">&#40;</span>iobj+<span style="color: #ff0000;">'_active'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
					db<span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span>=<span style="color: #0066CC;">int</span><span style="color: #66cc66;">&#40;</span>myCookie.<span style="color: #0066CC;">get</span><span style="color: #66cc66;">&#40;</span>iobj+<span style="color: #ff0000;">'_cntCur'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
		   <span style="color: #808080; font-style: italic;">// Обнуление всех ачивок</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> initAchCookie<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>iobj <span style="color: #b1b100;">in</span> db<span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					myCookie.<span style="color: #006600;">putNoFlush</span><span style="color: #66cc66;">&#40;</span>iobj+<span style="color: #ff0000;">'_active'</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
					myCookie.<span style="color: #006600;">putNoFlush</span><span style="color: #66cc66;">&#40;</span>iobj+<span style="color: #ff0000;">'_cntCur'</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
					db<span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span>=<span style="color: #000000; font-weight: bold;">false</span>;
					db<span style="color: #66cc66;">&#91;</span>iobj<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span>=<span style="color: #cc66cc;">0</span>;
				<span style="color: #66cc66;">&#125;</span>
				myCookie.<span style="color: #006600;">flushData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
		   <span style="color: #808080; font-style: italic;">// Записать получение ачивки с именем ach_name</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getAch<span style="color: #66cc66;">&#40;</span>ach_name:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
			    <span style="color: #808080; font-style: italic;">//Берём ачивку только если она уже не взята</span>
			   	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
		   			db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span>=<span style="color: #000000; font-weight: bold;">true</span>;
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>sounds<span style="color: #66cc66;">&#41;</span> sounds.<span style="color: #006600;">PlaySnd</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;snd_ach&quot;</span><span style="color: #66cc66;">&#41;</span>;
					achInfoMC.<span style="color: #006600;">showAch</span><span style="color: #66cc66;">&#40;</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
					myCookie.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span>ach_name+<span style="color: #ff0000;">'_active'</span>,db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span><span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
				<span style="color: #66cc66;">&#125;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
		   <span style="color: #808080; font-style: italic;">// Установить параметр ачивки ach_name в значение ach_cnt</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setAchCnt<span style="color: #66cc66;">&#40;</span>ach_name:<span style="color: #0066CC;">String</span>,ach_cnt:<span style="color: #0066CC;">int</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
			   	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
		   			db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span>=ach_cnt;
					myCookie.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span>ach_name+<span style="color: #ff0000;">'_cntCur'</span>,db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
					<span style="color: #808080; font-style: italic;">//Если параметр ачивки достиг максимального значения - получаем ачивку</span>
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span><span style="color: #66cc66;">&gt;</span>=db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntNeed</span><span style="color: #66cc66;">&#41;</span>
					<span style="color: #66cc66;">&#123;</span>
						db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span>=<span style="color: #000000; font-weight: bold;">true</span>;
						db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span>=db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntNeed</span>;
						<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>sounds<span style="color: #66cc66;">&#41;</span> sounds.<span style="color: #006600;">PlaySnd</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;snd_ach&quot;</span><span style="color: #66cc66;">&#41;</span>;
						achInfoMC.<span style="color: #006600;">showAch</span><span style="color: #66cc66;">&#40;</span>ach.<span style="color: #006600;">db</span><span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
						myCookie.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span>ach_name+<span style="color: #ff0000;">'_active'</span>,db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">active</span><span style="color: #66cc66;">&#41;</span>;
						<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
					<span style="color: #66cc66;">&#125;</span>
				<span style="color: #66cc66;">&#125;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
		   <span style="color: #66cc66;">&#125;</span>
&nbsp;
		   <span style="color: #808080; font-style: italic;">// Увеличить на единицу параметр ачивки ach_name</span>
		   <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> incAchCnt<span style="color: #66cc66;">&#40;</span>ach_name:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
			   setAchCnt<span style="color: #66cc66;">&#40;</span>ach_name,db<span style="color: #66cc66;">&#91;</span>ach_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">cntCur</span>+<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
		   <span style="color: #66cc66;">&#125;</span>
	 <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><br/></p>
<p>Класс achItem – описывает одну ачивку. В этом классе хранится только информация:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package main 
<span style="color: #66cc66;">&#123;</span> 
     <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> achItem 
	 <span style="color: #66cc66;">&#123;</span>
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">name</span>:<span style="color: #0066CC;">String</span>; <span style="color: #808080; font-style: italic;">//имя ачивки по которой будем её вызывать</span>
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> title:<span style="color: #0066CC;">String</span>; <span style="color: #808080; font-style: italic;">//отображаемое имя ачивки</span>
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> desc:<span style="color: #0066CC;">String</span>; <span style="color: #808080; font-style: italic;">//описание ачивки</span>
&nbsp;
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> active:<span style="color: #0066CC;">Boolean</span>; <span style="color: #808080; font-style: italic;">//взята ли ачивка</span>
&nbsp;
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> cntNeed:<span style="color: #0066CC;">int</span>; <span style="color: #808080; font-style: italic;">//если не ноль - ачивка с параметром</span>
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> cntCur:<span style="color: #0066CC;">int</span>; <span style="color: #808080; font-style: italic;">//текущее значение параметра ачивки</span>
&nbsp;
	 	   <span style="color: #808080; font-style: italic;">//Конструктор класса ачивки - все пораметры соотвествуют названиям выше )</span>
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> achItem<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">_name</span>:<span style="color: #0066CC;">String</span>,_title:<span style="color: #0066CC;">String</span>,_desc:<span style="color: #0066CC;">String</span>,_cntNeed:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
			    <span style="color: #0066CC;">name</span>=<span style="color: #0066CC;">_name</span>;
 				title=_title;
				desc=_desc;
				cntNeed=_cntNeed;
&nbsp;
				cntCur=<span style="color: #cc66cc;">0</span>;
				active=<span style="color: #000000; font-weight: bold;">false</span>;
           <span style="color: #66cc66;">&#125;</span> 
	 <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><br/></p>
<p>Класс achInfo – панелька с информацией, которая выскакивает каждый раз, когда мы берём ачивку. Её легко кастомизировать под свой проект. Хочу обратить внимание на мовиклип achPic. В нём хранятся все пиктограммы достижений. Все кадры в нем поименованы так же, как и ачивки в программе. Однако если такой пиктограммы нет, то будет выбрана пиктограмма по-умолчанию – первый кадр с именем &#8216;ok&#8217;.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package main 
<span style="color: #66cc66;">&#123;</span> 
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #66cc66;">*</span>;
     <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> achInfo <span style="color: #0066CC;">extends</span> alphaFader 
	 <span style="color: #66cc66;">&#123;</span>
		   <span style="color: #808080; font-style: italic;">//Время показа инфы по взятой ачивке</span>
		   <span style="color: #0066CC;">private</span> const TIME_TO_SHOW:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">4000</span>;
&nbsp;
		   <span style="color: #808080; font-style: italic;">//таймер для исчезновения этого мовиклипа</span>
		   <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> removeTimer:Timer;
&nbsp;
		   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> achInfo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
		   <span style="color: #66cc66;">&#123;</span>
 				removeTimer= <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span>TIME_TO_SHOW,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
				removeTimer.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				removeTimer.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, removeTimer_Timer<span style="color: #66cc66;">&#41;</span>;	
				<span style="color: #0066CC;">visible</span>=<span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
           <span style="color: #66cc66;">&#125;</span> 
&nbsp;
		    <span style="color: #808080; font-style: italic;">//Показать эту панель с инфой по ачивке thisAch</span>
			<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> showAch<span style="color: #66cc66;">&#40;</span>thisAch:achItem<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
			<span style="color: #66cc66;">&#123;</span>
				achObj.<span style="color: #006600;">achPic</span>.<span style="color: #0066CC;">gotoAndStop</span><span style="color: #66cc66;">&#40;</span>thisAch.<span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
				achObj.<span style="color: #006600;">titleTxt</span>.<span style="color: #0066CC;">text</span>=thisAch.<span style="color: #006600;">title</span>;
				achObj.<span style="color: #006600;">descTxt</span>.<span style="color: #0066CC;">text</span>=thisAch.<span style="color: #006600;">desc</span>;
				removeTimer.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				startFadeIn<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
		    <span style="color: #808080; font-style: italic;">//Плавное исчезновение панели</span>
			<span style="color: #000000; font-weight: bold;">function</span> removeTimer_Timer<span style="color: #66cc66;">&#40;</span>event:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
			<span style="color: #66cc66;">&#123;</span>
				startFadeOut<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
	 <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><br/></p>
<p>Весь код примера можно скачать здесь: <a href="http://www.anegmetex.com/devblog/files/achEngine.rar">http://www.anegmetex.com/devblog/files/achEngine.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/04/28/achievements-engine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Звуки и музыка</title>
		<link>http://www.anegmetex.com/devblog/2011/04/15/zvuki-i-muzyka/</link>
		<comments>http://www.anegmetex.com/devblog/2011/04/15/zvuki-i-muzyka/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 12:55:28 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Полезные классы]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Звук]]></category>
		<category><![CDATA[Классы]]></category>
		<category><![CDATA[Музыка]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=341</guid>
		<description><![CDATA[Вот решил выложить свои классы по работе со звуком и музыкой. Они у меня уже не менялись где-то четыре игры подряд, так что можно считать, что их функционал подходить под большинство игр. Классы используют выкладываемые ранее модули ageMath и ageVector (они уже включены в исходники примера в конце поста).
Звуковой класс может воспроизводить только одиночные звуки. [...]]]></description>
			<content:encoded><![CDATA[<p>Вот решил выложить свои классы по работе со звуком и музыкой. Они у меня уже не менялись где-то четыре игры подряд, так что можно считать, что их функционал подходить под большинство игр. Классы используют выкладываемые ранее модули <a href="http://www.anegmetex.com/devblog/2009/12/30/klass-s-poleznymi-matematicheskimi-funkciyami/">ageMath</a> и <a href="http://www.anegmetex.com/devblog/2010/01/19/klass-vektora/">ageVector </a>(они уже включены в исходники примера в конце поста).</p>
<p>Звуковой класс может воспроизводить только одиночные звуки. Петли и зацикленные эффекты планируется добавить в будущем. Просто пока мне это было не нужно в предыдущих играх <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  класс может также воспроизводить объемный звук, учитывая расстояние до объекта и его положение относительно слушателя.</p>
<p>Музыкальный класс может воспроизводить зациклено музыкальные треки а также обеспечивать плавную смену музыки путём затухания.</p>
<p>Классы все статические, поэтому создавать их экземпляры не требуется. У всех классов можно менять громкость и отключать звук.</p>
<p><span id="more-341"></span><br />
Смотрим пример (жмём на жёлтые кружочки, чтобы было весело):<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="500" height="400"><param name=movie value="http://www.anegmetex.com/devblog/files/SoundAndMusic.swf"><param name=quality value=high><embed src="http://www.anegmetex.com/devblog/files/SoundAndMusic.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="400"></embed></object></p>
<p>Использовать класс sounds весьма просто. Для начала надо в функции init написать те, звуки которые будут загружены:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//Здесь втыкаем свои звуки</span>
snd<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mysnd'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mysnd<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>потом надо инициализировать класс в основной программе:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">sounds.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">400</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Вот вообщем-то и всё! Теперь мы можем вызывать воспроизведение звука где нам это необходимо:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">sounds.<span style="color: #006600;">PlaySnd</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'mysnd'</span>,<span style="color: #cc66cc;">1</span>,b1<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>первый параметр это имя звука, которое мы задали в функции init. Второй &#8211; это сила звука, для взрывов например можно ставить 2 или 3. Последний параметр это эмиттер звука. Его координаты будут использованы для расчёта затухания звука, а также его панорамирования. Если задать только имя звука – он будет воспроизведён без учёта положения. Все звуки воспроизводятся относительно координат sounds.cenX и sounds.cenY. По умолчанию это центр экрана (все расчёты ведутся в глобальных координатах Stage). Также можно привязать слушателя к конкретному объекту, для этого необходимо будет менять cenX и cenY в основной программе (не забывая переводить координаты в глобальную систему координат).</p>
<p>Громкость звуков можно менять с помощью переменной sounds.vol. Отключить все звуки можно задав переменной sounds.sndEnable=false.</p>
<p>Класс sounds:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// Управление пространственными звуками в игре</span>
package main <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">media</span>.<span style="color: #006600;">SoundTransform</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #66cc66;">*</span>;
&nbsp;
	<span style="color: #0066CC;">dynamic</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> sounds <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">Object</span> 
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> snd:<span style="color: #0066CC;">Object</span>;	<span style="color: #808080; font-style: italic;">// хэш со звуками</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> stageRadius:<span style="color: #0066CC;">Number</span>; <span style="color: #808080; font-style: italic;">// примерный радиус видимой области</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> vol:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0.9</span>; <span style="color: #808080; font-style: italic;">// громкость</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> sndEnable:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">true</span>; <span style="color: #808080; font-style: italic;">// включён ли звук</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">//Координаты слушателя</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> cenX:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> cenY:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
&nbsp;
		<span style="color: #808080; font-style: italic;">//внутренние переменные</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> v:ageVector= <span style="color: #000000; font-weight: bold;">new</span> ageVector<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> p:Point;
&nbsp;
		<span style="color: #808080; font-style: italic;">//Инициализация класса. Передаём в функцию размеры флешки</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span>stageWidth:<span style="color: #0066CC;">Number</span>, stageHeight:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span> 
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// создадим хеш звуков</span>
			snd = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Здесь втыкаем свои звуки</span>
			snd<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mysnd'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mysnd<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// вычислим примерный радиус видимой области экрана</span>
			stageRadius = <span style="color: #66cc66;">&#40;</span>stageWidth<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1.4</span>;			
&nbsp;
			<span style="color: #808080; font-style: italic;">//Центр по умолчанию в центре экрана. Можно привязать к какому-либо объекту</span>
			cenX=stageWidth<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">0.5</span>;
			cenY=stageHeight<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">0.5</span>;
&nbsp;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
		<span style="color: #808080; font-style: italic;">// Воспроизводит звук с учетом пространства</span>
		<span style="color: #808080; font-style: italic;">// snd_name - имя звука</span>
		<span style="color: #808080; font-style: italic;">// dv - множитель для громкости		</span>
		<span style="color: #808080; font-style: italic;">// obj - эмиттер звука</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PlaySnd<span style="color: #66cc66;">&#40;</span>snd_name:<span style="color: #0066CC;">String</span>,dv:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">1.0</span>,obj:<span style="color: #66cc66;">*</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> t:SoundTransform;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Если звук отключён - выходим</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>sndEnable <span style="color: #66cc66;">||</span> vol<span style="color: #66cc66;">&lt;</span><span style="color: #cc66cc;">0.001</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Без объёмного звука</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>obj==<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
&nbsp;
				t = <span style="color: #000000; font-weight: bold;">new</span> SoundTransform<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				t.<span style="color: #006600;">volume</span> = vol;
				snd<span style="color: #66cc66;">&#91;</span>snd_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">play</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, t<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #66cc66;">&#123;</span>
&nbsp;
				t= <span style="color: #000000; font-weight: bold;">new</span> SoundTransform<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #808080; font-style: italic;">//Все расчёты ведём в глобальной системе координат</span>
				p=obj.<span style="color: #006600;">parent</span>.<span style="color: #0066CC;">localToGlobal</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span>obj.<span style="color: #006600;">x</span>,obj.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				v.<span style="color: #006600;">x</span>=p.<span style="color: #006600;">x</span>-cenX;
				v.<span style="color: #006600;">y</span>=p.<span style="color: #006600;">y</span>-cenY;
&nbsp;
				<span style="color: #808080; font-style: italic;">// Ставим громкость в зависимости от расстояния</span>
				t.<span style="color: #006600;">volume</span> = ageMath.<span style="color: #006600;">trimToRange</span><span style="color: #66cc66;">&#40;</span>vol <span style="color: #66cc66;">*</span> ageMath.<span style="color: #006600;">RemapVal</span><span style="color: #66cc66;">&#40;</span>v.<span style="color: #006600;">len</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,<span style="color: #cc66cc;">0</span>,dv <span style="color: #66cc66;">*</span> stageRadius,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #808080; font-style: italic;">// стерео в зависимости от положения источника звука</span>
				t.<span style="color: #006600;">pan</span> = ageMath.<span style="color: #006600;">trimToRange</span><span style="color: #66cc66;">&#40;</span>ageMath.<span style="color: #006600;">RemapVal</span><span style="color: #66cc66;">&#40;</span>v.<span style="color: #006600;">x</span>,-stageRadius<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>,stageRadius<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>,-<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>,-<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #808080; font-style: italic;">// воспроизводим</span>
				snd<span style="color: #66cc66;">&#91;</span>snd_name<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">play</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, t<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Класс музыки musicEnv инициализируется аналогичным образом. В init прописываем все треки которые будут использованы в нашей игре.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//Здесь втыкаем свои муз треки</span>
mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus1'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus2'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus2<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus3'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus3<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>далее в основной программе инициализируем класс с музыкой:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>и его уже можно использовать! Включаем одну музыку:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">fadeTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'mus1'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>потом плавно с затуханием меняем на другую:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">fadeTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'mus2'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>а так можно остановить музыку:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">played</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>чтобы отключить музыку в программе необходимо также использовать переменную sounds.sndEnable:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">musEnable</span>=<span style="color: #000000; font-weight: bold;">false</span>;
musicEnv.<span style="color: #006600;">played</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>включить музыку обратно:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">musicEnv.<span style="color: #006600;">musEnable</span>=<span style="color: #000000; font-weight: bold;">true</span>;
musicEnv.<span style="color: #006600;">played</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>звук музыки регулируется с помощью переменной sounds.vol, скорость фейдинга &#8211; sounds.volFadeSpeed</p>
<p>Класс musicEnv:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// Управление пространственными звуками в игре</span>
package main <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">media</span>.<span style="color: #006600;">SoundTransform</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">media</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">dynamic</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> musicEnv <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">Object</span> 
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> mus:<span style="color: #0066CC;">Object</span>;	<span style="color: #808080; font-style: italic;">// хэш с музыкой</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> vol:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0.9</span>; <span style="color: #808080; font-style: italic;">// громкость</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> volFadeSpeed:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0.01</span>; <span style="color: #808080; font-style: italic;">//Скорость фейдинга</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> musEnable:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">true</span>; <span style="color: #808080; font-style: italic;">// включёна ли музыка</span>
&nbsp;
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> curMusName:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">&quot;&quot;</span>; <span style="color: #808080; font-style: italic;">// Имя текущего трека</span>
&nbsp;
&nbsp;
		<span style="color: #808080; font-style: italic;">//внутренние переменные</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> curCh:SoundChannel; <span style="color: #808080; font-style: italic;">//Текущий канал</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> offCh:SoundChannel; <span style="color: #808080; font-style: italic;">//Затухающий канал</span>
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> curVol:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> curPos:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> offVol:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
&nbsp;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> isplayed:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> timerVolFader:Timer= <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> t1:SoundTransform = <span style="color: #000000; font-weight: bold;">new</span> SoundTransform<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> t2:SoundTransform = <span style="color: #000000; font-weight: bold;">new</span> SoundTransform<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
		<span style="color: #66cc66;">&#123;</span>
			timerVolFader.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// создадим хеш с музыкой</span>
			mus = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Здесь втыкаем свои муз треки</span>
			mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus1'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus2'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus2<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			mus<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'mus3'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #000000; font-weight: bold;">new</span> mus3<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">//Плавная смена трека на musname</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> fadeTo<span style="color: #66cc66;">&#40;</span>musname:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> 
		<span style="color: #66cc66;">&#123;</span>
			curMusName=musname;
&nbsp;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Если музыка отключена - выходим</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>musEnable<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span>;
&nbsp;
			isplayed=<span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
			<span style="color: #000000; font-weight: bold;">var</span> t:SoundTransform;
			t = <span style="color: #000000; font-weight: bold;">new</span> SoundTransform<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			t.<span style="color: #006600;">volume</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>offCh<span style="color: #66cc66;">&#41;</span> offCh.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			offCh=curCh;
&nbsp;
			curCh=mus<span style="color: #66cc66;">&#91;</span>musname<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">play</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">int</span>.<span style="color: #0066CC;">MAX_VALUE</span>, t<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			curVol=<span style="color: #cc66cc;">0</span>;
			offVol=vol;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>timerVolFader.<span style="color: #006600;">running</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				timerVolFader.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, timerVolFader_Timer, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
				timerVolFader.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">//Остановить или запустить воспроизведение музыки</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> played<span style="color: #66cc66;">&#40;</span>flg:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>flg==isplayed<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span>;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>flg<span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>curMusName<span style="color: #66cc66;">!</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span> fadeTo<span style="color: #66cc66;">&#40;</span>curMusName<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #66cc66;">&#123;</span>
				isplayed=<span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>curCh<span style="color: #66cc66;">&#41;</span> 
				<span style="color: #66cc66;">&#123;</span>
					curCh.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
					curPos=curCh.<span style="color: #0066CC;">position</span>;
				<span style="color: #66cc66;">&#125;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>offCh<span style="color: #66cc66;">&#41;</span> offCh.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				offVol=<span style="color: #cc66cc;">0</span>;
				curVol=vol;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>timerVolFader.<span style="color: #006600;">running</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					timerVolFader.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
					timerVolFader.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, timerVolFader_Timer<span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">//Плавный фейдинг музыки</span>
		<span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> timerVolFader_Timer<span style="color: #66cc66;">&#40;</span>event:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
		<span style="color: #66cc66;">&#123;</span>
&nbsp;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>offCh<span style="color: #66cc66;">!</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>offVol<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
					offVol -= volFadeSpeed;
				<span style="color: #b1b100;">else</span>
					offVol=<span style="color: #cc66cc;">0</span>;
&nbsp;
				t1.<span style="color: #006600;">volume</span> = offVol;
				offCh.<span style="color: #006600;">soundTransform</span>=t1;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>curCh<span style="color: #66cc66;">!</span>=<span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&amp;&amp;</span> <span style="color: #66cc66;">&#40;</span>offVol<span style="color: #66cc66;">&lt;</span>vol<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">||</span> offCh==<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>curVol<span style="color: #66cc66;">&lt;</span>vol<span style="color: #66cc66;">&#41;</span>
					curVol += volFadeSpeed;
				<span style="color: #b1b100;">else</span>
					curVol=vol;
&nbsp;
				t2.<span style="color: #006600;">volume</span> = curVol;
				curCh.<span style="color: #006600;">soundTransform</span>=t2;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
			<span style="color: #808080; font-style: italic;">//Если достигли порогового значения громкости</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>curVol<span style="color: #66cc66;">&gt;</span>vol<span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>offCh<span style="color: #66cc66;">!</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> offCh.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				timerVolFader.<span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				timerVolFader.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, timerVolFader_Timer<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Вот вообщем то и всё. Думаю новичкам класс может пригодиться. Исходники примера тут: <a href="http://www.anegmetex.com/devblog/files/SoundAndMusic.rar">http://www.anegmetex.com/devblog/files/SoundAndMusic.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/04/15/zvuki-i-muzyka/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Статистика за март</title>
		<link>http://www.anegmetex.com/devblog/2011/04/02/statistika-za-mart/</link>
		<comments>http://www.anegmetex.com/devblog/2011/04/02/statistika-za-mart/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 22:50:49 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Портал]]></category>
		<category><![CDATA[Деньги]]></category>
		<category><![CDATA[статистика]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=337</guid>
		<description><![CDATA[Статистика по порталу за март
Посещений: 223 718
Просмотры страниц: 480 012
Доход от AdSense: $485.21
Доход от CPMStar: $5.14
Доход от Mochi: $1.57
Суммарный доход портала: $491.92
под катом остальные цифирьки:

В этот месяц очень озаботился возможными недействительными кликами на портале, боюсь как бы гугл не забанил мой аккаунт. Поэтому под конец месяца поменял рекламу рядом с игрой на CPMStar. Ну и [...]]]></description>
			<content:encoded><![CDATA[<p><b>Статистика по <a href="http://onlinegamer.cc">порталу</a> за март</b><br />
Посещений: 223 718<br />
Просмотры страниц: 480 012<br />
Доход от AdSense: $485.21<br />
Доход от CPMStar: $5.14<br />
Доход от Mochi: $1.57<br />
Суммарный доход портала: $491.92</p>
<p>под катом остальные цифирьки:<br />
<span id="more-337"></span><br />
В этот месяц очень озаботился возможными недействительными кликами на портале, боюсь как бы гугл не забанил мой аккаунт. Поэтому под конец месяца поменял рекламу рядом с игрой на CPMStar. Ну и вцелом баннеры лучше выделил. Доход конечно стал меньше, но думаю в конечном счёте так лучше будет. Гугл обещает что чем меньше процент недействительных кликов тем больше CPM. Пока этого не заметно, но будем надеяться на лучшее <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Рекламой в играх за март удалось заработать:<br />
Доход от CPMStar: $1015.01<br />
Доход от Mochi: $85.64<br />
Суммарный доход с игр: $1100.65</p>
<p>Frustra Bit к сожалению пошёл не очень хорошо, так что на данный момент всего 243к геймплеев&#8230; конверсия 11%. Зато Тед набрал за полтора месяца уже 2 ляма геймплеев. Вообщем мораль &#8211; надо делать хитовые игры <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  на треше далеко не уедешь&#8230; Всего с сайтлоков Frustra Bit получилось $300.</p>
<p>Всего за месяц получается удалось заработать $1892.57</p>
<p>вообщем такие дела.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/04/02/statistika-za-mart/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Мой новый хостинг и бесплатная панель управления Kloxo</title>
		<link>http://www.anegmetex.com/devblog/2011/03/24/mojj-novyjj-khosting-i-besplatnaya-panel-upravleniya-kloxo/</link>
		<comments>http://www.anegmetex.com/devblog/2011/03/24/mojj-novyjj-khosting-i-besplatnaya-panel-upravleniya-kloxo/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 23:28:12 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Портал]]></category>
		<category><![CDATA[Хостинг]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=334</guid>
		<description><![CDATA[Думаю пост будет интересен всем владельцам VPS, которые каждый месяц отстёгивают 7..14 баксов за панель управления хостингом  

На днях мой портальчик переехал на новый сервер. К сожалению, старого уже стало не хватать, и я реально боялся к концу месяца вылезти за лимиты трафика. Меня очень часто спрашивают какой у меня хостинг, поэтому сообщаю – [...]]]></description>
			<content:encoded><![CDATA[<p>Думаю пост будет интересен всем владельцам VPS, которые каждый месяц отстёгивают 7..14 баксов за панель управления хостингом <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-334"></span><br />
На днях мой <a href="http://onlinegamer.cc">портальчик</a> переехал на новый сервер. К сожалению, старого уже стало не хватать, и я реально боялся к концу месяца вылезти за лимиты трафика. Меня очень часто спрашивают какой у меня хостинг, поэтому сообщаю – теперь я располагаюсь на сервере компании <a href="http://quickweb.co.nz/">quickweb</a>. Мне эта кампания понравилась во-первых только отличными ревью на <a href="http://www.webhostingtalk.com/">webhostingtalk</a> (ниже 9\10 я не нашёл), во-вторых бодрыми <a href="http://quickweb.co.nz/vps-linux-plans">тарифными планами</a> с большим выделенным трафиком и гигабитной скоростью подключения (для меня это весьма критично стало),  и в третьих, что их сервера находятся в известном в узких кругах датацентре Softlayer. Взял пока 2-й тариф, но с оглядкой, что есть простор у хостера для апгрейда на более мощные конфиги. (очень уж я не люблю переезжать от хостера к хостеру&#8230;)</p>
<p>Но так как я парень, который «постоянно всё считает» (С) Alex_Spil после оплаты хостинга меня начало сильно ломать платить ещё за контрольную панель половину от цены хостинга. Учитывая, что я захожу в неё дай бог пару раз в месяц, и то чтобы проверить всё ли окей. Но без неё я не мог. Да я хоть и бородатый, но не админ, и поэтому сконфигурировать линух из консоли мне весьма трудно и неохота.</p>
<p>Поэтому я стал искать бесплатные альтернативы, и, перекопав кучу инфы, я нашёл одну отличную разработку – Kloxo.<br />
Устанавливается это чудо весьма просто из ssh:</p>
<p># wget http://download.lxlabs.com/download/kloxo/production/kloxo-install-master.sh<br />
# sh kloxo-install-master.sh</p>
<p>вот и всё! Удивительно, но даже с установкой платного directAdmin-a мне пришлось дольше возиться, были какие то проблемы со входом и паролем.</p>
<p>Думаете панель шлак? А вот и нет. Панель напоминает cPanel. Мне она показалась даже дружелюбней чем тот же прямойАдмин. Клоксо заботливо после входа напомнил мне добавить домен, потом напомнил завести мейл, потом посоветовал настроить ftp. Вообщем весьма дружелюбная к пользователю панель, и весьма интуитивно понятная. Выглядит примерно так<br />
<a href="http://techore.otterwedding.com/wp-content/uploads/2009/12/ipaddresses.png">http://techore.otterwedding.com/wp-content/uploads/2009/12/ipaddresses.png</a></p>
<p>В ней есть всё что необходимо для менеджмента VPS: и настройка доменов, и DNS, и FTP, и mail, и mysql – вообщем все то, что нужно для счастья. Кроме того, в ней встроена система статистики по доменам и много других вкусностей которые я ещё до конца изучить не успел. И главное – она абсолютно <strong>бесплатна</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/03/24/mojj-novyjj-khosting-i-besplatnaya-panel-upravleniya-kloxo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Релиз Frustra Bit</title>
		<link>http://www.anegmetex.com/devblog/2011/03/16/reliz-frustra-bit/</link>
		<comments>http://www.anegmetex.com/devblog/2011/03/16/reliz-frustra-bit/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 18:32:35 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Портал]]></category>
		<category><![CDATA[Релиз]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=329</guid>
		<description><![CDATA[Да, очередной релиз для моего портальчика Online Gamer.
На этот раз это простая, но забавная игрушка в ретро стиле на ловкость и немного на сообразительность. 
http://onlinegamer.cc/Action/309/Frustra-Bit.html
Пошла довольно неплохо на Ньюграунде, заняла Daily 3rd Place и попала на фронтпейдж. С дистрибьюцией тоже вроде пока всё норм. На конге как всегда игру жёстко заминусовали ) лишь только комментарии [...]]]></description>
			<content:encoded><![CDATA[<p>Да, очередной релиз для моего портальчика <a href="http://www.onlinegamer.cc">Online Gamer</a>.<br />
На этот раз это простая, но забавная игрушка в ретро стиле на ловкость и немного на сообразительность. </p>
<p><a href="http://onlinegamer.cc/Action/309/Frustra-Bit.html">http://onlinegamer.cc/Action/309/Frustra-Bit.html</a></p>
<p>Пошла довольно неплохо на Ньюграунде, заняла Daily 3rd Place и попала на фронтпейдж. С дистрибьюцией тоже вроде пока всё норм. На конге как всегда игру жёстко заминусовали ) лишь только комментарии типа «Loved it. Best maze game on kong» греют душу <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://www.anegmetex.com/devblog/files/frustra1s.jpg" alt="frustra bit - разработка флеш игры" /><br />
<span id="more-329"></span><br />
Уровень с тетрисом как и ожидалось всех повесилил <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ну и в целом комменты были весьма одобряющие. (иногда прям читаешь и думаешь ну кто же там тогда минусует?)</p>
<p>Да, кстати, во время разработки столкнулся с неприятной особенностью mochi api. Дело в том, что в этой игре я использовал полноэкранный эффект, по типу того, что описывался мной <a href="http://www.anegmetex.com/devblog/2010/10/22/polnoehkrannye-ehffekty-svechenie-obvodka-etc/">здесь</a>. Рисую весь экран в битмапдату, потом размываю и накладываю с умножением на текущую картинку. Но оказалось, что функция draw(this,…), которая рендит весь экран в битмапдату, перестаёт нормально работать, после вызова</p>
<p>MochiServices.connect(&#8221;…&#8221;, root);</p>
<p>Причём перестаёт работать в релиз-билде, а в дебаге всё окей! Мда после долгих часов поиска обхода он наконец таки был найден. Если вызвать так:</p>
<p>MochiServices.connect(&#8221;…&#8221;, stage);</p>
<p>То всё будет нормально. Чудеса да и только. </p>
<p>После встраивания рекламы CPMStar я столкнулся опять с той же проблемой ) короче дело было в security политики, которая запрещала рендер рекламы с другого домена в битмапдату (вероятно с мочи была такая же проблема). Я попытался её разрулить с помощью allowDomain(«cpmstar.com») и в дебаге то опять всё заработало… а вот в релизе, в браузере, всё по-прежнему, с ошибкой. Короче полтора дня промаявшись со всей этой байдой, я просто отключил полноэкранный эффект для прелоадера. И поблагодарил себя за то, что не стал встраивать интерлевел рекламу ) иначе это был бы пипец. Так что, товарищи, имейте ввиду. Стоит всё таки оборачивать в мовиклип, а не как я &#8211; схалявить, и просто рендить весь экран в битмапдату.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/03/16/reliz-frustra-bit/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Статистика за февраль по порталу и игре Stark Raving Ted</title>
		<link>http://www.anegmetex.com/devblog/2011/03/02/statistika-za-fevral-po-portalu-i-igre-stark-raving-ted/</link>
		<comments>http://www.anegmetex.com/devblog/2011/03/02/statistika-za-fevral-po-portalu-i-igre-stark-raving-ted/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 22:36:06 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Портал]]></category>
		<category><![CDATA[Проекты]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=327</guid>
		<description><![CDATA[Статистика по порталу за февраль
Посещений: 188 932
Просмотры страниц: 390 899
Доход от AdSense: $279.04
Доход от CPMStar: выпилил я его пока что с сайта
Доход от Mochi: $0.96
Суммарный доход: $280 (хех, ровно получилось)
под катом много букв и цифр, я предупредил 

CTR повысился раза в три, что не может не радовать, среднее количество просмотров пока всё также мало – [...]]]></description>
			<content:encoded><![CDATA[<p><b>Статистика по <a href="http://onlinegamer.cc">порталу</a> за февраль</b><br />
Посещений: 188 932<br />
Просмотры страниц: 390 899<br />
Доход от AdSense: $279.04<br />
Доход от CPMStar: выпилил я его пока что с сайта<br />
Доход от Mochi: $0.96<br />
Суммарный доход: $280 (хех, ровно получилось)</p>
<p>под катом много букв и цифр, я предупредил <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<span id="more-327"></span><br />
CTR повысился раза в три, что не может не радовать, среднее количество просмотров пока всё также мало – 2.07, хотя конечно трафик не качественный, так что вполне ожидаемо. Среднее время пребывания – 2:29. Количество новых визитов – 87%. Баунс рейт весьма снизился, с 70% до 57%, что довольно хорошо. По странам трафик сильно размыт, на первом месте США, потом Россия и Бразилия, но их доля не так значительна в процентном соотношении (11%, 10% и 9% соответственно).</p>
<p>Поисковый траф всё также мизерный, составляет 0.24%. Над этим надо будет работать. Кстати у меня на сайте объявился <a href="http://onlinegamer.cc/profile/128/Swat72.html">заядлый комментатор</a>, уже настрочил аж 74 комментария, да и не просто односложных, а весьма развёрнутых. Эх, таких бы мне штук десять, тогда бы думаю мой портал лучше воспринимался бы поиском гугла <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>Статистика по игре Stark Raving Ted</b><br />
Теперь статистика по игре про Теда. Всего в игру за две недели сыграли 914k раз. Что удивило: хоть игра и получила довольно низкую оценку на конге, и средненькую на ньюграунде (и соответственно не была зафичена ни одним из них), но её довольно не хило начали расхватывать, хотя я её тогда даже не успел залить на FGD и Мочи. Игра была взята практически всеми большими порталами. Отдельно хочется упомянуть Джона из НотДопплера, он прежде чем добавить игру к себе на портал, сначала разрешение спросил, потом поинтересовался какой рейтинг игре присвоить, а после, как добавил, ещё и спросил “всё ли хорошо, может чего-то изменить?”. Вежливый такой <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>Ладна, от лирики к фактам. Всего по внутренним кнопкам переходов из игры на сайт было 132 628 + 55 295 по кнопке walkthrough. Соответственно конверсия составила около 20.6%, что очень хорошо. Ещё раз убеждаюсь, что прелоадер с полностью активной зоной для клика решает. Если опираться на цифры – почти 59% переходов – это переходы по прелоадеру (тут я НЕ учитывал клики по кнопкам walkthrough). Вы наверно подумаете, что люди кликают часто по ошибке, и баунс рейт поэтому высокий, а вот и нет: всего 46%. По тому же сплешу баунс рейт 62%. Среднее время пребывания на сайте почти одинаковое. Такой же прелоадер был у меня в игре про Санту, и там тоже были такие же показатели. А вот в Escaped прелоадер был “не правильный” и как результат – конверсия смешные 6%&#8230; поэтому я уже для себя вывод сделал – прелоадеры у меня будут впредь только “правильными” <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Так, если по доходам на портале,  то Тед принёс $200.16 (включая $11.02 по кнопочке walkthrough). Значит если бы я не зарелизил Теда, то портал бы принёс около $78.88, что вообщем то тоже больше, чем в предыдущем месяце )</p>
<p>По рекламе внутри игры Тед принёс:<br />
CPMStar $615.47 (dev) + $184.69 (sponsor) = $800.16<br />
Mochi $10.82</p>
<p>В мочи я добавил Теда лишь дня три назад, так что цифра не особо отражает реальное соотношение между рекламными сетями. Также хочется похвалиться, что Теда таки зафичили на Мочи <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Всего же на внутригровой рекламе в этом месяце CPMStar и Mochi было заработано $923.09 и $11.98 соответственно.</p>
<p>Как итог в этом месяце было заработано:<br />
сайтом &#8211; $280<br />
реклама в играх &#8211; $935.07<br />
сайтлоки Теда &#8211; $605<br />
Итого &#8211; $1820.07 (из них $1616.17 – игра про Теда)</p>
<p>Меня пару раз спрашивали в блоге – выгоднее ли спонсировать игры самому? Максимальная ставка на аукционе за Теда была $1500… Думаю конкретно по данной игре для меня вышло куда выгоднее спонсировать самому <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ну и ещё хочется вспомнить одного анонимного хейтера, который в <a href="http://www.anegmetex.com/devblog/2010/10/21/onlinegamer-cc/#comment-375">комменте</a> выразил своё безусловно профессиональное мнение, что игра не отобьёт даже $1500 баксов… что тут скажешь, ты облажался, дурень! Отбила, всего за две недели.</p>
<p>Вот на этом и всё пожалуй. Надеюсь этот поток букв и цифр оказался кому-то полезным.</p>
<p>P.S. И ещё я надеюсь, что нигде не обсчитался ))</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/03/02/statistika-za-fevral-po-portalu-i-igre-stark-raving-ted/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Релиз Stark Raving Ted</title>
		<link>http://www.anegmetex.com/devblog/2011/02/17/reliz-stark-raving-ted/</link>
		<comments>http://www.anegmetex.com/devblog/2011/02/17/reliz-stark-raving-ted/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 12:37:41 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Дистрибуция]]></category>
		<category><![CDATA[Портал]]></category>
		<category><![CDATA[Релиз]]></category>
		<category><![CDATA[Проекты]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=319</guid>
		<description><![CDATA[Година 2012. нашественици нападат Земята. Те ни превръщат в зомбита и ни убиват с техните машини. Всички оцелели се укриват в приюти &#8230;. с изключение на мен. Казвам се Тед&#8230;и съм тук ,за да ги избия до един!
Болгары об игре Stark Raving Ted
Ура! Наконец-то, я всё-таки нашёл в себе силы чтобы закончить эту игру  [...]]]></description>
			<content:encoded><![CDATA[<p><em>Година 2012. нашественици нападат Земята. Те ни превръщат в зомбита и ни убиват с техните машини. Всички оцелели се укриват в приюти &#8230;. с изключение на мен. Казвам се Тед&#8230;и съм тук ,за да ги избия до един!</em></p>
<div align="right"><strong>Болгары об игре Stark Raving Ted</strong></div>
<p>Ура! Наконец-то, я всё-таки нашёл в себе силы чтобы закончить эту игру <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  пролежав на диске более полугода игра таки увидела свет в конце тоннеля. Тед отправился спасать мир на экранах тысяч игроков <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://onlinegamer.cc/Shooter/238/Stark-Raving-Ted.html">http://onlinegamer.cc/Shooter/238/Stark-Raving-Ted.html</a></p>
<p><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/RlGYCQDhQIk" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-319"></span><br />
Игра получила довольно вялые оценки на НГ и Конге и не попала ни в один фичед лист, однако дистрибуция пошла невероятно хорошо (по крайней мере для меня и моих игр). Я её даже не запостил на FGD и мочи (да вообще по сути не занимался дистрибьюцией), а её за два дня уже расхватали на 250+ хостов. Вчера в игру поиграло более 100к игроков. Сегодня наверно будет ещё больше. Думаю для меня это пока самая успешная игра из всех 7 выпущенных на данный момент игр <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
<p><img src="http://anegmetex.com/devblog/files/st1.jpg" alt="flash games" /></p>
<p>Я очень рад что не отдал эту игру за бесценок на FGL. Вообще сейчас пока планирую поработать на свой портал а не на спонсоров. Ведь делать игры для игроков намного приятней чем для спонсоров.</p>
<p><img src="http://anegmetex.com/devblog/files/st2.jpg" alt="flash games" /></p>
<p>Да ну и ещё что приятно &#8211; игроки ни разу не пнули меня по поводу engrish-а, хотя текстов и диалогов в игре довольно много. Значит мой английский всё-таки выправляется потихоньку <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/02/17/reliz-stark-raving-ted/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Статы за январь по порталу OnlineGamer.cc и игре Escaped!</title>
		<link>http://www.anegmetex.com/devblog/2011/02/03/staty-za-yanvar-po-portalu-onlinegamer-cc-i-igre-escaped/</link>
		<comments>http://www.anegmetex.com/devblog/2011/02/03/staty-za-yanvar-po-portalu-onlinegamer-cc-i-igre-escaped/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 12:42:34 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Монетизация]]></category>
		<category><![CDATA[Портал]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=315</guid>
		<description><![CDATA[Статистика по моему порталу за январь:
Посещений: 48 279
Просмотры страниц: 92 176
Доход от AdSense: $57.14
Доход от CPMStar: $1.48
Доход от Mochi:     $0.31
Суммарный доход:  $58.93
подробности под катом

По трафику уже не плохо стало &#8211; на первом месте США, на втором &#8211; Германия. Однако их доля не так велика и трафик довольно размыт на другие [...]]]></description>
			<content:encoded><![CDATA[<p>Статистика по моему <a href="http://onlinegamer.cc">порталу</a> за январь:<br />
Посещений: 48 279<br />
Просмотры страниц: 92 176<br />
Доход от AdSense: $57.14<br />
Доход от CPMStar: $1.48<br />
Доход от Mochi:     $0.31<br />
Суммарный доход:  $58.93</p>
<p>подробности под катом<br />
<span id="more-315"></span><br />
По трафику уже не плохо стало &#8211; на первом месте США, на втором &#8211; Германия. Однако их доля не так велика и трафик довольно размыт на другие страны. Количество возвращающихся игроков увеличилось до 14% что не может не радовать <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  время посещения тоже растёт.</p>
<p><strong>Статистика по игре &#8220;Escaped!&#8221;</strong><br />
Вообщем игра получилась довольно противоречивой с рискованным сеттингом, было много плохих оценок только из-за того что человек ожидал шутер а получил пазл <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Кроме того конверсия получилась весьма низкой &#8211; чуть больше 6%, по сравнению с игрой про санту где конверсия была около 21%. Наверно связано это с тем что в игре нет прохождения и прелоадер в санте был более удачным, с него переходов было очень много. Ну и конечно в санте не было рекламы <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Тем не менее ошибки будут учтены и в следующей игре надеюсь конверсия будет минимум 10%. Ах да, ещё злобный сайт moFunZone блокирует все исходящие ссылки <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_evil.gif' alt=':evil:' class='wp-smiley' />  просмотров много а толку никакого.</p>
<p>Итак, за 17 дней с момента релиза в игру поиграли чуть более 500к человек (в статистике я не учитываю сайтлоки, только мою виральную версию). На рекламе за этот срок удалось заработать всего $323.43. На версии с CPMStar $244.25+$73.29 и на версии с мочи ЦЕЛЫХ $5.89 <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Плюс с сайтлоками получилось за январь порядка $650, вообщем уже можно как то пытаться существовать и без спонсоров <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  вообще мне приятнее делать игру непосредственно для игроков, а не для спонсоров. </p>
<p>Вот вроде всё пока <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/02/03/staty-za-yanvar-po-portalu-onlinegamer-cc-i-igre-escaped/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Релиз игры Escaped!</title>
		<link>http://www.anegmetex.com/devblog/2011/01/16/reliz-igry-escaped/</link>
		<comments>http://www.anegmetex.com/devblog/2011/01/16/reliz-igry-escaped/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 10:20:58 +0000</pubDate>
		<dc:creator>Oleg Antipov</dc:creator>
				<category><![CDATA[Портал]]></category>
		<category><![CDATA[Релиз]]></category>

		<guid isPermaLink="false">http://www.anegmetex.com/devblog/?p=309</guid>
		<description><![CDATA[В новый год с новым релизом для моего портала  
http://onlinegamer.cc/Puzzle/186/Escaped.html
Игра представляет собой в некотором роде переосмысление и доработку моей старой игры Toy Tales )
Геймплей был серьёзно переработан, исправлен баланс, прикручены ачивменты, добавлены разные эффекты плюс переработана вся звуковая и визуальная составляющая игры. В целом игра стала динамичней и думаю интересней  



Что особенно приятно [...]]]></description>
			<content:encoded><![CDATA[<p>В новый год с новым релизом для моего <a href="http://www.onlinegamer.cc">портала</a> <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://onlinegamer.cc/Puzzle/186/Escaped.html">http://onlinegamer.cc/Puzzle/186/Escaped.html</a></p>
<p>Игра представляет собой в некотором роде переосмысление и доработку моей старой игры Toy Tales )<br />
Геймплей был серьёзно переработан, исправлен баланс, прикручены ачивменты, добавлены разные эффекты плюс переработана вся звуковая и визуальная составляющая игры. В целом игра стала динамичней и думаю интересней <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://www.anegmetex.com/devblog/files/escapedScr2s.jpg" alt="релиз флеш игры" /></p>
<p><img src="http://www.anegmetex.com/devblog/files/escapedScr3s.jpg" alt="релиз флеш игры" /></p>
<p><span id="more-309"></span></p>
<p>Что особенно приятно так это то, что игра побывала на первой странице порталов Kongregate и Newgrounds:</p>
<p><img src="http://www.anegmetex.com/devblog/files/ngKongFeat.jpg" alt="флэш игры" /></p>
<p>С конга конечно уже вылетела благодаря хейтерам, но на НГ пока держится <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Кстати немного о CPMStar, игра в сумме за вчерашний день, только с конга и нг собрала на рекламе 52$. 39,5$ разработчику и 12,5$ спонсору, но так как я являюсь и тем и другим&#8230; ну вы поняли почему я в <a href="http://www.anegmetex.com/devblog/2011/01/11/zaregan-kak-pablisher-na-cpmstar/">предыдущем посте</a> так радовался))</p>
<p>Вообщем думаю игра мне принесет много трафика на портал. Следующим релизом запланирован Stark Raving Ted, надеюсь с ним тоже попасть на главную <img src='http://www.anegmetex.com/devblog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.anegmetex.com/devblog/2011/01/16/reliz-igry-escaped/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

