<?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>Adobe User Group Poznań &#187; ActionScript</title>
	<atom:link href="http://augpoznan.eu/category/actionscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://augpoznan.eu</link>
	<description>Grupa użytkowników oprogramowania Adobe Poznań</description>
	<lastBuildDate>Thu, 01 Mar 2012 21:04:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wprowadzenie do Open Source Media Framework</title>
		<link>http://augpoznan.eu/wprowadzenie-do-osmf/</link>
		<comments>http://augpoznan.eu/wprowadzenie-do-osmf/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 22:41:54 +0000</pubDate>
		<dc:creator>wrobel</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutoriale]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=129</guid>
		<description><![CDATA[Wprowadzenie do

Słowem wstępu
Od kiedy pojawiły się pierwsze wzmianki o środowisku które ujednolici proces tworzenia media playerów, wiedziałem że to będzie coś czym będzie warto się zainteresować. Dlaczego zabieram się do tego dopiero teraz, skoro używać tego można było już rok temu? Ano dlatego że niedawno wydano OSMF Sprint 10 (ver. 0.93), a w tym wydaniu [...]]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;">Wprowadzenie do</h1>
<p style="text-align: center;"><img class="size-full wp-image-150  alignnone" title="osmf_logo" src="http://flexibleair.files.wordpress.com/2010/03/osmf_logo.jpg" alt="OSMF" width="198" height="50" /></p>
<h2>Słowem wstępu</h2>
<p>Od kiedy pojawiły się pierwsze wzmianki o środowisku które ujednolici proces tworzenia media playerów, wiedziałem że to będzie coś czym będzie warto się zainteresować. Dlaczego zabieram się do tego dopiero teraz, skoro używać tego można było już rok temu? Ano dlatego że niedawno wydano OSMF Sprint 10 (ver. 0.93), a w tym wydaniu nastąpił tzw API Lock-down, czyli API nie powinno się już zmieniać. To znaczy że przykłady pisane do tej wersji będą w pełni zgodne z następnymi wersjami. Zatem czym jest Open Source Media Framework (codename Strobe)? W uproszczeniu jest to framework który pomaga zająć się wszystkimi rzeczami, które powinno się zrobić raz i które powinny być stosowalne w każdym innym projekcie wykorzystującym media każdego typu. Bardziej konkretnie mówiąc to OSMF jest rozszerzalny za pomocą pluginów framework do tworzenia rozbudowanych odtwarzaczy różnego typu mediów, w różnych konfiguracjach, ze wsparciem predefiniowanych jak i własnych systemów reklam oraz wiele więcej. Został stworzony by ułatwić życie przy tworzeniu media playerów oraz skrócić czas ich developementu. Każdy kto tworzy video playery na pewno zna te problemy, z którymi się spotyka przy ich tworzeniu. Zabierają one czas, którego nie ma, a każdy następny video player, choć niby podobny to trzeba jak zawsze wiele rzeczy zmieniać<span id="more-129"></span></p>
<h2>Podstawy</h2>
<p>Teraz czas pokazać jak to się je. Może najpierw trochę o podstawowych elementach jakich użyjemy w przykładowym playerze.</p>
<ul>
<li><strong>MediaElement</strong> &#8211; podstawowa klasa przechowująca informacje o medium, które chcemy odtworzyć. Wszystkie jej pochodne można dodać do <em>MediaPlayer</em>&#8216;a. Oto kilka z subklas: <em>VideoElement, AudioElement, SWFElement, ImageElement, ParallelElement </em>oraz<em> SerialElement.</em></li>
<li><strong>VideoElement</strong> &#8211; Jak napisałem w punkcie powyżej jest to podstawowy element tego co chcemy pokazać. Przy tworzeniu nowej instancji wystarczy podać URL video jako instancje <em>URLResource</em>.
<pre class="brush: as3; title: ;">
var videoElement:VideoElement = new VideoElement(new URLResource(VIDEO_URL));
</pre>
</li>
<li><strong>MediaPlayer</strong> &#8211; kontroler przez którego operujemy <em>MediaElement</em>&#8216;em który załadowaliśmy. Ważnymi informacjami jakie możemy odczytać z mediaPlayer&#8217;a są tzw &#8220;traits&#8221;. Są to cechy mediaElement&#8217;u takie jak: <em>canPlay, canPause, canSeek</em> albo <em>canLoad</em>. Są one pomocne przy określaniu które elementy interfejsu mają być aktywne. Nowy element przypisujemy do właściwości <em>media.</em> Jeśli chcemy nasłuchiwać jak zmienia się stan naszego mediaElementu to wszystkie eventListenery przypisujemy przez <em>MediaPlayer.</em>
<pre class="brush: as3; title: ;">
var mediaPlayer:MediaPlayer = new MediaPlayer();
mediaPlayer.media = videoElement;
</pre>
</li>
<li><strong>MediaContainer</strong> &#8211; Warto wspomnieć, że żadna z powyżej przedstawionych klas nie ma swojej wizualnej reprezentacji tzn nie dziedziczy po <em>DisplayObject </em>więc nie można jej dodać do sceny. I tutaj najwyższy czas na klasę która jest tym kontenerem, który renderuje wszystkie dodane media. <em>MediaContainer</em> dziedziczy po <em>Sprite</em>. <em>MediaElement</em> dodajemy przez metodę <em>addMediaElement.</em>
<pre class="brush: as3; title: ;">
var mediaContainer:MediaContainer = new MediaContainer();
mediaContainer.addMediaElement(videoElement);
addChild(mediaContainer);
</pre>
</li>
</ul>
<h2>User Interface</h2>
<p>To tyle z takich najbardziej podstawowych elementów niezbędnych do stworzenia prostego video playera. Składając te elementy razem otrzymamy video wyświetlające podany film. Tylko nie mamy jeszcze możliwości operowania tym filmem. Cały UI musimy napisać sami gdyż jest to część niezależna od wyświetlanego video, a klasa <em>MediaPlayer </em>jest tylko interfejsem przez który sterujemy wyświetlanym kontentem. Dla mało wymagających jest biblioteka o nazwie <em>ChromeLibrary</em> która zawiera oprogramowany interfejs gotowy do wykorzystania. Można go znaleźć w ZIPie ze źródłami pod ścieżką: <em>source/libs/ChromeLibrary/.</em> Przykładowy player wykorzystujący <em>ChromeLibrary</em> jest do przejrzenia pod ścieżką: <em>source/apps/samples/framework/OSMFPlayer</em>. Wszystkie niezbędne informacje są w źródłach.</p>
<p>W moim przykładzie wykorzystuję <a title="MinimalComps" href="http://www.minimalcomps.com/" target="_blank">MinimalComps</a> autorstwa Keitha Petersa aka <a title="BIT-101" href="http://www.bit-101.com/blog/" target="_blank">BIT-101</a>. Jest to zestaw świetnych i bardzo prostych komponentów, które najlepiej sprawdzają się w aplikacjach testowych lub przykładowych. Dzięki temu do otworzenia tego przykładu nie potrzebujemy Flash&#8217;a. Wystarczy Flex SDK oraz wymagane biblioteki. Cały proces tworzenia UI jest wewnątrz funkcji <em>createUI().</em> Wydaje mi się że opisywanie tej części nie jest potrzebne do zrozumienia tematu posta. Jeśli macie pytania, piszcie je w komentarzach.</p>
<h2>Layout</h2>
<p>OK, więc mamy już nasz film wyświetlony na scenie i gra. Współgra z nim user interface. Wygląda to tak:</p>
<p><img class="alignnone size-full wp-image-168" title="Application layout" src="http://flexibleair.files.wordpress.com/2010/03/app.jpg" alt="Application layout" width="655" height="407" /></p>
<p>Teraz chcemy sami określić w jaki sposób ma pojawiać się video w naszym playerze. Tutaj przychodzi z pomocą <em>layoutMetadata</em>. Jest to właściwość typu <em>LayoutMetadata </em>każdego obiektu ( implementującego <em>ILayoutTarget</em>. <em>LayoutMetadata </em>zawiera całą masę różnych parametrów, które ustawią nasz kontent.</p>
<p>Oto lista  właściwości <em>LayoutMetadata</em>:</p>
<ul>
<li><em>horizontalAlign </em>oraz <em>verticalAlign</em> (Przyjmują wartości stałych statycznych z klas <em>HorizontalAlign </em>oraz<em>VerticalAlign);</em></li>
<li><em>x, y, width </em>oraz <em>height;</em></li>
<li><em>percentX, percentY, percentWidth </em>oraz <em>percentHeight;<br />
</em></li>
<li><em>scaleMode </em>(Przyjmuje wartości stałych statycznych z klasy <em>ScaleMode</em>);</li>
<li><em>layoutMode </em>(Przyjmuje wartości stałych statycznych z klasy<em> LayoutMode</em>);</li>
<li><em>left, right, top </em>oraz <em>bottom;</em></li>
<li><em>paddingLeft, paddingRight, paddingTop </em>oraz <em>paddingBottom;</em></li>
<li><em>snapToPixel</em></li>
<li><em>includeInLayout</em></li>
<li><em>synthesizer</em></li>
</ul>
<p>Większości z tych właściwości nie trzeba wyjaśniać. Po resztę odsyłam do <a title="LayoutManager in OSMF Language Reference" href="http://help.adobe.com/en_US/OSMF/1.0/AS3LR/org/osmf/layout/LayoutMetadata.html" target="_blank">Language Reference.</a></p>
<p>W swoim przykładzie dodałem opcję dynamicznego zmieniania rodzaju skalowania video (kontrolka w prawym górnym rogu). Aby ustawić sposób wyświetlania jaki chcemy to musimy zmienić parametry właściwości <em>layoutMetadata</em>. W przypadku <em>MediaElement </em>musimy utworzyć nową instancję klasy <em>LayoutMetadata</em>, przypisać wszystkie wartości jakie chcemy, a na końcu skorzystać z metody <em>addMetadata</em>. Podany przykład wyłącza skalowanie (zoom = 100%) i ustawia video pośrodku kontenera:</p>
<pre class="brush: as3; title: ;">
//Przypisanie layoutMetadata do mediaContainera (MediaContaiener)
mediaContainer.layoutMetadata.width = videoCont.width;
mediaContainer.layoutMetadata.height = videoCont.height;
mediaContainer.layoutMetadata.scaleMode = ScaleMode.NONE;

//Przypisanie layoutMetadata do videoElementu przez addMetadata (MediaElement)
var layoutMetadata:LayoutMetadata = new LayoutMetadata();
layoutMetadata.scaleMode = ScaleMode.NONE;
layoutMetadata.width = videoCont.width;
layoutMetadata.height = videoCont.height;
layoutMetadata.horizontalAlign = HorizontalAlign.CENTER;
layoutMetadata.verticalAlign = VerticalAlign.MIDDLE;
videoElement.addMetadata(LayoutMetadata.LAYOUT_NAMESPACE, layoutMetadata);
</pre>
<h2>MediaElement</h2>
<p>Teraz może trochę o klasach, które przechowują wszystkie informacje o tym, co chcemy wrzucić do media playera. Podstawową klasą jest <em>MediaElement</em>. Mając gotowe wszystkie elementy tj <em>mediaPlayer </em>oraz <em>mediaContainer </em>wystarczy tylko stworzyć nową instancję wybranej subklasy <em>MediaElement</em>&#8216;u oraz dodać go do <em>mediaPlayer</em>&#8216;a oraz <em>mediaContainer</em>&#8216;a.</p>
<pre class="brush: as3; title: ;">
var myVideo:VideoElement = new VideoElement(new URLResource(VIDEO_URL))
mediaPlayer.media = myVideo
mediaContainer.addMediaElement(myVideo);
</pre>
<p>W ten sposób dodaliśmy video do <em>mediaPlayer</em>&#8216;a, aby można było nim sterować, oraz do <em>mediaContainer</em>&#8216;a, aby można było zobaczyć nasze video. Z tak niewielkim kawałkiem kodu dodaliśmy nowy element. Co ciekawe, równie łatwo możemy zmieniać aktualnie puszczane media. Należy tylko pamiętać aby usunąć poprzednio załadowane medium. Oto kod:</p>
<p>Przydałoby się również opisać po krótce resztę używanych tutaj <em>MediaElement</em>&#8216;ów. Oto one:</p>
<ul>
<li><strong>AudioElement </strong>- pozwala na odtwarzanie dzwięku zarówno streamingowanego jak i progresywnie ładowanego. Można załadować MP3 oraz AAC.</li>
<li><strong>ImageElement</strong> &#8211; dzięki niemu możemy pokazać obrazy wewnątrz naszego playera. Wspiera PNG, GIF oraz JPG.</li>
<li><strong>SWFElement</strong> &#8211; tutaj możemy załadować dowolny swf.</li>
<li><strong>ParallelElement</strong> &#8211; jak nazwa wskazuje, kilka elementów odtwarzanych jednocześnie. Np. zdjęcie z podkładem muzycznym albo wyciszone video z różnymi ścieżkami dźwiękowymi.</li>
<li><strong>SerialElement</strong> &#8211; element ten wyświetla dodane elementy jeden po drugim. Np. możemy połączyć kilka video w jedno.</li>
</ul>
<p>Należy pamiętać że wszystkie ustawienia Layoutu opisane wcześniej, tyczą się również podanych tutaj <em>MediaElement</em>&#8216;ów (jeśli jest taka możliwość, bo wiadomo że nie przeskalujemy odtwarzanej mp3 do wielkości kontenera). A właśnie. wyświetlając kilka różnych typów <em>MediaElement</em>&#8216;ów możemy natrafić na taki problem. Chcemy wiedzieć tylko na podstawie <em>MediaElement</em>&#8216;u jakie jego cechy są dostępne (Np. odtwarzanie/pauzowanie lub przewijanie)</p>
<h2>Traits</h2>
<p>Najwyższy czas na koncepcję <em><strong>Traits.</strong></em> Są to cechy danego elementu opisujące co on może robić. Mamy do nich łatwy dostęp przez serię właściwości <em>MediaElement</em>&#8216;u. Oto kilka z nich: <em>canPlay, canPause, canSeek</em> <em>oraz canLoad.</em> Jeśli chcemy śledzić jak się one zmieniają i reagować na te zmiany (np aby wyłączyć elementy interfejsu niedostępne dla aktualnego elementu. Wystarczy dodać eventListenery do <em>mediaPlayer</em>&#8216;a. Oto kod:</p>
<pre class="brush: as3; title: ;">
mediaPlayer.addEventListener(MediaPlayerCapabilityChangeEvent.CAN_PLAY_CHANGE, onCanPlayChange);
mediaPlayer.addEventListener(MediaPlayerCapabilityChangeEvent.CAN_SEEK_CHANGE, onCanSeekChange);

private function onCanPlayChange(e:MediaPlayerCapabilityChangeEvent):void
{
    playPauseBtn.enabled = e.enabled
    stopBtn.enabled = e.enabled
}

private function onCanSeekChange(e:MediaPlayerCapabilityChangeEvent):void
{
    progressBar.enabled = e.enabled
}
</pre>
<p>W ten sposób mamy pewność że każde odtwarzane medium ma poprawne dostępne kontrolki.</p>
<h2>Źródła</h2>
<p>Cały projekt nie wymaga posiadania Adobe Flash Professional CS4 ani żadnego innego. Wystarczy Flex SDK. Należy pamietać, że targetem jest Flash Player 10 i takiego wymaga OSMF. Oczywiście można skompilować go we Flashu. Wystarczy podać pełną nazwę klasy w Document Class oraz pamiętać aby dodać pliki SWC do Publish Settings.</p>
<p>Cała przykładowa aplikacja jest objęta licencją <a href="http://creativecommons.org/licenses/MIT/" target="_blank">MIT</a>, więc możecie dowolnie z niej korzystać w dowolnym celu.</p>
<p><strong>Cała aplikacja (live): <a href="http://augpoznan.eu/wp-content/uploads/2010/03/osmf_sample.html" target="_blank">link</a>;<br />
Cała aplikacja (źródła): <a href="http://dl.dropbox.com/u/1333188/Example1.zip" target="_blank">link</a>;</strong><br />
OSMF: <a href="http://osmf.org/" target="_blank">osmf.org;<br />
</a>OSMF downloads: <a href="http://opensource.adobe.com/wiki/display/osmf/Downloads" target="_blank">link</a>;<br />
OSMF Language Reference: <a href="http://help.adobe.com/en_US/OSMF/1.0/AS3LR/" target="_blank">link</a>;</p>
<h2>Podsumowanie</h2>
<p>Open Source Media Framework jest genialną rzeczą, która zwalnia nas z ciągłego zmagania się z tymi samymi problemami, pozwalając zająć się tym co ważne przy tworzeniu media playerów. Przyjazne oraz intuicyjne API zachęca do głębszego zapoznania się z ogromnymi możliwościami OSMF. Według mnie naprawdę warto! Jeśli jest coś co chcielibyście zobaczyć w kolejnym artykule, znaleźliście jakieś nieścisłości, niepełne wyjaśnienie albo cokolwiek co was intryguje, zostawcie mi wiadomość w komentarzu. Wszelkie pomysły oraz uwagi mile widziane.</p>
<p>Pozdrawiam,<br />
Michał Wróblewski</p>
 
<br/> Praca: <div id='workit2002widget' class='workit2002widget' style='padding:0px!important;border: 1px solid!important;border-color:#bbbbbb!important;background-color:#ffffff!important;width:450px!important;text-decoration:none!important;' ><ul style="text-indent:0px!important;padding:0px 7px!important; margin-top:0px!important;margin:0px!important;"><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:2px;line-height:9px!important;margin-top:0px!important;'><span style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important'><a style='border:0px; font-family: Arial!important;text-decoration:none;color:inherit;' rel='external' href='http://workit.pl/api_post/222O571334650'>oferty pracy WorkIT.pl</a></span></li><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:0px;line-height:15px!important;margin-top:0px!important;'><a style='border:0px; text-decoration:none;font-weight:normal!important;color:#777777!important;font-family:Arial!important;;font-size:12px!important;' rel='external' href='http://workit.pl/job/608/programista-php-wroclaw-at-triginita-ltd/222O571334650'><span style='text-decoration:none;font-weight:bold!important;color:#2676c9!important;font-family: Arial!important;text-decoration:none!important;;font-size:12px!important;'>programista php Wroclaw</span>, Dolnoslaskie, Triginita Ltd (etat od 3500 do 8000 zl)</a></li><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:0px;line-height:15px!important;margin-top:0px!important;'><a style='border:0px; text-decoration:none;font-weight:normal!important;color:#777777!important;font-family:Arial!important;;font-size:12px!important;' rel='external' href='http://workit.pl/job/607/webmaster-wordpress-at-centrum-rejestracji-oprogramowania/222O571334650'><span style='text-decoration:none;font-weight:bold!important;color:#2676c9!important;font-family: Arial!important;text-decoration:none!important;;font-size:12px!important;'>Webmaster Wordpress</span>, Wszedzie, Centrum Rejestracji Oprogramowania (etat)</a></li></ul><ul style="text-indent:0px!important;padding:0px 7px!important; list-style:none!important;margin-bottom:0px!important;margin-top:5px!important;margin:0px!important;"><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:4px;line-height:9px!important;margin:0px!important;margin-top:2px!important;'><span style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;'>Inne: </span><a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/programista php wroclaw'>programista php wroclaw</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/seo'>seo</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/webmasetr'>webmasetr</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/wordpress'>wordpress</a></li></ul></div><script src='http://www.google-analytics.com/urchin.js' type='text/javascript'></script><script type='text/javascript'>_uacct = 'UA-391107-15';urchinTracker();</script><script type='text/javascript' src='http://workit.pl/js/api.js'></script>]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/wprowadzenie-do-osmf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Po wrześniowym spotkaniu (plus garść linków)</title>
		<link>http://augpoznan.eu/po-wrzesniowym-spotkaniu-plus-garsc-linkow/</link>
		<comments>http://augpoznan.eu/po-wrzesniowym-spotkaniu-plus-garsc-linkow/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 08:45:03 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Konkursy]]></category>
		<category><![CDATA[Spotkania]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=96</guid>
		<description><![CDATA[Z uwagi na TONY pracy nie napisałem nie byłem w stanie nic napisać o wrześniowym spotkaniu AUG.
Było ekstra &#8211; bardzo ciekawe prezentacje Piotra Walczyszyna na temat Facebook API i framework&#8217;u Swizz. Jeżeli przegapiliście to spotkanie, a chcielibyście się co nieco dowiedzieć o Facebook API &#8211; Piotr wrzuci ją niedługo na swojego blog&#8217;a.
A tu takie reportażowe zdjęcie jak [...]]]></description>
			<content:encoded><![CDATA[<p>Z uwagi na TONY pracy nie napisałem nie byłem w stanie nic napisać o wrześniowym spotkaniu AUG.<br />
Było ekstra &#8211; bardzo ciekawe prezentacje Piotra Walczyszyna na temat Facebook API i framework&#8217;u <a href="http://code.google.com/p/swizframework/">Swizz</a>. Jeżeli przegapiliście to spotkanie, a chcielibyście się co nieco dowiedzieć o Facebook API &#8211; Piotr wrzuci ją niedługo na <a href="http://www.riaspace.net/2009/09/as3-facebook-api-zdalna-prezentacja-dla-aug-trojmiasto/">swojego blog&#8217;a</a>.</p>
<p><em>A tu takie reportażowe zdjęcie jak wrześniowe AUG wyglądało</em><br />
<img src="http://augpoznan.eu/wp-content/uploads/2009/10/photo.jpg" alt="photo" title="photo" width="400" height="300" class="alignnone size-full wp-image-98" /></p>
<p>Wielkimi krokami nadchodzi MAX (właściwie to kiedy to piszę to już nadszedł). Dla tych, którzy się do LA nie wybrali &#8211; keynote&#8217;a można zobaczyć online na stronie <a href="http://max.adobe.com/online/">max.adobe.com</a>.</p>
<p>Z rzeczy wartych uwagi (które miały się na blogu pojawić dawno temu &#8211; patrz wstęp do tego posta) polecam <a href="http://www.vimeo.com/6768982">filmik z FOTB</a>, gdzie Bartek Drożdż pokazuje możliwości biblioteki <a href="http://www.jiglibflash.com/blog/">Jiglib</a>. </p>
<p>Jeszcze jedna sprawa &#8211; serdeczne gratulacje dla zwycięzcy Software Raffle &#8211; Creative Suite 4 Porduction Premium wędruje do Tomasza Misiewicza.</p>
 
<br/> Praca: <div id='workit2002widget' class='workit2002widget' style='padding:0px!important;border: 1px solid!important;border-color:#bbbbbb!important;background-color:#ffffff!important;width:450px!important;text-decoration:none!important;' ><ul style="text-indent:0px!important;padding:0px 7px!important; margin-top:0px!important;margin:0px!important;"><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:2px;line-height:9px!important;margin-top:0px!important;'><span style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important'><a style='border:0px; font-family: Arial!important;text-decoration:none;color:inherit;' rel='external' href='http://workit.pl/api_post/222O571334650'>oferty pracy WorkIT.pl</a></span></li><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:0px;line-height:15px!important;margin-top:0px!important;'><a style='border:0px; text-decoration:none;font-weight:normal!important;color:#777777!important;font-family:Arial!important;;font-size:12px!important;' rel='external' href='http://workit.pl/job/560/tester-at-astek/222O571334650'><span style='text-decoration:none;font-weight:bold!important;color:#2676c9!important;font-family: Arial!important;text-decoration:none!important;;font-size:12px!important;'>Tester</span>, Dolnoslaskie, Astek (inne)</a></li><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:0px;line-height:15px!important;margin-top:0px!important;'><a style='border:0px; text-decoration:none;font-weight:normal!important;color:#777777!important;font-family:Arial!important;;font-size:12px!important;' rel='external' href='http://workit.pl/job/561/tester-at-astek/222O571334650'><span style='text-decoration:none;font-weight:bold!important;color:#2676c9!important;font-family: Arial!important;text-decoration:none!important;;font-size:12px!important;'>Tester</span>, Wielkopolskie, Astek (inne)</a></li><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:0px;line-height:15px!important;margin-top:0px!important;'><a style='border:0px; text-decoration:none;font-weight:normal!important;color:#777777!important;font-family:Arial!important;;font-size:12px!important;' rel='external' href='http://workit.pl/job/555/administrator-sieci-at-inea-sa/222O571334650'><span style='text-decoration:none;font-weight:bold!important;color:#2676c9!important;font-family: Arial!important;text-decoration:none!important;;font-size:12px!important;'>Administrator Sieci</span>, Wielkopolskie, Inea SA (etat)</a></li></ul><ul style="text-indent:0px!important;padding:0px 7px!important; list-style:none!important;margin-bottom:0px!important;margin-top:5px!important;margin:0px!important;"><li style='padding-left:0px!important; padding-right:0px!important; padding-top:3px!important; margin-left:0px!important; margin-right:0px!important; margin-bottom:0px!important; list-style-type:none!important; text-indent:0px!important; font-family:Arial!important;padding-bottom:4px;line-height:9px!important;margin:0px!important;margin-top:2px!important;'><span style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;'>Inne: </span><a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/css'>css</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/mysql'>mysql</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/php'>php</a>, <a style='font-weight:normal!important;text-decoration:none;color:#777777!important;font-family: Arial!important;text-decoration:none!important;font-size:9px;!important;border:0px; ' rel='external' href='http://workit.pl/api_post/222O571334650/programista'>programista</a></li></ul></div><script src='http://www.google-analytics.com/urchin.js' type='text/javascript'></script><script type='text/javascript'>_uacct = 'UA-391107-15';urchinTracker();</script><script type='text/javascript' src='http://workit.pl/js/api.js'></script>]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/po-wrzesniowym-spotkaniu-plus-garsc-linkow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Po Grudniowym Spotkaniu</title>
		<link>http://augpoznan.eu/po-grudniowym-spotkaniu/</link>
		<comments>http://augpoznan.eu/po-grudniowym-spotkaniu/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 12:51:08 +0000</pubDate>
		<dc:creator>Max Małecki</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Spotkania]]></category>
		<category><![CDATA[spotkanie]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=32</guid>
		<description><![CDATA[Chciałbym serdecznie podziękować za tak liczne przybycie. Ustanowiliśmy nowy rekord. Co nas bardzo cieszy bo jeszcze nie dawno było nas tylko 3. Grupa się rozwija poziom prezentacji rośnie. Wczorajsze spotkanie rozminęło się z agendą trochę, jednak udało się zaprezentować:

Adam Fedder prezentował na temat używania klasy  AlivePDF w aplikacjach Flex
Kuba Zwoliński przedstawił projekt non-profit związany z [...]]]></description>
			<content:encoded><![CDATA[<p>Chciałbym serdecznie podziękować za tak liczne przybycie. Ustanowiliśmy nowy rekord. Co nas bardzo cieszy bo jeszcze nie dawno było nas tylko 3. Grupa się rozwija poziom prezentacji rośnie. Wczorajsze spotkanie rozminęło się z agendą trochę, jednak udało się zaprezentować:</p>
<ol>
<li>Adam Fedder prezentował na temat używania klasy  <a title="Dowiedz się więcej o AlivePDF" href="http://alivepdf.bytearray.org/" target="_blank">AlivePDF</a> w aplikacjach Flex</li>
<li><a title="Blog Kuby Zwolińskiego" href="http://kubazwolinski.com/" target="_blank">Kuba Zwoliński</a> przedstawił projekt non-profit związany z Dostępnością Aplikacji Webowych dla osób niepełnosprawnych. (My jako grupa Adobe będziemy wspierać projekt od strony Flex&#8217;a i Flasha)</li>
<li>A ja przedstawiłem relację z imprezy RIA Days, która odbyła się tydzień temu we Wrocławiu.</li>
<li>Oraz ostatni projekt, który piszemy wspólnie z <a title="Blog Roberta Podgórskiego" href="http://designerblog.pl" target="_blank">Robertem</a> i spędziliśmy nad nim ostatnie kilka miesięcy pod kodową nazwą &#8220;lastenkirkko&#8221;.</li>
</ol>
<p>To by było na tyle prezentacji, każda prezentacja zakończyła się dyskusją na prezentowane tematy. Poza nimi jeszcze poruszyliśmy:</p>
<ol>
<li>Import SWF/SWC do Flex Buildera 3</li>
<li>Flash i AIR na urządzeniach mobilnych</li>
</ol>
<p>Zdjęcia ze spotkania:</p>
<p><a href="http://augpoznan.eu/wp-content/uploads/2008/12/foto1.jpg"><img class="aligncenter size-full wp-image-33" title="Adam Podczas Prezentacji" src="http://augpoznan.eu/wp-content/uploads/2008/12/foto1.jpg" alt="Adam Podczas Prezentacji" width="500" height="375" /></a></p>
<p style="text-align: center;"><a href="http://augpoznan.eu/wp-content/uploads/2008/12/foto2.jpg"><img class="aligncenter size-full wp-image-34" title="Dyskusja" src="http://augpoznan.eu/wp-content/uploads/2008/12/foto2.jpg" alt="" width="500" height="375" /></a></p>
<p>Podziękowania dla Wróbla że zabrał aparat, bo Organizatorzy zapomnieli <img src='http://augpoznan.eu/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Jeżeli coś lub kogoś pominąłem to z pewnością pojawi się w komentarzach.</p>
<p>Następne spotkanie planujemy na połowę Stycznia 2009.  Jeszcze raz dziękujemy za tak liczne przybycie (co nas pozytywnie zaskoczyło). I zapraszamy na kolejne spotkanie. Propozycje tematów prosimy wysyłać na adres e-mail widoczny na stronie <a href="http://augpoznan.eu/jak-nas-znalezc/" target="_self">&#8220;Jak nas znaleźć&#8221;</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/po-grudniowym-spotkaniu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tworzenie prostej aplikacjii AIR &#8211; chrome&#8217;owane okna</title>
		<link>http://augpoznan.eu/tworzenie-prostej-aplikacjii-air-chromeowane-okna/</link>
		<comments>http://augpoznan.eu/tworzenie-prostej-aplikacjii-air-chromeowane-okna/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 21:39:07 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=22</guid>
		<description><![CDATA[Chciałem pokazać w tym tutorialu jak zrobić prostą aplikację AIR we Flashu.

Konkretnie &#8211; będzie to kalkulator, z nastawieniem na kolorową i ciekawą oprawę graficzną &#8211; użyjemy trybu chrome okna (czyli okno będzie miało niestandardowy kształt).
Głównym celem tego posta jest pokazanie jak tworzyć aplikacje z chrome&#8217;owanymi oknami oraz przechwytywać eventy z klawiatury i myszki.

Projekt
Możemy zaprojektować interface [...]]]></description>
			<content:encoded><![CDATA[<p>Chciałem pokazać w tym tutorialu jak zrobić prostą aplikację AIR we Flashu.</p>
<p><img src="http://blackmoondev.com/wp-content/uploads/2008/09/calc_screenshot.jpg" alt="bmd calc" title="calc_screenshot" width="382" height="472" class="alignnone size-full wp-image-269" style="border: 1px #dccfcd solid;padding: 5px" /></p>
<p>Konkretnie &#8211; będzie to kalkulator, z nastawieniem na kolorową i ciekawą oprawę graficzną &#8211; użyjemy trybu chrome okna (czyli okno będzie miało niestandardowy kształt).<br />
Głównym celem tego posta jest pokazanie jak tworzyć aplikacje z chrome&#8217;owanymi oknami oraz przechwytywać eventy z klawiatury i myszki.<br />
<span id="more-22"></span></p>
<h2>Projekt</h2>
<p>Możemy zaprojektować interface naszego widget&#8217;a od razu we Flashu lub zaimportować dowolny plik graficzny (np. z Photoshopa). W tym przypadku wszystkie elementy zostały narysowane bezpośrednio we Flashu. Tworzenie grafiki odbywa się dokładnie w ten sam sposób co &#8220;regularne&#8221; tworzenie Flashowych treści.<br />
(przy okazji &#8211; projekt kalkulatora jest rozpowszechniony zgodnie z licencją Creative Commons &#8211; można całość lub dowolne elementy wykorzystać w prywatnych i komercyjnych pracach &#8211; to samo dotyczy kodu).</p>
<h2>Klasa Calc</h2>
<p>Stworzymy klasę, która będzie odpowiadała za operacje kalkulatora.<br />
Jest to odrobinę strzelanie z armaty do wróbli:)<br />
Poniżej kod klasy:<br />
<code><br />
package{<br />
	public class Calc{<br />
		public static function sum(liczba1:Number,liczba2:Number):Number{<br />
			var wynik = liczba1 + liczba2;<br />
			return wynik;<br />
		}<br />
		public static function deduct(liczba1:Number,liczba2:Number):Number{<br />
			var wynik = liczba1 - liczba2;<br />
			return wynik;<br />
		}<br />
		public static function multiply(liczba1:Number,liczba2:Number):Number{<br />
			var wynik = liczba1 * liczba2;<br />
			return wynik;<br />
		}<br />
		public static function divide(liczba1:Number,liczba2:Number):Number{<br />
			var wynik = liczba1 / liczba2;<br />
			return wynik;<br />
		}<br />
	}<br />
}</code></p>
<h2>Kodowanie kalkulatora</h2>
<p>Poniżej omawiam kod kalkulatora (najciekawsze elementy). Pełen kod z komentarzami jest do ściągnięcia na koncu posta.<br />
<code><br />
import flash.desktop.NativeApplication;<br />
</code><br />
Tego potrzebujemy aby obsługiwać nasze chromowane okno.</p>
<p><code><br />
var myCalc:Calc = new Calc();<br />
</code><br />
Tworzymy nowy obiekt klasy Calc.</p>
<p><code><br />
function calculateResult()<br />
{<br />
	...<br />
}<br />
</code><br />
Funkcja wykorzystująca obiekt Calc i obliczająca rezultat.</p>
<p><code><br />
function removeTrailingZeros()<br />
{<br />
	...<br />
}<br />
</code><br />
Funkcja do usuwania zer na końcu wyniku.</p>
<p><code><br />
function calculatorInterface(action:String)<br />
{<br />
       ...<br />
}<br />
</code><br />
Interface kalkulatora &#8211; czyli akcje powiązane z odpowiednimi klawiszami.</p>
<p><code><br />
function reportKeyDown(event:KeyboardEvent):void<br />
{<br />
	trace(String.fromCharCode(event.charCode))<br />
        ...<br />
}<br />
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);<br />
</code><br />
Listener&#8217;y dla eventów związanych z klawiaturą.<br />
Kiedy na klawiaturze zostaje naciśnięty klawisz &#8211; jego kod jest przekazany do funkcji interface&#8217;u.</p>
<p><code><br />
theCalc.moveButton.addEventListener(MouseEvent.MOUSE_DOWN, moveWindow);<br />
function moveWindow(event:MouseEvent):void {<br />
        //przesuwanie okna<br />
	stage.nativeWindow.startMove();<br />
}<br />
theCalc.calcCloseButton.buttonMode = true;<br />
theCalc.calcCloseButton.addEventListener(MouseEvent.MOUSE_DOWN, closeWindow)<br />
function closeWindow(event:MouseEvent):void {<br />
	//zamykanie okna<br />
	NativeApplication.nativeApplication.exit();<br />
}<br />
theCalc.minimizeButton.buttonMode = true;<br />
theCalc.minimizeButton.addEventListener(MouseEvent.CLICK, minimize_CLICK);<br />
function minimize_CLICK(event:MouseEvent):void<br />
{<br />
       //minimalizacja okna<br />
       stage.nativeWindow.minimize();<br />
}<br />
</code><br />
Kod odpowiedzialny za zamykanie, przesuwanie i minimalizację okna.<br />
Jako, że nasz widget ma chromowane okno &#8211; musimy te akcje dorobić sami. </p>
<h2>Tworzenie pliku AIR</h2>
<p>Do tej pory stworzyliśmy najzwyklejszy w świecie plik Flash oparty na AS 3.0 &#8211; czas zamienić go w aplikację AIR.<br />
Najpierw wybieramy menu File &#8211; Publish Settings. Pod tabem &#8220;Flash&#8221; wybieramy opcję &#8220;Version&#8221; na &#8220;Adobe AIR 1.0&#8243;.<br />
Następnie z menu Commands wybieramy opcję &#8220;AIR &#8211; Application and Installer Settings&#8221;.</p>
<p><img src="http://blackmoondev.com/wp-content/uploads/2008/09/deploy1.jpg" alt="Deploy1" title="deploy1" width="304" height="172" class="alignnone size-full wp-image-270" style="border: 1px #dccfcd solid;padding: 5px"/></p>
<p>W tym oknie możemy określić parametry tworzonego installera.<br />
Na razie większość opcji pozostawiamy w domyślnym ustawieniu &#8211; poza &#8220;Window Style&#8221;, które zmieniamy na &#8220;Custom Chorme (transparent)&#8221;.</p>
<p><img src="http://blackmoondev.com/wp-content/uploads/2008/09/deploy2.jpg" alt="Deploy2" title="deploy2" width="418" height="605" class="alignnone size-full wp-image-271" style="border: 1px #dccfcd solid;padding: 5px" /></p>
<p>Ostatnim krokiem jest wskazanie pliku z certyfikatem. Certyfikat należy kupić &#8211; np. na stronie Adobe. Nie jest niezbędny do tworzenia plików AIR &#8211; ale użytkownicy mogą bardzo podejrzliwie podchodzić do aplikacji bez certyfikatu. </p>
<p><img src="http://blackmoondev.com/wp-content/uploads/2008/09/deploy3.jpg" alt="Deploy3" title="deploy3" width="418" height="220" class="alignnone size-full wp-image-272" style="border: 1px #dccfcd solid;padding: 5px"/></p>
<h2>Download</h2>
<p>Pliki:<br />
<a href="http://goodies.blackmoondev.com/calc/bmdCalc.air">Instalator kalkulatora</a><br />
<a href="http://goodies.blackmoondev.com/calc/bmdCalc.zip">Źródła .fla i .as</a></p>
<p>Zapraszam do komentarzy:)</p>
]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/tworzenie-prostej-aplikacjii-air-chromeowane-okna/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zewnętrzny edytor ActionScript na Mac&#8217;a &#8211; TextMate</title>
		<link>http://augpoznan.eu/zewnetrzny-edytor-actionscript-na-maca-textmate/</link>
		<comments>http://augpoznan.eu/zewnetrzny-edytor-actionscript-na-maca-textmate/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 18:27:20 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Narzędzia]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=14</guid>
		<description><![CDATA[O Textmate słyszałem już jakiś czas temu &#8211; jakoś nie bardzo miałem wtedy czas i ochotę na testowanie nowego narzędzia. Mimo, że teraz nie jest dużo luźniej z pracą (może właśnie dlatego człowiek się starał trochę uciec   &#8211; zainstalowałem i spróbowałem Textmate&#8217;a.

Pierwsze wrażenie &#8211; nie jest taki śliczny jak go opisywano. Prawdę mówiąc, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://designerblog.pl/wp-content/uploads/2008/07/textmate_icon.png"><img class="alignleft size-full wp-image-87" title="textmate_icon" src="http://designerblog.pl/wp-content/uploads/2008/07/textmate_icon.png" alt="Textmate" width="143" height="139" /></a>O Textmate słyszałem już jakiś czas temu &#8211; jakoś nie bardzo miałem wtedy czas i ochotę na testowanie nowego narzędzia. Mimo, że teraz nie jest dużo luźniej z pracą (może właśnie dlatego człowiek się starał trochę uciec <img src='http://augpoznan.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8211; zainstalowałem i spróbowałem Textmate&#8217;a.<br />
<span id="more-14"></span><br />
Pierwsze wrażenie &#8211; nie jest taki śliczny jak go opisywano. Prawdę mówiąc, po przeczytaniu na blogach kilku hymnów na temat Textmate&#8217;a oczekiwałem edytora, który co najmniej zacznie samodzielnie pisać kod, który mi jest aktualnie potrzebny. Tak dobrze nie jest:)<br />
Niemniej jednak &#8211; kiedy zacznie się w Textmate&#8217;cie pracować &#8211; jest bardzo fajnie, a po chwili (kiedy opanuje się podstawowe komendy i skróty) &#8211; jeszcze lepiej.<br />
Na tym etapie zaczynamy się wgłębiać w dokumentację i odkrywać funkcje, jakie przyprawiają o lekki zawrót głowy &#8211; hitem jest dla mnie edytowanie wielu linii na raz lub wstawianie notatek (dla siebie lub innych programistów &#8211; linki do miejsc gdzie wstawiono notatkę są dostępne ze osobnego panelu).<br />
Co prawda ja używam (i pewnie tylko do tego będę używał) Textmate jedynie do ActionSctipt&#8217;u, ale sam edytor obsługuje większość popularnych składni (oczywiście można definiować kolory na jakie dana składnia się koloruje).<br />
Choć to oczywiste, wpomnę o łatwo dostępnych tabach na jakich umieszczone są skróty do innych plików projektu oraz o zawijaniu kodu. Pisząc ActionScript mamy również dostęp do środowiska testowego Flasha z poziomu edytora. (tak na marginesie &#8211; czasami mnie dziwi dlaczego Adobe tak totalnie olało edytor wbudowany we Flasha. A następnie dziwię się jeszcze bardziej z jakiego powodu do niedawna pisałem w tym edytorze <img src='http://augpoznan.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Wracając do Textmate&#8217;a &#8211; dodajmy do tego moc drzemiąca w &#8220;hardcorowych&#8221; linuxowych edytorach (działą większość komend i skrótów z vim&#8217;a &#8211; choćby cały system szukania poprzez wyrażenia regularne) + mnóstwo użytecznych &#8220;snippetów&#8221;  + klika innych ułatwiających życie funkcjii.<br />
Całość zapakowana w elegancki, &#8220;macowy&#8221; interfejs.<br />
Edytor kosztuje 39 euro, można go ściągnąć (30 dniowy trial) i kupić na stronie <a href="http://macromates.com/">http://macromates.com/</a>. Gorąco polecam (właścicielom tych 10% ładniejszych komputerów &#8211; Textmate jest jedynie w wersji na Mac&#8217;a).</p>
]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/zewnetrzny-edytor-actionscript-na-maca-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>funkcja randomColor()</title>
		<link>http://augpoznan.eu/funkcja-randomcolor/</link>
		<comments>http://augpoznan.eu/funkcja-randomcolor/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 14:38:22 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://augpoznan.eu/?p=11</guid>
		<description><![CDATA[Potrzebowałem ostatnio funkcji losującej dowolny kolor RGB.
Straciłem na to dobre pół godziny, kombinując z klasą Color &#8211; a rozwiąznie jak zwykle okazało się banalnie proste.
Kod poniżej

function randomColor()
{
var r1 = random(16).toString(16);
var r2 = random(16).toString(16);
var g1 = random(16).toString(16);
var g2 = random(16).toString(16);
var b1 = random(16).toString(16);
var b2 = random(16).toString(16);
var rColor = "0x"+r1+r2+g1+g2+b1+b2;
return(rColor);
}

]]></description>
			<content:encoded><![CDATA[<p>Potrzebowałem ostatnio funkcji losującej dowolny kolor RGB.<br />
Straciłem na to dobre pół godziny, kombinując z klasą Color &#8211; a rozwiąznie jak zwykle okazało się banalnie proste.<br />
Kod poniżej</p>
<p><code><br />
function randomColor()<br />
{<br />
var r1 = random(16).toString(16);<br />
var r2 = random(16).toString(16);<br />
var g1 = random(16).toString(16);<br />
var g2 = random(16).toString(16);<br />
var b1 = random(16).toString(16);<br />
var b2 = random(16).toString(16);<br />
var rColor = "0x"+r1+r2+g1+g2+b1+b2;<br />
return(rColor);<br />
}<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://augpoznan.eu/funkcja-randomcolor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

