<?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>timovirtanen.com &#187; AS2</title>
	<atom:link href="http://www.timovirtanen.com/category/flash/as2/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.timovirtanen.com</link>
	<description>FLASH RUNTIME ROCKS!</description>
	<lastBuildDate>Sun, 27 Jun 2010 09:39:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Seuraa johtajaa</title>
		<link>http://www.timovirtanen.com/2007/10/01/seuraa-johtajaa/</link>
		<comments>http://www.timovirtanen.com/2007/10/01/seuraa-johtajaa/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 07:42:22 +0000</pubDate>
		<dc:creator>Timo Virtanen</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Flash & Flex]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.timovirtanen.com/?p=55</guid>
		<description><![CDATA[&#8220;Volume slaiderin&#8220;- tekeminen on varmasti monelle tuttua puuhaa. MovieClipin pakottaminen seuraamaan suoraa viivaa pysty- tai vaakasuunnassa on aika yksinkertainen toimenpide, mutta entÃ¤ monimutkaisemmat muodot ja polut. TÃ¤ssÃ¤ yksi tapa. Alla koodi yksinkertaisimmillaan. function ballPos&#40;mc:MovieClip, xp:Number&#41;:Void &#123; mc._x = xp; var yp = 0; do &#123; yp++; &#125; while&#40;!mLine.hitTest&#40;xp, yp, true&#41;&#41;; mc._y = yp; updateAfterEvent&#40;&#41;; &#125; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="icon" title="Flash" src="http://www.timovirtanen.com/pics/icon_flash.gif" alt="Flash" />&#8220;<em>Volume slaiderin</em>&#8220;- tekeminen on varmasti monelle tuttua puuhaa. MovieClipin pakottaminen seuraamaan suoraa viivaa pysty- tai vaakasuunnassa on aika yksinkertainen toimenpide, mutta entÃ¤ monimutkaisemmat muodot ja polut.</p>
<p>TÃ¤ssÃ¤ yksi tapa. Alla koodi yksinkertaisimmillaan.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> ballPos<span style="color: #009900;">&#40;</span>mc<span style="color: #339933;">:</span>MovieClip<span style="color: #339933;">,</span> xp<span style="color: #339933;">:</span>Number<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">Void</span>
<span style="color: #009900;">&#123;</span>
mc._x <span style="color: #339933;">=</span> xp<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> yp <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">do</span>
<span style="color: #009900;">&#123;</span>
yp<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mLine.<span style="color: #660066;">hitTest</span><span style="color: #009900;">&#40;</span>xp<span style="color: #339933;">,</span> yp<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
mc._y <span style="color: #339933;">=</span> yp<span style="color: #339933;">;</span>
updateAfterEvent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="more-55"></span></p>
<p><a title="Follow The Path" href="http://www.timovirtanen.com/wp-content/uploads/2007/10/linetest.swf" target="_blank"></a><a title="Follow the Path" href="http://www.timovirtanen.com/wp-content/uploads/2007/10/linetest.swf" target="_blank">Katso esimerkki: Follow the Path</a> | <a title="linetest.zip" href="http://www.timovirtanen.com/wp-content/uploads/2007/10/linetest.zip" target="_blank">FLA</a></p>
<p>Ja vielÃ¤ koodi kokonaisuudessaan:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">mBall.<span style="color: #660066;">onMouseMove</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">Void</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// tarkistetaan, ettÃ¤ ollaan rajatulla alueella</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isInside<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
ballPos<span style="color: #009900;">&#40;</span>mBall<span style="color: #339933;">,</span> _root._xmouse<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> ballPos<span style="color: #009900;">&#40;</span>mc<span style="color: #339933;">:</span>MovieClip<span style="color: #339933;">,</span> xp<span style="color: #339933;">:</span>Number<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">Void</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// pallon x on sama kuin hiiren x</span>
mc._x <span style="color: #339933;">=</span> xp<span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// aloitetaan oikean paikan haku pystysuunnassa</span>
<span style="color: #003366; font-weight: bold;">var</span> yp <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">do</span>
<span style="color: #009900;">&#123;</span>
yp<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #006600; font-style: italic;">// suoritetaan lisÃ¤ys kunnes saavutetaan muoto</span>
<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mLine.<span style="color: #660066;">hitTest</span><span style="color: #009900;">&#40;</span>xp<span style="color: #339933;">,</span> yp<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// asetetaan pallon koordinaatti</span>
mc._y <span style="color: #339933;">=</span> yp<span style="color: #339933;">;</span>
updateAfterEvent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// alustetaan pallon paikka</span>
ballPos<span style="color: #009900;">&#40;</span>mBall<span style="color: #339933;">,</span> mBall._x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// alueen tarkistus</span>
<span style="color: #003366; font-weight: bold;">function</span> isInside<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>Boolean
<span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> xp <span style="color: #339933;">=</span> _root._xmouse<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xp <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">||</span> xp <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> Stage.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Pallon x on siis koko ajan sama kuin hiiren x. Y:n arvo saadaan selville <em>hitTest</em>illÃ¤. Aloitetaan y-koordinaatista 0 ja lisÃ¤Ã¤tÃ¤Ã¤n y:n arvoa while-loopissa joka &#8220;kierroksella&#8221; yhdellÃ¤. Kun while lauseen hitTest palauttaa arvon <em>tosi</em>, ollaan saavutettu muodon pinta ja pÃ¤ivitetÃ¤Ã¤n pallon y-koordinaatti. Olennaista on myÃ¶s huomata, ettÃ¤ kolmannen parametrin tulee olla <em>true</em>, koska haluamme testata osuman itse varsinaisen muodon kanssa (BoundingBoxin sijaan).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.timovirtanen.com/2007/10/01/seuraa-johtajaa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash ja trigonometria</title>
		<link>http://www.timovirtanen.com/2006/02/23/flash-ja-trigonometria/</link>
		<comments>http://www.timovirtanen.com/2006/02/23/flash-ja-trigonometria/#comments</comments>
		<pubDate>Thu, 23 Feb 2006 21:24:32 +0000</pubDate>
		<dc:creator>Timo Virtanen</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Flash & Flex]]></category>

		<guid isPermaLink="false">http://www.timovirtanen.com/?p=33</guid>
		<description><![CDATA[Flash on tehokas tyÃ¶kalu, jonka avulla voi kehittÃ¤Ã¤ erilaisia sovelluksia aivan yksinkertaisesta todella vaativiin. PelkillÃ¤ perusmetodeilla ja aikajananhallinalla saa aikaan jo paljon, mutta nÃ¤lkÃ¤ kasvaa nopeasti. Yksi yleisimpiÃ¤ mielenkiinnonkohteita on Flashpelit (mututuntumaa), mutta into lopahtaa helposti kesken, kun yksinkertaiselta tuntuvan pelin toteutus ei onnistukaan niin helpolla kuin aluksi oli ajatellut. TÃ¤llaisen tilanteen saattaa aiheuttaa pelin [...]]]></description>
			<content:encoded><![CDATA[<p><img class="icon" title="Flash" src="http://www.timovirtanen.com/pics/icon_flash.gif" alt="Flash" />Flash on tehokas tyÃ¶kalu, jonka avulla voi kehittÃ¤Ã¤ erilaisia sovelluksia aivan yksinkertaisesta todella vaativiin. PelkillÃ¤ perusmetodeilla ja aikajananhallinalla saa aikaan jo paljon, mutta nÃ¤lkÃ¤ kasvaa nopeasti. Yksi yleisimpiÃ¤ mielenkiinnonkohteita on Flashpelit (mututuntumaa), mutta into lopahtaa helposti kesken, kun yksinkertaiselta tuntuvan pelin toteutus ei onnistukaan niin helpolla kuin aluksi oli ajatellut. TÃ¤llaisen tilanteen saattaa aiheuttaa pelin toiminnan kannalta oleellinen trigonometria. Varsinkin minulle aihealue tuottaa suuria vaikeuksia ja trigonometriset funktiot sin, cos ja tan tuovat koulunpenkiltÃ¤ mieleen vain synkkiÃ¤ muistoja matikantunneilta (no ei oikeasti, koulussa oli aina kivaa). Jos nyÃ¶kyttelit pÃ¤Ã¤tÃ¤si lukiessasi edellisiÃ¤ virkkeitÃ¤, jatka lukemista. En aio antaa mitÃ¤Ã¤n syvÃ¤luotaavaa perehdytystÃ¤ trigonometrian kÃ¤ytÃ¶stÃ¤ Flashissa, en edes osaisi, mutta tÃ¤mÃ¤n avulla ehkÃ¤ myÃ¶s muut kaltaiseni tavikset saavat jonkunlaisen otteen siitÃ¤ ohuesta punaisesta langasta, joka on ollut kadoksissa jo vuosia. YritÃ¤n kuitenkin tarjoilla sen verran tietoa, ettÃ¤ pÃ¤Ã¤set vauhtiin yksinkertaista trigonometriaa vaativien pelien tai sovellusten kanssa.<br />
<span id="more-33"></span><br />
Ja pyydÃ¤n heti alkuun anteeksi, jos loukkaan matemaatikkojen mieliÃ¤ huonolla tai jopa virheellisellÃ¤ termistÃ¶llÃ¤. Raportoikaa nÃ¤istÃ¤ mahdollisista virheistÃ¤ niin korjaan asian. Kiitos.</p>
<h3>SisÃ¤ltÃ¶</h3>
<ul>
<li><a href="#kulmat">Kulmat</a></li>
<li><a href="#projektio">Projektio</a></li>
<li><a href="#linkit">Linkit</a></li>
</ul>
<p>Valmiina? TÃ¤stÃ¤ se lÃ¤htee.</p>
<p><em><strong>Trigonometria</strong><br />
Matematiikan haara, joka kÃ¤sittelee kolmion sivujen ja kulmien suhteita toisiinsa.</em></p>
<h3><a name="kulmat"></a>Kulmat</h3>
<p>Kulmia kÃ¤ytetÃ¤Ã¤n Flashissa kahdella eri tavalla. NiitÃ¤ kÃ¤ytetÃ¤Ã¤n movieclip-objektien pyÃ¶rittÃ¤miseen ja trigonometristen funktioiden apuna.</p>
<p>Positiiviset kulmat mitataan x-axelilta myÃ¶tÃ¤pÃ¤ivÃ¤Ã¤n ja negatiiviset vastapÃ¤ivÃ¤Ã¤n. Kulmaa mitataan asteissa ja se voi saada arvon vÃ¤liltÃ¤ 0Â° &#8211; 360Â°.</p>
<div class="huom">Objektin rotaatiolle voidaan antaa myÃ¶s suurempia arvoja kuin 360Â°. Kuvitellaan, ettÃ¤ haluamaamme objetia on pyÃ¶ritetty 720Â°, eli kaksi kertaa ympÃ¤ri. Sen _rotation-ominaisuus kuitenkin palauttaa arvon 360Â°.</p>
<p>Huomaa myÃ¶s, ettÃ¤ antamalla objektin _rotation-ominaisuudelle negatiivisen arvon, itse kulma ei ole negatiivinen. Negatiivinen rotaatio vain kertoo kuinka paljon objektia tulee pyÃ¶rÃ¤yttÃ¤Ã¤ vastapÃ¤ivÃ¤Ã¤n. Jos siis pyÃ¶ritÃ¤t objektia -90Â°, sen kulma on 270Â°.</p></div>
<p>Asteiden lisÃ¤ksi on olemassa myÃ¶s toinen varsin yleinen tapa mitata kulmia: radiaani. 360Â° on samakuin 2Î .</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Math.<span style="color: #660066;">PI</span><span style="color: #339933;">;</span></pre></div></div>

<p>Mihin radiaaneja sitten tarvitaan? Koska kaikki kulmiin liittyvÃ¤ tehdÃ¤Ã¤n Flashissa &#8211; yhtÃ¤ poikkeusta lukuunottamatta &#8211; radiaaneilla. Asteita kÃ¤ytetÃ¤Ã¤n vain, kun haluat muuttaa objektin rotaatiota stagella. Koska molempien kanssa on vÃ¤lttÃ¤mÃ¤tÃ¶ntÃ¤ kuitenkin tyÃ¶skennellÃ¤, on hyvÃ¤ voida muuttaa toisinaan asteet radiaaneiksi ja toisinpÃ¤in.</p>
<p><img title="muunto" src="http://www.timovirtanen.com/tutofiles/trigonometria1/radtodeg.gif" alt="muunto" /></p>
<p>Saattaa olla hyÃ¶dyllistÃ¤ luodan omat functiot muunnon toteuttamiseen:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> radToDeg<span style="color: #009900;">&#40;</span>rad<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> deg<span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">180</span><span style="color: #339933;">/</span>Math.<span style="color: #660066;">PI</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>rad<span style="color: #339933;">;</span>
   <span style="color: #000066; font-weight: bold;">return</span> deg<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> degToRad<span style="color: #009900;">&#40;</span>deg<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> rad <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">PI</span><span style="color: #339933;">/</span><span style="color: #CC0000;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>deg<span style="color: #339933;">;</span>
   <span style="color: #000066; font-weight: bold;">return</span> rad<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3><a name="projektio"></a>Projektio</h3>
<p>TÃ¤mÃ¤ osio antaa sitten konkreettisempaa apua pelien ja sovellusten suunnitteluun.</p>
<p><!--mgimg--> <a title="Esimerkki" href="http://www.timovirtanen.com/tutofiles/trigonometria1/angle.html" target="_blank">Katso valmis esimerkki</a> |Â Â <!--DLimg--> <a title="Tallenna tyÃ¶tiedosto" href="http://www.timovirtanen.com/tutofiles/trigonometria1/angle.fla" target="_blank">Lataa tyÃ¶tiedosto koneellesi</a></p>
<p>Stagen keskellÃ¤ oleva objekti osoittaa kokoajan hiiren kursoria kohti. Kun klikkaat hiirellÃ¤ jonnekin stagella, objekti laukaisee &#8220;ammuksen&#8221;. Ammus liikkuu kohti paikka, jossa hiiren painallus tapahtui. Jotta tÃ¤mÃ¤n kaltainen liike saadaan aikaan Flashissa, ammuksen nopeus tÃ¤ytyy projisoida x- ja y-akselin mukaan.</p>
<p>TiedÃ¤mme siis x:n nopeuden (_root._xmouse) ja y:n nopeuden (_root._ymouse). TÃ¤mÃ¤n tiedon avulla voimme selvittÃ¤Ã¤ tarvittavan kulman, joka sijoitetaan objektin _rotation-ominaisuuteen. Likaisen tyÃ¶n hoitaa Math.atan2()-metodi. Se palauttaa arvon radiaaneina. TÃ¤mÃ¤ tarkoittaa siis sitÃ¤, ettÃ¤ lukema tÃ¤ytyy muuttaa asteiksi, ennen kuin voimme kÃ¤yttÃ¤Ã¤ sitÃ¤ objektin kulman muuttamiseen stagella.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Math.<span style="color: #660066;">atan2</span><span style="color: #009900;">&#40;</span>y<span style="color: #339933;">,</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Jos stagella oleva objektimme olisi sijoitettu paikkaan 0,0 eli origoon, koodi nÃ¤yttÃ¤isi seuraavalta:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Math.<span style="color: #660066;">atan2</span><span style="color: #009900;">&#40;</span>_ymouse<span style="color: #339933;">,</span>_xmouse<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Olettaen siis, ettÃ¤ haluamme objektin osoittavan hiiren suuntaan. Usein (jos koskaan) emme kuitenkaan sijoita objekteja luodun esityksen vasempaan ylÃ¤reunaan vaan muuaalle esitykseen ja tÃ¤llaisessa tapauksessa koodiin joudutaan tekemÃ¤Ã¤n pieni muutos. Mutta vain pieni.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Math.<span style="color: #660066;">atan2</span><span style="color: #009900;">&#40;</span>_ymouse<span style="color: #339933;">-</span>objekti._y<span style="color: #339933;">,</span>_xmouse<span style="color: #339933;">-</span>objekti._x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>NÃ¤in saamme laskettua oikean kulman hiiren ja objektin suhteen. Alla esimerkki toimivasta koodista.</p>
<p>m = stagella olevan objektin esiintymÃ¤nimi</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">onMouseMove</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	m._rotation <span style="color: #339933;">=</span> getDeg<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	updateAfterEvent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> getDeg<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> ang <span style="color: #339933;">=</span> Math.<span style="color: #660066;">atan2</span><span style="color: #009900;">&#40;</span>_ymouse<span style="color: #339933;">-</span>obj._y<span style="color: #339933;">,</span>_xmouse<span style="color: #339933;">-</span>obj._x<span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">180</span><span style="color: #339933;">/</span>Math.<span style="color: #660066;">PI</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">return</span> ang<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ammuksen laukaisuun ja liikuttamiseen tarvitaan seuraavanlainen koodi:<br />
d = objektin syvyys</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">onMouseDown</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> mc <span style="color: #339933;">=</span> _root.<span style="color: #660066;">attachMovie</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;n&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;n&quot;</span><span style="color: #339933;">+</span>d<span style="color: #339933;">,</span>d<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	mc._x <span style="color: #339933;">=</span> m._x<span style="color: #339933;">;</span>
	mc._y <span style="color: #339933;">=</span> m._y<span style="color: #339933;">;</span>
	mc._rotation <span style="color: #339933;">=</span> getDeg<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	arr.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>mc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	d<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
_root.<span style="color: #660066;">onEnterFrame</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i</pre></div></div>

<p>KÃ¤ytin tÃ¤ssÃ¤ esimerkissÃ¤ attachMovie-metodia lisÃ¤Ã¤mÃ¤Ã¤n objektin esiintymÃ¤n stagelle kuvaamaan ammusta. Laukaistut ammukset tallennetaan taulukkoon, joka kÃ¤ydÃ¤Ã¤n jokaisella framella lÃ¤pi ja tehdÃ¤Ã¤n tarvittavat siirrot. Ammuksen liikkumisen kannalta olennaien osuus on seuraava:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> rot <span style="color: #339933;">=</span> arr<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>._rotation <span style="color: #339933;">*</span> PI<span style="color: #339933;">/</span><span style="color: #CC0000;">180</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sx <span style="color: #339933;">=</span> Math.<span style="color: #660066;">cos</span><span style="color: #009900;">&#40;</span>rot<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>speed<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sy <span style="color: #339933;">=</span> Math.<span style="color: #660066;">sin</span><span style="color: #009900;">&#40;</span>rot<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>speed<span style="color: #339933;">;</span>
arr<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>._x <span style="color: #339933;">+=</span> sx<span style="color: #339933;">;</span>
arr<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>._y <span style="color: #339933;">+=</span> sy<span style="color: #339933;">;</span></pre></div></div>

<p>Muuttujaan &#8220;rot&#8221; tallennetaan tarkistelun kohteena olevan ammuksen kulma, joka muutetaan radiaaneiksi Math.cos()-metodia varten. Math.cos() palauttaa objektin x-nopeuden ja Math.sin() vastaavasti y-nopeuden. NÃ¤iden funktioiden palauttamat arvot kerrotaan sitten vielÃ¤ halutulla nopeuskertoimella, jonka jÃ¤lkeen arvot sijoitetaan objektiin.</p>
<h3><a name="linkit"></a>Linkit</h3>
<p>Kuten jo alkuun heti mainitsin, pyrin kokoamaan tÃ¤lle sivulle vain tarvittavan tiedon alkuun pÃ¤Ã¤semiseksi. Kuten varmaan huomasit mm. pythagoraan lause ja trigonometriset funktiot jÃ¤ivÃ¤t kokonaan pois tai ainakin vÃ¤hÃ¤lle huomiolle. TÃ¤mÃ¤ ei kuitenkaan tarkoita sitÃ¤, etteikÃ¶ niitÃ¤ voisi hyÃ¶dyntÃ¤Ã¤ myÃ¶s Flash- sovelluksissa. Jos haluat opiskella lisÃ¤Ã¤ trigonometriaa, netistÃ¤ lÃ¶ytyy paljon luetaavaa aiheeseen liittyen.</p>
<ul>
<li><a title="trigonometria - Google-haku" hreflang="fi" href="http://www.google.fi/search?client=firefox-a&amp;rls=org.mozilla%3Afi-FI%3Aofficial_s&amp;hl=fi&amp;q=trigonometria&amp;meta=&amp;btnG=Google-haku" target="_blank">Google kertoo: trigonometria</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.timovirtanen.com/2006/02/23/flash-ja-trigonometria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash To Javascript-kommunikaatio</title>
		<link>http://www.timovirtanen.com/2005/12/05/flash-to-javascript-kommunikaatio/</link>
		<comments>http://www.timovirtanen.com/2005/12/05/flash-to-javascript-kommunikaatio/#comments</comments>
		<pubDate>Mon, 05 Dec 2005 15:24:33 +0000</pubDate>
		<dc:creator>Timo Virtanen</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Flash & Flex]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.timovirtanen.com/?p=9</guid>
		<description><![CDATA[Flashin ja JavaScriptin vÃ¤linen kommunnikaatio antaa uusia mahdollisuuksia Flash- ja internetsuunnitteluun. TÃ¤ssÃ¤ artikkelissa tutustutaan Flashin ja JavaScriptin vÃ¤liseen kommunikaatioon kÃ¤yttÃ¤en getURL()-metodia. LyhyestÃ¤ virsi kaunis. SisÃ¤ltÃ¶ getURL() Popupin avaaminen Flashista getURL() Kun kÃ¤ytÃ¤t getURL():a esityksessÃ¤si kutsumaan JavaScript-funktiota HTML-sivulla, jonne Flash-esityksesi on embeddattu, voit kÃ¤yttÃ¤Ã¤ seuraavaa syntaksia: _root.getURL&#40;&#34;javascript:funktioNimi([parametrit])&#34;&#41;; Esimerkiksi: _root.getURL&#40;&#34;javascript:alert('TÃ¤mÃ¤ on varoitus')&#34;&#41;; Popupin avaaminen Flashista Popupin avaaminen [...]]]></description>
			<content:encoded><![CDATA[<p><img class="icon" title="javascript" src="http://www.timovirtanen.com/pics/icon_js.gif" alt="javascript" />Flashin ja JavaScriptin vÃ¤linen kommunnikaatio antaa uusia mahdollisuuksia Flash- ja internetsuunnitteluun. TÃ¤ssÃ¤ artikkelissa tutustutaan Flashin ja JavaScriptin vÃ¤liseen kommunikaatioon kÃ¤yttÃ¤en getURL()-metodia. LyhyestÃ¤ virsi kaunis.<br />
<span id="more-9"></span><br />
SisÃ¤ltÃ¶</p>
<ul>
<li><a href="#geturl">getURL()</a></li>
<li><a href="#popup">Popupin avaaminen Flashista</a></li>
</ul>
<h3><a name="geturl"></a>getURL()</h3>
<p>Kun kÃ¤ytÃ¤t getURL():a esityksessÃ¤si kutsumaan JavaScript-funktiota HTML-sivulla, jonne Flash-esityksesi on embeddattu, voit kÃ¤yttÃ¤Ã¤ seuraavaa syntaksia:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">getURL</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;javascript:funktioNimi([parametrit])&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Esimerkiksi:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">getURL</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;javascript:alert('TÃ¤mÃ¤ on varoitus')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3><a name="popup"></a>Popupin avaaminen Flashista</h3>
<p>Popupin avaaminen Fashista aivan samalla tavalla kuin jo edellÃ¤ mainittiin. HTML-sivulle kirjoitetaan seuraava skripti.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;!--</span>mce<span style="color: #339933;">:</span><span style="color: #CC0000;">0</span><span style="color: #339933;">--&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Fashista voit siis kutsua openwin- funktiota seuraavasti:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">getURL</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;javascript:openwin('polku/tiedosto.html', 'ikkunannimi', 'width=760, height=420')&quot;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.timovirtanen.com/2005/12/05/flash-to-javascript-kommunikaatio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analoginen Flash- kello</title>
		<link>http://www.timovirtanen.com/2005/12/02/flash-kello/</link>
		<comments>http://www.timovirtanen.com/2005/12/02/flash-kello/#comments</comments>
		<pubDate>Fri, 02 Dec 2005 07:55:22 +0000</pubDate>
		<dc:creator>Timo Virtanen</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Demo]]></category>

		<guid isPermaLink="false">http://www.timovirtanen.com/?p=2</guid>
		<description><![CDATA[Flash MX, Flash Player 6 Katso valmis esimerkki &#124;Â Â  Lataa tyÃ¶tiedosto koneellesi Analogisen kellon toteuttaminen Flashilla saattaa kuullostaa hankalalta ja aikaa vievÃ¤ltÃ¤ projektilta, mutta toteutus on itseasiassa varsin yksinkertainen. Koodiakaan ei tarvita kuin muutama rivillinen. Seuraava koodi kirjoitetaan esityksen ensimmÃ¤iseen frameen: _root.onEnterFrame = function&#40;&#41; &#123; var aika:Date = new Date&#40;&#41;; &#160; tunti = aika.getHours&#40;&#41;; minuutti [...]]]></description>
			<content:encoded><![CDATA[<p><img class="icon" title="Flash tutorial" src="http://www.timovirtanen.com/pics/icon_flashtuto.gif" alt="Flash tutorial" /><em>Flash MX, Flash Player 6</em></p>
<p><!--mgimg--> <a title="Analoginen kello toiminnassa" href="http://www.timovirtanen.com/tutofiles/analogClock/index.html" target="_blank">Katso valmis esimerkki</a> |Â Â <!--DLimg--> <a title="Tallenna tyÃ¶tiedostot" href="http://www.timovirtanen.com/tutofiles/analogClock/tutofile.fla" target="_blank">Lataa tyÃ¶tiedosto koneellesi</a></p>
<p>Analogisen kellon toteuttaminen Flashilla saattaa kuullostaa hankalalta ja aikaa vievÃ¤ltÃ¤ projektilta, mutta toteutus on itseasiassa varsin yksinkertainen. Koodiakaan ei tarvita kuin muutama rivillinen. Seuraava koodi kirjoitetaan esityksen ensimmÃ¤iseen frameen:<br />
<span id="more-2"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">_root.<span style="color: #660066;">onEnterFrame</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> aika<span style="color: #339933;">:</span>Date <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   tunti <span style="color: #339933;">=</span> aika.<span style="color: #660066;">getHours</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   minuutti <span style="color: #339933;">=</span> aika.<span style="color: #660066;">getMinutes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   sekunti <span style="color: #339933;">=</span> aika.<span style="color: #660066;">getSeconds</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>tunti<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #CC0000;">12</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#123;</span>
      tunti <span style="color: #339933;">-=</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   secondAngle <span style="color: #339933;">=</span> <span style="color: #CC0000;">360</span><span style="color: #339933;">*</span>sekunti<span style="color: #339933;">/</span><span style="color: #CC0000;">60</span><span style="color: #339933;">;</span>
   minuteAngle <span style="color: #339933;">=</span> <span style="color: #CC0000;">360</span><span style="color: #339933;">*</span>minuutti<span style="color: #339933;">/</span><span style="color: #CC0000;">60</span><span style="color: #339933;">;</span>
   hourAngle <span style="color: #339933;">=</span> <span style="color: #CC0000;">360</span><span style="color: #339933;">*</span>tunti<span style="color: #339933;">/</span><span style="color: #CC0000;">12</span> <span style="color: #339933;">+</span> minuteAngle<span style="color: #339933;">/</span><span style="color: #CC0000;">12</span><span style="color: #339933;">;</span>
&nbsp;
   sek._rotation <span style="color: #339933;">=</span> secondAngle<span style="color: #339933;">;</span>
   minute._rotation <span style="color: #339933;">=</span> minuteAngle<span style="color: #339933;">;</span>
   hour._rotation <span style="color: #339933;">=</span> hourAngle<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Tee stagelle kellon tausta.</p>
<p><img title="Analoginen kello" src="http://www.timovirtanen.com/tutofiles/analogClock/analogClock.jpg" alt="Analoginen kello" /><br />
SekÃ¤ kellon viisarit. (sekuntiviisari, minuuttiviisari ja tuntiviisari)<br />
<img title="Kellon viisarit" src="http://www.timovirtanen.com/tutofiles/analogClock/viisarit.jpg" alt="Kellon viisarit" /><br />
Tee jokaisesta viisarista oma movieClippi ja anna niille esiintymÃ¤nimet &#8220;<em>sek</em>&#8220;, &#8220;<em>minute</em>&#8221; ja &#8220;<em>hour</em>&#8220;. <strong>HUOM!</strong> Huomaa, ettÃ¤ movieClipin rekisteripisteen tÃ¤ytyy olla viisarin alaossa, ja ettÃ¤ jokaisen viisarin pitÃ¤Ã¤ olla pystyasennossa. Ã„lÃ¤ kuitenkaan pyÃ¶ritÃ¤ itse movieClippiÃ¤, koska muuten kellosi ei toimi oikein.</p>
<p>SiirrÃ¤ viisarit kellon keskelle siten, ettÃ¤ jokaisen viisarin rekisteripiste on tÃ¤smÃ¤lleen kellon keskiosassa.<br />
<img title="Analoginen kello" src="http://www.timovirtanen.com/tutofiles/analogClock/analogClock2.jpg" alt="Analoginen kello" /><br />
SiinÃ¤ se.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.timovirtanen.com/2005/12/02/flash-kello/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

