<?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>Programowanie AS3</title>
	<atom:link href="http://blog.skaldy.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.skaldy.com</link>
	<description>Blog o programowaniu w technologi Adobe Flash i AIR. Przykłady AS3</description>
	<lastBuildDate>Tue, 31 Jan 2012 11:28:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Czytnik RSS &#8211; scigani.pl</title>
		<link>http://blog.skaldy.com/2010/08/czytnik-rss-scigani-pl/</link>
		<comments>http://blog.skaldy.com/2010/08/czytnik-rss-scigani-pl/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 09:36:29 +0000</pubDate>
		<dc:creator>skaldy</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://blog.skaldy.com/?p=159</guid>
		<description><![CDATA[Zainstaluj RSS skaldy i bądź]]></description>
			<content:encoded><![CDATA[<p>Zainstaluj <a href="http://skaldy.com/scigani/rss-skaldy.html" target="_blank">RSS skaldy</a> i bądź na bieżąco z ogłoszeniami z scigani.pl</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skaldy.com/2010/08/czytnik-rss-scigani-pl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tablica z niepowtarzalnymi liczbami losowymi</title>
		<link>http://blog.skaldy.com/2010/08/tablica-z-niepowtarzalnymi-liczbami-losowymi/</link>
		<comments>http://blog.skaldy.com/2010/08/tablica-z-niepowtarzalnymi-liczbami-losowymi/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 11:19:55 +0000</pubDate>
		<dc:creator>skaldy</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Klasa]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[tablica]]></category>

		<guid isPermaLink="false">http://blog.skaldy.com/?p=130</guid>
		<description><![CDATA[Do klasy Mieszaj potrzebowałem tablicy]]></description>
			<content:encoded><![CDATA[<p>Do klasy <a href="http://blog.skaldy.com/2010/05/zmiana-polozenia-objektow/">Mieszaj</a> potrzebowałem tablicy z niepowtarzalnymi liczbami losowymi.<br />
Tablica taka przyda się w przyszłości więc napisałem klasę która generuje taką tablicę.<br />
<span id="more-130"></span><br />
<code>public class TablicaRandom {</code><br />
Do klasy przekazuje parametr, który określa maksymalną długość tablicy.<br />
<code>public static function random(dl_tablicy:Number):Array {</code><br />
Tworzę tablicę temp w której będę przechowywać wszystkie jeszcze nie wylosowane liczby.<br />
<code>var temp:Array = new Array();</code><br />
oraz tablicę odpowiedz którą na końcu zwrócę<br />
<code>var odpowiedz:Array = new Array();</code><br />
Tablicę temp zapełniam kolejnymi liczbami z zakresu który został przekazany do klasy.<br />
<code>for (var i = 0; i &lt; dl_tablicy; i++) {<br />
temp[i] = i;<br />
}</code><br />
W pętli<br />
<code>for (var t = 0; t &lt; dl_tablicy; t++) {</code><br />
przy użyciu klasy Math.random losuje ze stworzonej tablicy temp<br />
<code>var wylosowany = Math.round(Math.random() * (temp.length - 1));</code><br />
interesujące mnie liczby oraz dodaje je do tablicy odpowiedz<br />
<code>odpowiedz[t] = temp[wylosowany];</code><br />
teraz usuwam wylosowaną liczbę z tablicy temp by ponownie jej nie wylosować.<br />
<code>temp.splice(wylosowany, 1);<br />
}</code><br />
No i zwracam odpowiedź.<br />
<code>return odpowiedz;<br />
}<br />
}</code></p>
<p><a href="http://blog.skaldy.com/flash/tablicarandom.zip">Kod klasy do pobrania</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skaldy.com/2010/08/tablica-z-niepowtarzalnymi-liczbami-losowymi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>getCharBoundaries i embedFonts</title>
		<link>http://blog.skaldy.com/2010/08/getcharboundaries-i-embedfonts/</link>
		<comments>http://blog.skaldy.com/2010/08/getcharboundaries-i-embedfonts/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 15:59:44 +0000</pubDate>
		<dc:creator>skaldy</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[embedFonts]]></category>
		<category><![CDATA[Rectangle]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://blog.skaldy.com/?p=120</guid>
		<description><![CDATA[Metoda getCharBoundaries klasy TextField. Działa]]></description>
			<content:encoded><![CDATA[<p>Metoda <code>getCharBoundaries</code> klasy <code>TextField</code>. Działa pięknie ale tylko gdy do pola nie dodamy czcionki za pomocą właściwości <code>embedFonts</code>. Gdy to zrobimy nasz prostokat <code>Rectangle</code> przestaje istnieć i ma wartość <code>null</code> <img src='http://blog.skaldy.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skaldy.com/2010/08/getcharboundaries-i-embedfonts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zmiana położenia Objektów</title>
		<link>http://blog.skaldy.com/2010/05/zmiana-polozenia-objektow/</link>
		<comments>http://blog.skaldy.com/2010/05/zmiana-polozenia-objektow/#comments</comments>
		<pubDate>Thu, 27 May 2010 22:49:09 +0000</pubDate>
		<dc:creator>skaldy</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Klasa]]></category>

		<guid isPermaLink="false">http://blog.skaldy.com/?p=17</guid>
		<description><![CDATA[Ostatnio potrzebowałem losowego rozmieszczania obiektów,]]></description>
			<content:encoded><![CDATA[<p>Ostatnio potrzebowałem losowego rozmieszczania obiektów, w pionie lub poziomie. Postanowiłem napisać klasę która będzie uniwersalna i będę mógł ją wykorzystywać wielokrotnie. Padło pytanie jakie wymogi musi spełniać:</p>
<ol>
<li>Najlepiej jak nie będę musiał tworzyć instancji klasy.</li>
<li>Powinienem mieć możliwość wybrania rozmieszczania pionowo lub poziomo.</li>
<li>Obiekty nie powinny na siebie nachodzić oraz powinny być od siebie oddalone w odpowiedniej odległości.</li>
<li>Obiekty nie będą miały tych samych wymiarów więc dla każdego z nich wysokość i szerokość będzie różna.</li>
<li>Granica rozmieszczenia, by obiekty nie wychodziły poza ekran.</li>
<li>Losowe lub nie rozmieszczanie obiektów.</li>
</ol>
<p><span id="more-17"></span><br />
Mam wymogi jakie ma spełniać klasa więc zaczynam pisać<br />
<code>public class  Mieszaj {</code><br />
domyślna odległość między obiektami ustawiłem na 10<br />
<code>private static var odstep:Number = 10;</code><br />
domyślna granica rozmieszczania ustawiłem na 3000<br />
<code>private static var granica:Number = 3000;</code><br />
domyślnie losuje elementy, ale nie muszę<br />
<code>private static var losowe:String = "tak";</code><br />
inicjuje wysokość i szerokość elementów<br />
<code>private static var wysokoscElementu:Number = 0;</code><br />
<code>private static var szerokoscElementu:Number = 0;</code><br />
By nie pomylić się przy wywoływaniu i ograniczyć pomyłki pion i poziom są osobno wywoływane.<br />
Mieszanie poziome i pionowe praktycznie niczym się nie będzie różnić dlatego opiszę tylko pierwsze z nich.<br />
<code>public static function poziomo (obiekty:Array, obj:Object = null):Array {</code><br />
Sprawdzam czy jest obiekt z danymi<br />
<code>if (obj != null) {</code><br />
Jeżeli jest, szukam w nim interesujących mnie danych.<br />
<code>if (obj.odstep) {</code><br />
<code>odstep = obj.odstep;</code><br />
<code>}</code><br />
<code>if (obj.granica &amp;&amp; Number(obj.granica) !=0) {</code><br />
<code>granica = obj.granica;</code><br />
<code>}</code><br />
<code>if (obj.losowe) {</code><br />
<code>losowe = obj.losowe;</code><br />
<code>}</code><br />
<code>}</code></p>
<p>Potrzebna będzie tablica w której przetrzymywać będę indeksy obiektów.<br />
<code>var nowa:Array;</code><br />
<code>if (losowe == "tak") {</code><br />
Jeżeli mają to być losowe liczby używam <a href="http://blog.skaldy.com/2010/08/tablica-z-niepowtarzalnymi-liczbami-losowymi/">klasy specjalnie stworzonej do tego celu</a>.<br />
<code>nowa = TablicaRandom.random(obiekty.length);</code><br />
<code>} else {</code><br />
Gdy nie losujemy, tablica będzie zawierać indeksy w rosnącej kolejności.<br />
<code>nowa = tablicaBezLosowania(obiekty.length);</code><br />
<code>}</code><br />
Inicjuje zmienną w której będę przetrzymywać poprzedni index. Mógłbym oczywiście za każdym razem brać wartość z tablicy, ale dla jasności kodu ją inicjuje.<br />
<code>var poprzedni:Number;</code><br />
Nowa zmienna w której będę przechowywał wartość y obiektów ze sceny. Zmienna przyda się do ustawienia obiektu który będzie przekraczać granice.<br />
<code>var yy:Number = 0;</code><br />
Tyle ustawień, teraz zaczynamy zabawę <img src='http://blog.skaldy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Lecimy po tablicy obiektów<br />
<code>for (var i = 0; i &lt; obiekty.length; i++) {</code><br />
Jeżeli jest to pierwszy element to:<br />
<code>if (i==0) {</code><br />
ustawiamy x<br />
<code>obiekty[nowa[i]].x = 0;</code><br />
i y na 0<br />
<code>obiekty[nowa[i]].y = 0;</code><br />
Jeżeli to kolejny obiekt to:<br />
<code>} else {</code><br />
Położenie x zależy od położenie oraz szerokości poprzedniego elementu<br />
<code>obiekty[nowa[i]].x = obiekty[poprzedni].x + obiekty[poprzedni].width + odstep;</code><br />
natomiast y jest równe zmiennej yy<br />
<code>obiekty[nowa[i]].y = yy;</code><br />
<code>}</code><br />
Jezeli x + szerokość obiektu przekroczą naszą granicę<br />
<code>if ((obiekty[nowa[i]].x + obiekty[nowa[i]].width) &gt; granica) {</code><br />
To ustawiamy jego x na 0<br />
<code>obiekty[nowa[i]].x = 0;</code><br />
oraz przesuwamy względem osi Y o wysokość największego elementu z poprzedniego rzędzie oraz dodajemy do tego odstęp<br />
<code>yy = yy + wysokoscElementu + odstep;</code><br />
<code>obiekty[nowa[i]].y = yy;</code><br />
zerujemy wysokość dla następnego rzędu<br />
<code>wysokoscElementu = 0;</code><br />
<code>}</code><br />
i szukamy w nowym rzędzie najwyższego elementu<br />
<code>if (wysokoscElementu &lt; obiekty[nowa[i]].height) {</code><br />
Jeżeli taki znajdziemy to zapisujemy jego wysokość<br />
<code>wysokoscElementu = obiekty[nowa[i]].height;</code><br />
<code>}</code><br />
oraz zapamiętujemy nasz obiekt jako poprzedni dla następnej pętli<br />
<code>poprzedni = nowa[i];</code><br />
<code>}</code><br />
zwracamy tablicę.<br />
<code>return nowa;</code><br />
I to tyle. Trochę pisania i mam klasę która pomoże mi na pewno wiele razy <img src='http://blog.skaldy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Przykład:</p>
<p><object style="width: 620px; height: 620px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="620" height="620" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blog.skaldy.com/flash/los.swf" /><embed style="width: 620px; height: 620px;" type="application/x-shockwave-flash" width="620" height="620" src="http://blog.skaldy.com/flash/los.swf"></embed></object></p>
<p><a class="aligncenter" href="http://blog.skaldy.com/flash/mieszaj.zip">Kod klasy do pobrania</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skaldy.com/2010/05/zmiana-polozenia-objektow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

