<?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>xDee &#187; Flash Tutorials</title>
	<atom:link href="http://xdee.net/category/tutorials/flashtutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://xdee.net</link>
	<description>Photoshop, Flash and other GFX Stuff...</description>
	<lastBuildDate>Fri, 23 Apr 2010 11:44:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flash FLV Stream Player &#8211; Flash Tutorial</title>
		<link>http://xdee.net/2009/05/17/flash-flv-stream-player-flash-tutorial/</link>
		<comments>http://xdee.net/2009/05/17/flash-flv-stream-player-flash-tutorial/#comments</comments>
		<pubDate>Sun, 17 May 2009 11:38:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tutorials]]></category>
		<category><![CDATA[Flash Tutorial]]></category>
		<category><![CDATA[FLV Player]]></category>
		<category><![CDATA[netConnection]]></category>
		<category><![CDATA[netStream]]></category>
		<category><![CDATA[setBufferTime]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[Video Player]]></category>

		<guid isPermaLink="false">http://xdee.net/?p=383</guid>
		<description><![CDATA[Es wird wieder einmal Zeit für ein Flash Tutorial. Dieses mal wollen wir uns mit den immer populärer werdenden Flash Stream Playern beschäftigen. Wir werden einen kleinen sehr simpel gehaltenen FLV Player programmieren, der die FLV Datei von einem anderen Server streamt.
Voraussetzungen:

Umgehen mit den Flash Werkzeugen

Lernziele:

Verwenden der NetStream Klasse
Anzeigen von Variablen in Textfeldern


Hier eine Vorschau [...]]]></description>
			<content:encoded><![CDATA[<p>Es wird wieder einmal Zeit für ein Flash Tutorial. Dieses mal wollen wir uns mit den immer populärer werdenden Flash Stream Playern beschäftigen. Wir werden einen kleinen sehr simpel gehaltenen FLV Player programmieren, der die FLV Datei von einem anderen Server streamt.</p>
<p><strong>Voraussetzungen:</strong></p>
<ul>
<li>Umgehen mit den Flash Werkzeugen</li>
</ul>
<p><strong>Lernziele:</strong></p>
<ul>
<li>Verwenden der NetStream Klasse</li>
<li>Anzeigen von Variablen in Textfeldern</li>
</ul>
<p><span id="more-383"></span></p>
<p>Hier eine Vorschau von dem, was wir erstellen werden:</p>
<p><object width="450" height="327" data="http://xdee.net/wp-content/uploads/2009/05/flv-yeah1.swf" type="application/x-shockwave-flash"><param name="src" value="http://xdee.net/wp-content/uploads/2009/05/flv-yeah1.swf" /></object></p>
<p>Ausnahmsweise steht hier einmal der Inhalt und nicht das Design im Vordergrund. Der Player ist sehr einfach aufgebaut. Er lädt ein FLV File von www.mediacollege.com (Copyright by Mediacollege.com) und spielt es dann ab. Dazu kommen ein paar einfache Steuerbuttons und einige Textfelder mit Informationen über das FLV-File.</p>
<p>Als erstes benötigen wir ein neues Video Objekt. Dazu müsst ihr die Bibliothek öffnen [<em>Ctrl+L</em>] oder über Fenster -&gt; Bibliothek. Dann klickt ihr dort rechts in das weisse Feld und ihm Kontextmenü wählt ihr darauf &#8220;Neues Video&#8221; aus.</p>
<p>In dem Menü gebt ihr nun einen Namen ein (dieser Spielt für die spätere Benutzung keine Rolle) und achtet darauf, dass &#8220;Video von Actionscript gesteuert) angewählt ist.</p>
<p><a href="http://xdee.net/wp-content/uploads/2009/05/1.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-385" title="1" src="http://xdee.net/wp-content/uploads/2009/05/1-300x145.jpg" alt="1" width="300" height="145" /></a><br />
Nun zieht ihr das Objekt von der Biliothek auf die Bühne und gebt ihm den Instanznamen &#8220;<em>my_video</em>&#8220;. Mit dem &#8220;Frei Transformieren&#8221; Werkzeug [Q] könnt ihr zusätzlich noch die Grösse ändern.</p>
<p>Nun erstellt ihr folgende 6 Elemente auf der Bühne:</p>
<ul>
<li>dynamisches Textfeld mit der Variable &#8220;<em>loaded&#8221;</em></li>
<li>dynamisches Textfeld mit der Variable &#8220;<em>fps</em>&#8220;</li>
<li>dynamisches Textfeld mit der Variable &#8220;<em>time</em>&#8220;</li>
<li>Play Button mit dem Instanznamen &#8220;<em>play_btn</em>&#8220;</li>
<li>Pause Button mit dem Instanznamen &#8220;<em>pause_btn</em>&#8220;</li>
<li>Stop Button mit dem Instanznamen &#8220;<em>stop_btn</em>&#8220;</li>
</ul>
<p><a href="http://xdee.net/wp-content/uploads/2009/05/2.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-388" title="2" src="http://xdee.net/wp-content/uploads/2009/05/2-300x69.jpg" alt="2" width="300" height="69" /><br />
</a>Schlussendlich kommt noch der Actionscript Code:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px;height:300px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> connection = <span class="kw2">new</span> <span class="kw3">NetConnection</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
connection.<span class="kw3">connect</span><span class="br0">&#40;</span><span class="kw2">null</span><span class="br0">&#41;</span>;<br />
<span class="kw2">var</span> stream = <span class="kw2">new</span> <span class="kw3">NetStream</span><span class="br0">&#40;</span>connection<span class="br0">&#41;</span>;<br />
my_video.<span class="kw3">attachVideo</span><span class="br0">&#40;</span>stream<span class="br0">&#41;</span>;<br />
stream.<span class="kw3">setBufferTime</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span>;<br />
<br />
<span class="kw3">url</span> = <span class="st0">&quot;http://www.mediacollege.com/video-gallery/testclips/20051210-w50s.flv&quot;</span>;<br />
stream.<span class="kw3">play</span><span class="br0">&#40;</span><span class="kw3">url</span><span class="br0">&#41;</span>;<br />
is_paused = <span class="kw2">false</span>;<br />
<br />
<span class="kw3">_root</span>.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
kbTotal = <span class="kw3">Math</span>.<span class="kw3">round</span><span class="br0">&#40;</span>stream.<span class="kw3">bytesTotal</span> <span class="sy0">*</span> <span class="nu0">0.0009765625</span><span class="br0">&#41;</span>;<br />
kbLoaded = <span class="kw3">Math</span>.<span class="kw3">round</span><span class="br0">&#40;</span>stream.<span class="kw3">bytesLoaded</span> <span class="sy0">*</span> <span class="nu0">0.0009765625</span><span class="br0">&#41;</span>;<br />
<span class="kw3">loaded</span> = kbLoaded + <span class="st0">&quot; KB of &quot;</span> + kbTotal + <span class="st0">&quot; KB&quot;</span>;<br />
<span class="kw3">fps</span> = <span class="kw3">Math</span>.<span class="kw3">round</span><span class="br0">&#40;</span>stream.<span class="kw3">currentFps</span><span class="br0">&#41;</span> + <span class="st0">&quot; FPS&quot;</span>;<br />
<span class="kw3">time</span> = <span class="kw3">Math</span>.<span class="kw3">round</span><span class="br0">&#40;</span>stream.<span class="kw3">time</span><span class="br0">&#41;</span> + <span class="st0">&quot; sec&quot;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw3">_root</span>.<span class="me1">play_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>is_paused<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
stream.<span class="kw3">pause</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
is_paused = <span class="kw2">false</span>;<br />
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
stream.<span class="kw3">play</span><span class="br0">&#40;</span><span class="kw3">url</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw3">_root</span>.<span class="me1">pause_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span>is_paused<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
stream.<span class="kw3">pause</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
is_paused = <span class="kw2">true</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw3">_root</span>.<span class="me1">stop_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
stream.<span class="kw3">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Nun die Erklärung dazu Schritt für Schritt:</p>
<p>Mit &#8220;<em>var connection = new NetConnection()&#8221;</em> erstellen wir eine neues NetConnection Objekt. Dieses soll dann erst einmal eine Verbindung aufbauen mit &#8220;<em>connection.connect(null)&#8221;. </em> Danach erstellen wir ein Stream Objekt dazu: &#8220;<em>var stream = new NetStream(connection)</em>&#8220;. Nun weisen wir unserem Video Objekt auf der Bühne den Stream zu : &#8220;<em>my_video.attachVideo(stream)&#8221;</em>. Schlussendlich bestimmen wir noch vieviel in den Zwischenspeicher geladen werden soll, in diesem Fall sind das 5 Sekunden, das heisst erst wenn 5 Sekunden des Videos geladen sind, fängt Flash an das Video abzuspielen. Bei grossen Videos empfiehlt es sich, hier einen grösseren Wert zu nehmen.</p>
<p>Nun bestimmen wir mit &#8220;<em>url = &#8220;http://www.mediacollege.com/video-gallery/testclips/20051210-w50s.flv&#8221;</em>&#8221; von wo das FLV File geladen werden soll. Jetzt können wir es mit &#8220;<em>stream.play(url)&#8221;</em> abspielen lassen.</p>
<p>Für die Play/Pause Buttons brauchen wir später noch die Variable &#8220;<em>is_paused&#8221;</em> die wir jetzt erst einmal auf &#8220;<em>false&#8221; </em>setzen: &#8221; is_paused = false&#8221;.</p>
<p>Den wichtigen Teil haben wir jetzt, das Video wird geladen und abgespielt. Der Benutzer sollte jedoch auch noch einige Informationen über das Video erhalten und es pausieren können.</p>
<p>Die Informationen müssen wir während des Abspielens auslesen darum rufen wir sie auch in einer &#8220;<em>onEnterFrame</em>&#8221; Prozedur ab.</p>
<p><em>&#8220;kbTotal = Math.round(stream.bytesTotal * 0.0009765625)&#8221;</em> liest aus wieviele Bytes das Video total umfasst. Wir multiplizieren es mit 0.0009765625 damit wir aus den Bytes, Kilobytes erhalten. Schlussendlich runden wir es mit &#8220;<em>Math.round()&#8221;</em> noch auf eine Ganzzahl.</p>
<p>Genau gleich gehen wir mit  &#8221;<em>kbLoaded = Math.round(stream.bytesLoaded * 0.0009765625)</em>&#8221; vor, nur dass wir hier die Anzahl der geladenen Kilobytes bestimmen.</p>
<p>Jetzt weisen wir der Variable &#8220;<em>loaded</em>&#8221; die vorher ausgelesenen Werte zu: &#8220;<em>loaded = kbLoaded + &#8221; KB of &#8221; + kbTotal + &#8221; KB&#8221;</em>&#8220;.<br />
Zur Erinnerung: Die Variable <em>&#8220;loaded&#8221;</em> wir in einem Textfeld ausgegeben!</p>
<p>Nun lesen wir mit  &#8221;<em>fps = Math.round(stream.currentFps) + &#8221; FPS&#8221;"</em> die Anzahl der Frames pro Sekunde aus. Wieder wird der Wert auf eine Ganzzahl gerundet. Auch die Variable &#8220;<em>fps&#8221;</em> wir in einem unserer Textfelder ausgegeben.</p>
<p>Schlussendlich wollen wir noch wissen, wieviele Sekunden schon abgespielt wurden, dazu lesen wir mit folgendem Code die Zeit aus und weisen sie der Variable &#8220;<em>time&#8221; </em>zu: &#8220;<em>time = Math.round(stream.time) + &#8221; sec&#8221;</em>&#8220;.</p>
<p>Nun kommen noch die Buttons. Wichtig dabei sind eigentlich nur folgende drei Befehle:</p>
<ul>
<li><em>stream.play(url)</em> &#8211; lädt das Video nochmal und spielt es von vorne ab.</li>
<li><em>stream.pause() </em> &#8211; pausiert das Video b.z.w spielt es wieder ab.</li>
<li><em>stream.close() -</em> schliesst den Stream, sodass das Video anschliessen wieder neu geladen werden muss.</li>
</ul>
<p>Wichtig ist auch noch, dass beim Play Button, je nachdem welchen Wert die Variable &#8220;<em>is_paused&#8221; </em>hat, entweder das Video neu lädt oder wieder abspielt.</p>
<p>Nun sind wir auch schon fertig mit unserem simplen FLV Player. Experimentiert ein bisschen damit herum, wie wäre es zum Beispiel wenn der User selbst eine URL eingeben könnte und dann würde der FLV Player das Video laden?</p>
<p>Fragen und Kritik einfach in die Comments.<br />
MFG</p>
<p>Michael</p>

]]></content:encoded>
			<wfw:commentRss>http://xdee.net/2009/05/17/flash-flv-stream-player-flash-tutorial/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dynamischer MP3 Player in Flash &#8211; Tutorial</title>
		<link>http://xdee.net/2009/02/15/dynamischer-mp3-player-in-flash-tutorial/</link>
		<comments>http://xdee.net/2009/02/15/dynamischer-mp3-player-in-flash-tutorial/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 15:59:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tutorials]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[MP3 Player]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[xDee]]></category>

		<guid isPermaLink="false">http://xdee.net/?p=220</guid>
		<description><![CDATA[
Heute wollen wir einen dynamischen MP3 Player in Flash programmieren. Mit dynamisch ist gemeint, dass er nicht nur einfach ein spezifisches Lied abspielen kann, sondern das Lied dynamisch per Parameter übergeben wird.
Vorkentnisse: 

Umgang mit Flash
Erstellen von Buttons
etwas HTML

Ziele:

Parameter an Flash übergeben
Arbeiten mit Sound
ID3 Tags auslesen

Hier die Vorschau unseres Endergebnisses:

Der Player lädt eine Datei mit dem [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://xdee.net/wp-content/uploads/2009/02/header1.jpg" rel="lightbox"><img class="aligncenter size-full wp-image-235" title="header1" src="http://xdee.net/wp-content/uploads/2009/02/header1.jpg" alt="" width="300" height="100" /></a></p>
<p>Heute wollen wir einen dynamischen MP3 Player in Flash programmieren. Mit dynamisch ist gemeint, dass er nicht nur einfach ein spezifisches Lied abspielen kann, sondern das Lied dynamisch per Parameter übergeben wird.</p>
<p><strong>Vorkentnisse: </strong></p>
<ul>
<li>Umgang mit Flash</li>
<li>Erstellen von Buttons</li>
<li>etwas HTML</li>
</ul>
<p><strong>Ziele:</strong></p>
<ul>
<li>Parameter an Flash übergeben</li>
<li>Arbeiten mit Sound</li>
<li>ID3 Tags auslesen</li>
</ul>
<p>Hier die Vorschau unseres Endergebnisses:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="21" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="simple_mp3" /><param name="align" value="middle" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://xdee.net/wp-content/uploads/2009/02/simple_mp3.swf?my_song=http://www.xdee.net/work/song3.mp3" /><embed id="simple_mp3" type="application/x-shockwave-flash" width="300" height="21" src="http://xdee.net/wp-content/uploads/2009/02/simple_mp3.swf?my_song=http://www.xdee.net/work/song3.mp3" bgcolor="#ffffff" quality="high" allowfullscreen="false" allowscriptaccess="sameDomain" align="middle"></embed></object></p>
<p>Der Player lädt eine Datei mit dem Namen &#8220;song3.mp3&#8243; die ihm dynamisch übergeben wird. Dabei liest er die ID3 Tags und zeigt diese dann an.</p>
<p><span id="more-220"></span></p>
<p>Bevor mit dem eigentlichen Teil anfangen können müssen zuerst ein paar grundlegende Sachen erstellt werden. Wir müssen uns also überlegen was der Player genau &#8220;braucht&#8221;.</p>
<p>In diesem Fall sind das folgende Dinge:</p>
<ul>
<li>einen Play-Button</li>
<li>einen Pause-Button</li>
<li>einen Stop-Button</li>
<li>ein Textfeld indem Name + Artist angezeigt wird</li>
<li>ein Textfeld indem die Länge und die Aktuelle Position des Lieds angezeigt wird</li>
</ul>
<p>Öffnet ein neues Flash Dokument, mit der Grösse euers Players (in meinem Fall 301&#215;21px) und erstellt danach folgende Dinge im erstenSchlüsselbild:</p>
<ul>
<li>Play-Button: play_btn</li>
<li>Stop-Button:<em> stop_btn</em></li>
<li>Pause-Button: <em>pause_btn</em></li>
<li>Artist/Titel-Textfeld: <em>track_title</em></li>
<li>Position/Länge-Textfeld: <em>track_length</em></li>
</ul>
<p>Achtet darauf dass ihr &#8220;<em>Dynamische Textfelder&#8221;</em> erstellt!<br />
So oder ähnlich kann euer Flash Movie nun aussehen:</p>
<p><a href="http://xdee.net/wp-content/uploads/2009/02/player1.jpg" rel="lightbox"><img class="size-full wp-image-221 alignnone" title="player1" src="http://xdee.net/wp-content/uploads/2009/02/player1.jpg" alt="" width="500" height="34" /></a></p>
<p>Natürlich könnt ihr euren Player so designen wie ihr wollt, ich habe mich für ein eher schlichteres Design ohne viel Schnickschnack entschieden.</p>
<p>Nun kommen wir zum Code Teil, fügt folgenden Code in das Hauptframe ein:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">this</span>.<span class="kw3">_lockroot</span> = <span class="kw2">true</span>;<br />
<span class="kw2">var</span> snd = <span class="kw2">new</span> <span class="kw3">Sound</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
snd.<span class="kw3">loadSound</span><span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">my_song</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></td></tr></tbody></table></div>
<p>Mit <em>this._lockroot = true</em> bewirken wir, dass wenn der Flashfilm in einen anderen Flashfilm reingeladen wird, die Variablen die mit &#8220;_root.&#8221; aufgerufen werden immer noch funktionieren. Dies ist zwar nicht 100% nötig, doch zur Sicherheit sollte man dies einfügen.</p>
<p><em>var snd = new Sound() </em>erzeugt ein neues Sound Objekt in welches wir dann mit <em>snd.loadSound(_root.my_song, true) </em>einen Sound laden. Der erste Parameter ist die Variable &#8220;<em>_root.my_song</em>&#8221; doch halt, die Varible exisitert ja gar nicht! Dies kommt davon, dass diese Varible erst später beim Einbinden des Flashfilms übergeben wird. Mit dem zweiten Parameter bestimmen wir ob der Sound gestreamt werden soll oder nicht. In unserem Fall soll er gestreamt werden also geben wir &#8220;<em>true</em>&#8221; ein.</p>
<p>Nun kommen wir zu der Programmierung der Buttons:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">_root</span>.<span class="me1">play_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">pos</span> <span class="sy0">!</span>= <span class="kw3">undefined</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">start</span><span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">pos</span> <span class="sy0">/</span> <span class="nu0">1000</span>,<span class="nu0">0</span><span class="br0">&#41;</span><br />
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">start</span><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw3">this</span>.<span class="me1">pause_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">pos</span> = <span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">position</span><br />
<span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw3">this</span>.<span class="me1">stop_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">pos</span> = <span class="nu0">0</span>;<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Eigentlich ist dieser Code ganz simpel, wenn ein Button losgelassen wird, wird der Sound entweder abgespielt oder gestoppt. Bei dem Play-Button fügen wir zusätzlich noch eine if Abfrage ein die kontrolliert ob die Variable <em>_root.pos</em> exisitert. Dies benötigen wir für die Pause-Funktion. Wenn der Pause Button losgelassen wird, wird der Sound gestoppt und die aktuelle Position im Sound gespeichert. Dies lesen wir beim Abspielen wieder aus, darum auch die if Abfrage. <em>_root.snd.start(_root.pos / 1000,0) </em>springt also zu der Stelle die wir beim Pause-Drücken gespeichert haben und spielt dann den Sound ab. Der Wert wird aber vorher noch durch 1000 geteilt, da der Wert in Millisekunden gespeichert wurde, man für die <em>start()</em> Funktion aber Sekunden braucht. Die <em>&#8220;0&#8243;</em> steht übrigens dafür wie oft der Sound wiederholt werden soll, in unserem Fall gar nicht, also 0.<br />
Speziell beim Stop Button ist noch, dass die Position auf 0 gesetzt wird, damit das Lied auch ja wieder von vorne gestartet wird.</p>
<p>Eine nützliche Funktion von Flash ist, dass man ID3 Tags auslesen kann. Genau diese Funktion werden wir uns nun zu nutzen machen.</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">onID3</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
songname = <span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">id3</span>.<span class="me1">songname</span><br />
artist = <span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">id3</span>.<span class="me1">artist</span><br />
<span class="kw3">_root</span>.<span class="me1">laenge</span> =<span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">duration</span><br />
<span class="kw3">_root</span>.<span class="me1">Secs</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge</span> <span class="sy0">/</span> <span class="nu0">1000</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Mins</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge</span> <span class="sy0">/</span> <span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Hours</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge</span> <span class="sy0">/</span> <span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Secs</span> = <span class="kw3">_root</span>.<span class="me1">Secs</span> - <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">Mins</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><br />
<span class="kw3">_root</span>.<span class="me1">Mins</span> = <span class="kw3">_root</span>.<span class="me1">Mins</span> - <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">Hours</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><br />
<span class="kw3">_root</span>.<span class="me1">track_title</span>.<span class="kw3">text</span> = artist + <span class="st0">&quot; - &quot;</span> + songname<br />
<span class="kw3">_root</span>.<span class="me1">track_length</span>.<span class="kw3">text</span> = <span class="kw3">_root</span>.<span class="me1">Mins2</span> + <span class="st0">&quot;:&quot;</span> + <span class="kw3">_root</span>.<span class="me1">Secs2</span> + <span class="st0">&quot; / &quot;</span> + <span class="kw3">_root</span>.<span class="me1">Mins</span> + <span class="st0">&quot;:&quot;</span> + <span class="kw3">_root</span>.<span class="me1">Secs</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Es sieht wieder einmal komplizierter aus, als es eigentlich ist. Die &#8220;<em>_root.snd.onID</em><em>3</em>&#8221; Funktion wird dann aufgerufen, wenn die ID3 Tags für ein Lied ausgelesen werden können, dazu muss das Lied zu einem bestimmten Teil geladen sein, die ID3 Tags werden also nicht gleich am Anfang angezeigt werden.<br />
Zuerst speichern wir nun den Songname und den Artist in zwei verschiedenen Variablen. Zusätzlich könnte man noch viele Dinge mehr auslesen wie zum Beispiel: Genre, Album, Erscheinungsjahr etc. doch da ich den Player möglichst klein halten will, lassen wir das.</p>
<p>Nun kommen einige Berechnungen. Mit  &#8221;<em>_root.snd.duration</em>&#8221; wir die Länge des Liedes in Millisekunden ausgegeben. Nachfolgend werden die Millisekunden dann umgerechnet so dass wir sie ganz einfach darstellen können. Schlussendlich werden die Informationen mit &#8220;<em>_root.track_title.text = artist + &#8221; &#8211; &#8221; + songname</em>&#8221; und &#8220;<em>_root.track_length.text = _root.Mins2 + &#8220;:&#8221; + _root.Secs2 + &#8221; / &#8221; + _root.Mins + &#8220;:</em>&#8221; + _root.Secs&#8221; in den Textfeldern angezeigt. Wie ihr seht werden da die Variablen &#8220;<em>_root.Mins2</em>&#8221; und &#8220;<em>_root.Secs2</em>&#8221; verwendet, diese Variablen haben wir aber noch nicht definiert, sie sollen die aktuelle Position des Liedes anzeigen.</p>
<p>Und hier kommt auch schon der Code dazu:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">_root</span>.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">laenge2</span> = <span class="kw3">_root</span>.<span class="me1">snd</span>.<span class="kw3">position</span><br />
<span class="kw3">_root</span>.<span class="me1">Secs2</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge2</span> <span class="sy0">/</span> <span class="nu0">1000</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Mins2</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge2</span> <span class="sy0">/</span> <span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Hours2</span> = <span class="kw3">Math</span>.<span class="kw3">floor</span> <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">laenge2</span> <span class="sy0">/</span> <span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw3">_root</span>.<span class="me1">Secs2</span> = <span class="kw3">_root</span>.<span class="me1">Secs2</span> - <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">Mins2</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><br />
<span class="kw3">_root</span>.<span class="me1">Mins2</span> = <span class="kw3">_root</span>.<span class="me1">Mins2</span> - <span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">Hours2</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">&#41;</span><br />
<span class="kw3">_root</span>.<span class="me1">track_length</span>.<span class="kw3">text</span> = <span class="kw3">_root</span>.<span class="me1">Mins2</span> + <span class="st0">&quot;:&quot;</span> + <span class="kw3">_root</span>.<span class="me1">Secs2</span> + <span class="st0">&quot; / &quot;</span> + <span class="kw3">_root</span>.<span class="me1">Mins</span> + <span class="st0">&quot;:&quot;</span> + <span class="kw3">_root</span>.<span class="me1">Secs</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Eigentlich ist das so ziemlich das selbe wie schon oben, nur eben mit der Aktuelle Position die wir mit &#8220;<em>_root.snd.position</em>&#8221; abfragen können. Danach wird das ganze wieder umgewandelt und schlussendlich in dem Textfeld angezeigt. Der Hauptunterschied besteht dabei, dass das ganze in der &#8220;<em>onEnterFrame</em>&#8221; Funktion steht und so also immer ausgeführt wird, da sich die Position beim Abspielen auch fortlaufend ändert.</p>
<p>So, der Player ist fertig, doch ihr werdet feststellen, dass wenn ihr ihn testet, nichts passiert und nur eine Fehlermeldung ausgegeben wird, in der steht, dass die Datei nicht geladen werden konnte. Das kommt davon, dass der Player noch nicht weiss welchen Song er laden soll, da er die Variable &#8220;<em>_root.my_song</em>&#8221; noch nicht übermittelt bekommen hat.</p>
<p>Dies passiert beim einbinden, öffnet nun ein leeres HTML Dokument und fügt folgenden Code ein:</p>
<p><span style="color: #ff0000;"><em>&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221; xml:lang=&#8221;de&#8221; lang=&#8221;de&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;title&gt;simple_mp3&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body bgcolor=&#8221;#ffffff&#8221;&gt;<br />
&lt;object classid=&#8221;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&#8243; codebase=&#8221;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0&#8243; width=&#8221;300&#8243; height=&#8221;21&#8243; id=&#8221;simple_mp3&#8243; align=&#8221;middle&#8221;&gt;<br />
&lt;param name=&#8221;allowScriptAccess&#8221; value=&#8221;sameDomain&#8221; /&gt;<br />
&lt;param name=&#8221;allowFullScreen&#8221; value=&#8221;false&#8221; /&gt;<br />
&lt;param name=&#8221;movie&#8221; value=&#8221;simple_mp3.swf?my_song=song1.mp3&#8243; /&gt;<br />
&lt;param name=&#8221;quality&#8221; value=&#8221;high&#8221; /&gt;&lt;param name=&#8221;bgcolor&#8221; value=&#8221;#ffffff&#8221; /&gt;<br />
&lt;embed src=&#8221;simple_mp3.swf?my_song=song1.mp3&#8243; quality=&#8221;high&#8221; bgcolor=&#8221;#ffffff&#8221; width=&#8221;300&#8243; height=&#8221;20&#8243; name=&#8221;simple_mp3&#8243; align=&#8221;middle&#8221; allowScriptAccess=&#8221;sameDomain&#8221; allowFullScreen=&#8221;false&#8221; type=&#8221;application/x-shockwave-flash&#8221; pluginspage=&#8221;http://www.macromedia.com/go/getflashplayer&#8221;  /&gt;<br />
&lt;/object&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</em></span></p>
<p>Wichtig ist hierbei nur diese beiden Teile: &#8220;<em>&lt;param name=&#8221;movie&#8221; value=&#8221;simple_mp3.swf?my_song=song1.mp3&#8243; /&gt;</em>&#8221; und &#8220;<em>embed src=&#8221;simple_mp3.swf?my_song=song1.mp3&#8243;</em>&#8221; denn hier wird unsere Variable übermittelt. Nach dem Fragezeichen kommt zuerst der Name der Variable, in unserem Falle &#8220;<em>my_song</em>&#8221; und anschliessend den Wert. Hier wird dem Player gesagt er soll eine Datei mit dem Namen &#8220;<em>song1.mp3</em>&#8221; laden. Natürlich kann der Player jede erdenklicke MP3 Datei abspielen, auch wenn sie auf einem externen Webserver liegt.</p>
<p>Probiert das ganze nun aus, indem ihr die HTML Datei in eurem Wunschbrowser öffnet. Nun sollte der Song abgespielt werden, wenn nicht überprüft ob der Song auch wirklich zu finden ist und ob ihr den richtigen Pfad angegeben habt.</p>
<p><a href="http://xdee.net/wp-content/uploads/2009/02/simple_mp3.rar">Download Source</a></p>
<p>Vielen Dank fürs Lesen postet euere Meinung/Kritk/Fragen doch in den Comments</p>
<p>MFG<br />
Michael</p>

]]></content:encoded>
			<wfw:commentRss>http://xdee.net/2009/02/15/dynamischer-mp3-player-in-flash-tutorial/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Richtung Maus bewegen &#8211; Flash Tutorial</title>
		<link>http://xdee.net/2009/01/13/richtung-maus-bewegen-flash-tutorial/</link>
		<comments>http://xdee.net/2009/01/13/richtung-maus-bewegen-flash-tutorial/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 13:41:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tutorials]]></category>
		<category><![CDATA[attachMovie]]></category>
		<category><![CDATA[Bewegen]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Tutorial]]></category>
		<category><![CDATA[Maus]]></category>
		<category><![CDATA[xDee]]></category>

		<guid isPermaLink="false">http://xdee.net/?p=144</guid>
		<description><![CDATA[
Oft möchte man in Spielen gern, dass sich der Spieler dorthin bewegt wo es ihm die Maus &#8220;befiehlt&#8221;. In diesem Tutorial werde ich euch zeigen, wie einfach das eigentlich ist und wie ihr es dann verwenden könnt.
Als erstes erstellen wir 2 Movieclips:

Einen Spieler Movieclip mit dem Instanznamen:player_mc
Ein &#8220;Ziel&#8221; Movieclip mit dem Instanznamen: ziel_mc

Wichtig ist, dass [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://xdee.net/wp-content/uploads/2009/01/header.jpg" rel="lightbox"><img class="size-full wp-image-155  aligncenter" title="header" src="http://xdee.net/wp-content/uploads/2009/01/header.jpg" alt="" width="300" height="100" /></a></p>
<p>Oft möchte man in Spielen gern, dass sich der Spieler dorthin bewegt wo es ihm die Maus &#8220;befiehlt&#8221;. In diesem Tutorial werde ich euch zeigen, wie einfach das eigentlich ist und wie ihr es dann verwenden könnt.</p>
<p><span id="more-144"></span>Als erstes erstellen wir 2 Movieclips:</p>
<ul>
<li>Einen Spieler Movieclip mit dem Instanznamen:<em><strong>player_mc</strong></em></li>
<li>Ein &#8220;Ziel&#8221; Movieclip mit dem Instanznamen: <em><strong>ziel_mc</strong></em></li>
</ul>
<p>Wichtig ist, dass sich der <em>ziel_mc </em>Movieclip vorerst nur in der Bibliothek befindet. Öffnet nun die Bibliothek und rechtsklickt dann auf den <em>ziel_mc</em>. Wählt dann im erscheinenden Kontextmenü &#8220;<em>Verknüpfung&#8230;</em>&#8221; aus. Gebt nun im erscheinenden Fenster bei Bezeichner &#8220;<em>ziel&#8221; </em>ein. Denkt daran bei &#8220;Export für Actionscript&#8221; ein Häkchen zu setzen.</p>
<p style="text-align: center;"><a href="http://xdee.net/wp-content/uploads/2009/01/13.jpg" rel="lightbox"><img class="size-medium wp-image-146  aligncenter" title="13" src="http://xdee.net/wp-content/uploads/2009/01/13-300x141.jpg" alt="" width="300" height="141" /></a></p>
<p>Kopiert nun folgenden Code in euer Hauptframe:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> speed &nbsp; &nbsp;= <span class="nu0">5</span>;<br />
<span class="kw3">onMouseDown</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">attachMovie</span><span class="br0">&#40;</span><span class="st0">&quot;ziel&quot;</span>, <span class="st0">&quot;ziel&quot;</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;<br />
ziel.<span class="kw3">_x</span> = <span class="kw3">_xmouse</span>;<br />
ziel.<span class="kw3">_y</span> = <span class="kw3">_ymouse</span>;<br />
bewegen = <span class="kw2">true</span>;<br />
<span class="br0">&#125;</span>player_mc.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="kw2">var</span> a = <span class="kw3">this</span>.<span class="kw3">_x</span> - ziel.<span class="kw3">_x</span>;<br />
<span class="kw2">var</span> b = <span class="kw3">this</span>.<span class="kw3">_y</span> - ziel.<span class="kw3">_y</span>;if<span class="br0">&#40;</span>bewegen<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">this</span>.<span class="kw3">_rotation</span> = <span class="kw3">Math</span>.<span class="kw3">atan2</span><span class="br0">&#40;</span>a, b<span class="br0">&#41;</span> <span class="sy0">/</span> <span class="kw3">Math</span>.<span class="kw3">PI</span> <span class="sy0">*</span> -<span class="nu0">180</span>;<br />
<span class="kw3">this</span>.<span class="kw3">_x</span> += &nbsp;speed <span class="sy0">*</span> <span class="kw3">Math</span>.<span class="kw3">sin</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="kw3">_rotation</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw3">Math</span>.<span class="kw3">PI</span> <span class="sy0">/</span> <span class="nu0">180</span><span class="br0">&#41;</span>;<br />
<span class="kw3">this</span>.<span class="kw3">_y</span> += -speed <span class="sy0">*</span> <span class="kw3">Math</span>.<span class="kw3">cos</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="kw3">_rotation</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw3">Math</span>.<span class="kw3">PI</span> <span class="sy0">/</span> <span class="nu0">180</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="kw3">hitTest</span><span class="br0">&#40;</span>ziel<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">removeMovieClip</span><span class="br0">&#40;</span>ziel<span class="br0">&#41;</span>;<br />
bewegen = <span class="kw2">false</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Nun zur Erklärung des Codes:</p>
<p>Zuerst definieren wir mit  <em>var speed    = 5; </em> die Geschwindigkeit, mit der sich der Player zu dem Punkt bewegen soll. Die Funktion <em>onMouseDown </em>wird immer dann aufgerufen, wenn der Spieler irgendwo auf dem Bildschirm mit der Maus klickt. Nun &#8220;holen&#8221; wir uns mit <em>attachMovie</em> unseren Ziel Movieclip aus der Bibliothek. Die Funktion <em>attachMovie</em> braucht dabei mindestens drei Parameter: <em>idName, neuer Name </em>und <em>Tiefe. </em>Mit <em>idName</em> ist der Name gemeint den wir vorher bei der Verknüpfung des <em>ziel_mc</em> Movieclips angegeben haben. Mit <em>neuerName</em> ist logischerweise der neue Name gemeint der dem Objekt zugewiesen werden soll. Schlussendlich können wir mit <em>Tiefe</em> noch angeben, wie &#8220;tief&#8221; der Movieclip ist. In unserem Falle spielt das aber keine Rolle und darum geben wir einfach 0 an.</p>
<p>Nun setzen wir unseren, aus der Bibliothek geholten, Movieclip mit <em>ziel._x = _xmouse </em>und <em>ziel._y = _ymouse </em>noch an die richtige Position, nämlich dort wo sich die Maus gerade befindet.<br />
Schlussendlich sagen wir dem Player mit der Variable <em>bewegen = true</em> noch, dass er sich nun bewegen darf.</p>
<p>Nun kommt der Spielerscript, zuerst wird mit <em>var a = this._x &#8211; ziel._x </em>und <em>var b = this._y &#8211; ziel._y </em>der Abstand zwischen dem Player und dem Zielpunkt berechnet, dann kann es auch schon losgehen. Wenn <em>bewegen = true</em> ist, dreht sich der Spieler Richtung Ziel und läuft los. Die Zeilen:</p>
<p><em>this._rotation = Math.atan2(a, b) / Math.PI * -180<br />
this._x +=  speed * Math.sin((this._rotation) * Math.PI / 180)<br />
this._y += -speed * Math.cos((this._rotation) * Math.PI / 180)</em></p>
<p>sind dabei eigentlich bei dem ganzen Script die wichtigsten. Alles zu erklären würde 1. den Rahmen dieses Tutorial sprengen und 2. tiefer in die Geo-/Trigonometrie eingehen, grob kann man aber sagen, dass mit  <em>Math.atan2(a, b) / Math.PI * -180 </em>der Winkel errechnet wird, in dem sich der Spieler drehen muss, um Richtung Ziel zu sehen. Danach bewegt sich der Spieler darauf zu.</p>
<p>Zum Abschluss muss noch geprüft werden, ob der Spieler das Ziel auch erreicht hat, dies tun wir mit einem einfachen <em>hitTest. </em>Wenn ja, wird das Ziel gelöscht und der Spieler hört auf sich zu bewegen.</p>
<p>Das wars auch schon, testet das Script und wie ihr seht könnt ihr dem Spieler nun sagen wohin er gehen soll. Diese Form von Spielsteuerung kann man sehr gut in Geschicklichkeitsspielen verwenden.</p>
<p style="text-align: center;">
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="327" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="name" value="Zu Maus Bewegen Tutorial" /><param name="src" value="http://xdee.net/wp-content/uploads/2009/01/zu_maus_bewegen_tutorial.swf" /><embed type="application/x-shockwave-flash" width="450" height="327" src="http://xdee.net/wp-content/uploads/2009/01/zu_maus_bewegen_tutorial.swf" name="Zu Maus Bewegen Tutorial" quality="high"></embed></object></p>
<p><a href="http://xdee.net/wp-content/uploads/2009/01/zu_maus_bewegen_tutorial.fla">Download</a> (Source .fla)</p>
<p>Fragen, Kritik oder Wünsche einfach in die Comments schreiben.</p>
<p>Viel Spass beim Lesen</p>
<p>Michael Ziörjen</p>

]]></content:encoded>
			<wfw:commentRss>http://xdee.net/2009/01/13/richtung-maus-bewegen-flash-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flugzeug Spiel &#8211; Teil 2</title>
		<link>http://xdee.net/2009/01/03/flugzeug-spiel-teil-2/</link>
		<comments>http://xdee.net/2009/01/03/flugzeug-spiel-teil-2/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 20:40:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tutorials]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flugzeug Spiel]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://xdee.site90.com/?p=56</guid>
		<description><![CDATA[Herzlich Willkommen zu meinem Flugzeug Spiel Tutorial Teil 2. Wenn ihr es noch nicht getan habt, lest euch doch den 1. Teil durch.
Was unser Spiel bereits beinhaltet:

Flugzeug, welches man von oben nach unten bewegen kann

Und das wär&#8217;s auch schon, nicht gerade viel, aber das werden wir in diesem Teil des Tutorials ändern!

Wir wollen uns um [...]]]></description>
			<content:encoded><![CDATA[<p>Herzlich Willkommen zu meinem Flugzeug Spiel Tutorial Teil 2. Wenn ihr es noch nicht getan habt, lest euch doch den <a href="http://xdee.net/?p=49">1. Teil</a> durch.</p>
<p>Was unser Spiel bereits beinhaltet:</p>
<ul>
<li>Flugzeug, welches man von oben nach unten bewegen kann</li>
</ul>
<p>Und das wär&#8217;s auch schon, nicht gerade viel, aber das werden wir in diesem Teil des Tutorials ändern!</p>
<p><span id="more-56"></span></p>
<p>Wir wollen uns um die Gegner kümmern. Die Gegner sollen immer auf der rechten Seite erscheinen und sich Richtung Spieler bewegen.</p>
<p>Holt euren Gegner Movieclip auf die Bühne und gebt ihm den Instanznamen &#8220;<em>enemy_mc</em>&#8220;. Achtet jedoch darauf, dass er sich ausserhalb des sichtbaren Bereichs der Bühne befindet, warum das wichtig ist, erfahrt ihr später.</p>
<p>Nun können wir auch schon anfangen, kopiert erstmal folgenden Code in das Hauptframe auf der Ebene &#8220;actions&#8221;, dort wo auch schon der Player Code steht.</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px;height:300px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> maxanzGegner = <span class="nu0">10</span>;<br />
<span class="kw2">var</span> anzGegner = <span class="nu0">0</span>;<br />
<span class="kw2">var</span> speedGegner = <span class="nu0">8</span>;var i = <span class="nu0">0</span>;<br />
<span class="kw3">_root</span>.<span class="me1">enemy_mc</span>.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>anzGegner <span class="sy0">&amp;</span>lt; maxanzGegner<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">for</span><span class="br0">&#40;</span>i=<span class="nu0">0</span>;i <span class="sy0">&amp;</span>lt; maxanzGegner; i++<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
enemy = <span class="kw3">this</span>.<span class="kw3">duplicateMovieClip</span><span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">enemy_mc</span>, <span class="kw3">_root</span>.<span class="kw3">getNextHighestDepth</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
enemy.<span class="kw3">_x</span> = <span class="nu0">550</span> + <span class="kw3">random</span><span class="br0">&#40;</span><span class="nu0">500</span><span class="br0">&#41;</span>;<br />
enemy.<span class="kw3">_y</span> = <span class="nu0">30</span> + <span class="kw3">random</span><span class="br0">&#40;</span><span class="nu0">340</span><span class="br0">&#41;</span>;<br />
enemy.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="kw3">this</span>.<span class="kw3">_x</span> -= speedGegner<br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="kw3">_x</span> <span class="sy0">&amp;</span>lt;= -<span class="nu0">20</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="me1">anzGegner</span> = <span class="kw3">_root</span>.<span class="me1">anzGegner</span> - <span class="nu0">1</span>;<br />
<span class="kw3">this</span>.<span class="kw3">removeMovieClip</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
anzGegner = anzGegner + <span class="nu0">1</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<br />
Gehen wir den Code wieder schrittweise durch.</div></td></tr></tbody></table></div>
<p><em>var maxanzGegner = 3;</em> &#8212; Die Anzahl der Gegner die auf einmal erscheinen sollen.<br />
<em>var anzGegner = 0; &#8212; </em>Die Anzahl der Gegner die momentan auf dem Bildschirm sind ( Am Anfang immer = 0)<br />
<em>var speedGegner = 8: </em>&#8211; Gibt an wie schnell sich die Gegner bewegen.<br />
<em> var i = 0;</em> &#8212; Eine Zählvariable, diese brauchen wir später für unsere Schlaufe.</p>
<p><em>if(anzGegner &lt; maxanzGegner) { &#8211;</em> Wenn die Anzahl der Gegner auf dem Bildschirm kleiner ist als die Anzahl der Gegner die maximal da sein dürfen&#8230;<br />
<em>for(i=0;i &lt; maxanzGegner; i++) { &#8212; </em>Dies ist unsere Schlaufe, sobald <em>i = 0</em> ist und <em>i </em>kleiner wie die<em> maxanzGegner </em>ist, Wird <em>i </em>um 1 erhöht und der Code in der Schlaufe ausgeführt.</p>
<p><em>enemy = this.duplicateMovieClip(_root.enemy_mc, _root.getNextHighestDepth()); </em>&#8211; Dieser Teil ist interessant, es wird ein neues Objekt mit dem Namen &#8220;<em>enemy&#8221;</em> erstellt. Dabei wird einfach unser <em>enemy_mc. </em>Die Funktion <em>_root.getNextHighestDepth() </em>gibt uns einen immer fortlaufenden Wert, weiter darauf eingehen möchte ich nicht, es MUSS einfach da sein.</p>
<p><em>enemy._x = 550 + random(500); &#8212; </em>Nun bestimmen wir die X-Position, doch warum ist der Wert grösser als die Bühne selbst? Ganz einfach, wir wollen jah nicht, dass der Spieler sieht wie die Gegner  plötzlich erscheinen, sie sollen schön von Rechts her &#8220;herein schweben&#8221;. Mit <em>random(500) </em>generieren wir eine Zufällige Zahl zwischen 0 und 500.<em><br />
enemy._y = 30 + random(340); &#8212; </em>Das  Ganze  jetzt auch für die  Y-Position.</p>
<p><em>enemy.onEnterFrame = function () { </em>&#8211; Die Funktion kennen wir ja schon, nun wird diese für unser enemy Objekt angewendet.</p>
<p><em>this._x -= speedGegner; &#8212; </em>Dies bewirkt, dass sich der Gegner nach rechts bewegt und zwar genau so schnell wie in der Variable <em>speedGegner </em>festgelegt.</p>
<p><em>if(this._x &lt;= -20) { &#8212; </em>Sobald der Gegner links  aus der Bühne rausgeht,<br />
<em>_root.anzGegner = _root.anzGegner &#8211; 1; &#8211;</em> wird die Anzahl der Gegner um 1 verringert<br />
<em>this.removeMovieClip()</em> &#8212; und der Gegner gelöscht.</p>
<p>Schlussendlich wird mit <em>anzGegner = anzGegner + 1; </em>die Gegnerzahl um 1 erhöht, da unser Gegner ja gerade erstellt wurde und somit ein Gegner mehr auf der Bühne ist.</p>
<p>Testet euer Spiel nun und wenn alles richtig ist, sollten nun einige Gegner erscheinen und sich nach links bewegen und sobald sie den Bildschirm verlassen haben, wieder erscheinen.</p>
<p>Das ist alles schön und gut, doch irgendwie ist es doch langweilig wenn die Gegner einfach nur so rumfliegen. Damit unser Spieler ihnen auch ausweichen muss, müssen wir eine Art Lebensanzeige machen. In diesem Fall reicht uns ein einfaches dynamisches Textfeld mit der Variable &#8220;<em>live</em>&#8220;. Erstellt also im Hauptframe ein neues dynamisches Textfeld und ordnet ihr die Variable <em>live</em> zu.</p>
<p><a href="http://xdee.net/wp-content/uploads/2009/01/textfield.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-57" title="textfield" src="http://xdee.site90.com/wp-content/uploads/2009/01/textfield-300x52.jpg" alt="" width="300" height="52" /></a></p>
<p>Testet euer Spiel, jetzt solltet ihr in dem Textfeld den Wert der Variable <em>live </em>sehen, wenn nicht habt ihr irgendetwas falsch gemacht.</p>
<p>Nun wollen wir die Kollision programmieren. Fügt dazu folgenden Code in die <em>onEnterFrame </em>Funktion des <em>enemy </em>Objekts welches in der <em>for-</em>Schlaufe erstellt wird:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">_root</span>.<span class="me1">player_mc</span>.<span class="kw3">hitTest</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="kw3">_x</span>, <span class="kw3">this</span>.<span class="kw3">_y</span>, <span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
live = live - <span class="nu0">1</span>;<br />
<span class="kw3">this</span>.<span class="kw3">removeMovieClip</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="kw3">_root</span>.<span class="me1">anzGegner</span> = <span class="kw3">_root</span>.<span class="me1">anzGegner</span> - <span class="nu0">1</span>;<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p><em> if(_root.player_mc.hitTest(this._x, this._y, true)) { &#8212; </em>Wenn der <em>player_mc </em>Movieclip mit <em>this </em>(in diesem Fall, der Gegner) kollidiert,<br />
<em> live = live &#8211; 1; &#8212; </em>Wird ein Leben abgezogen,<br />
<em>this.removeMovieClip() &#8212; </em>Der Gegner gelöscht<br />
<em>_root.anzGegner = _root.anzGegner &#8211; 1; &#8212; </em>und die Anzahl gegner um 1 verringert.</p>
<p>So, nun werden dem Spieler jedesmal Leben abgezogen, wenn er einen Gegner berührt. Doch was ist wenn der Spieler keine Leben mehr hat? Im Moment noch nichts, doch dies soll sich nun ändern. Sobald der User keine mehr Leben mehr hat also die Variable <em>live &lt;= 0</em> ist, soll ein GameOver erscheinen. Um dies zu tun müssen wir zuerst ein neues Frame erstellen, dort sollten sich folgende Dinge befinden:</p>
<ul>
<li>Ein GameOver Schriftzug</li>
<li>Ein Button um das Spiel neuzustarten</li>
</ul>
<p>Erstellt also ein neues Frame und erstellt dort ein statisches Textfeld in dem geschrieben steht &#8220;GameOver&#8221; und anschliessend ein Button mit dem Istanznamen &#8220;<em>back_btn</em>&#8221; . Kopiert nun folgenden Code in das eben erstellte Frame in der Ebene &#8220;<em>actions</em>&#8220;.</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">_root</span>.<span class="me1">back_btn</span>.<span class="kw3">onRelease</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="kw3">gotoAndStop</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p><em> _root.back_btn.onRelease = function() { &#8212; </em>Wird aufgerufen, wenn der Button gedrückt wird.<br />
<em>_root.gotoAndStop(1) &#8212; </em>Zurück zum ersten Frame springen. (Also das Spiel neustarten)</p>
<p>Wenn ihr das Spiel jetzt testet, werdet ihr merken, dass der Film die ganze Zeit vom 1. ins 2. Frame wechselt, das liegt daran, dass wir im 1. Frame noch kein <em>stop() </em>eingefügt haben. Geht also in das erste Frame auf der <em>actions</em> Ebene und fügt dort zuoberst &#8220;<em>stop()</em>&#8221; ein. Nun sollte es gehen, doch Moment, auch wenn der Spieler weniger als 0 Leben hat, passiert nichts. Damit sich das ändert, kopiert folgenden Code ins 1. Frame in die <em>onEnterFrame </em>Funktion des <em>player_mc</em> Movieclips:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span><span class="br0">&#40;</span>live <span class="sy0">&amp;</span>lt;= <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">_root</span>.<span class="kw3">gotoAndStop</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Testet das Spiel und nach dem Verlust der Leben sollte nun das 2. Frame angezeigt werden.</p>
<p><em>if(live &lt;= 0) { </em>&#8211; Wenn die Variable <em>live </em>kleiner oder gleich 0 ist,<br />
<em>_root.gotoAndStop(2); &#8212; </em>Springt der Film ins 2. Frame.</p>
<p>Doch was fällt auf? Die Gegner &#8220;sterben&#8221; nicht automatisch, wenn der Film ins 2. Frame springt, dies sieht nicht gerade schön aus und stört. Um dieses Problem und um die &#8220;Waffen&#8221; des Spielers kümmern wir uns in Teil 3 meines Flugzeug Spiel Tutorials.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="327" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://xdee.net/wp-content/uploads/2009/01/flugzeug-spiel-teil-2.swf" /><embed type="application/x-shockwave-flash" width="450" height="327" src="http://xdee.net/wp-content/uploads/2009/01/flugzeug-spiel-teil-2.swf"></embed></object></p>
<p style="text-align: left;">
<p style="text-align: left;">Wenn ihr Fragen oder Kritik habt, postet diese doch in den Comments.</p>
<p style="text-align: left;">Vielen Dank fürs lesen uns bis zum nächsten Mal</p>
<p style="text-align: left;">Michael Ziörjen</p>
<p style="text-align: left;"><a href="http://xdee.net/?p=49">Flugzeug Spiel &#8211; Teil 1</a></p>

]]></content:encoded>
			<wfw:commentRss>http://xdee.net/2009/01/03/flugzeug-spiel-teil-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flugzeug Spiel &#8211; Teil 1</title>
		<link>http://xdee.net/2009/01/02/flugzeug-spiel-teil-1/</link>
		<comments>http://xdee.net/2009/01/02/flugzeug-spiel-teil-1/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 20:21:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Tutorials]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Spiel]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://xdee.site90.com/?p=49</guid>
		<description><![CDATA[
In diesem Tutorial wollen wir ein einfaches Flugzeug Spiel in Flash erstellen. In diesem Spiel soll es darum gehen, das Flugzeug von oben nach unten zu steuern und dabei die Gegner abzuschiessen. Vorkentnisse:

Umgehen mit Flash (Toolbox, Tweens, erstellen von Movieclips)

Ziele:

Tasteneingaben (bewegen durch drücken der Pfeiltasten)
Dynamisches Erstellen von Movieclips (Schiessen)
Zufälliges Platzieren und Bewegen von Movieclips (Gegner)
Anzeigen [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://xdee.net/wp-content/uploads/2009/01/header1.jpg" rel="lightbox"><img class="size-full wp-image-158  aligncenter" title="header1" src="http://xdee.net/wp-content/uploads/2009/01/header1.jpg" alt="" width="300" height="100" /></a></p>
<p>In diesem Tutorial wollen wir ein einfaches Flugzeug Spiel in Flash erstellen. In diesem Spiel soll es darum gehen, das Flugzeug von oben nach unten zu steuern und dabei die Gegner abzuschiessen. <strong>Vorkentnisse:</strong></p>
<ul>
<li>Umgehen mit Flash (Toolbox, Tweens, erstellen von Movieclips)</li>
</ul>
<p><strong>Ziele:</strong></p>
<ul>
<li>Tasteneingaben (bewegen durch drücken der Pfeiltasten)</li>
<li>Dynamisches Erstellen von Movieclips (Schiessen)</li>
<li>Zufälliges Platzieren und Bewegen von Movieclips (Gegner)</li>
<li>Anzeigen von Punktzahl und Leben durch Textfelder</li>
</ul>
<p><span id="more-49"></span></p>
<h2>1. Erstellen der Movieclips</h2>
<p>Um überhaupt anfangen zu können, müssen wir zuerst unsere Movieclips erstellen. Folgende Movieclips müssen erstellt werden:</p>
<ul>
<li>Player <em>player_mc </em>- Unser Spieler, in diesem Fall ein Flugzeug</li>
<li>Gegner <em>enemy_mc -</em> Unser(e) Gegner</li>
<li>Schuss <em>bullet_mc &#8211; </em>Die Schüsse die der Spieler abschiesst</li>
</ul>
<p>Öffnet also ein neues Flash Dokument mit den Massen <strong>550 x 400 px</strong> und mit <strong>24 fps</strong>.<strong> </strong>Fügt auch gleich eine neue Ebene mit dem Namen &#8220;<em>actions</em>&#8221; hinzu.<strong> </strong>Erstellt nun alle Movieclips und gebt ihnen die <em>Kursiv</em> dargestellten Instanznamen. Alle Grafiken die ich verwendet haben, findet ihr auch in dem Ressourcepack am Ende dieses Tutorials. <a href="http://xdee.net/wp-content/uploads/2009/01/movieclips.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-50" title="movieclips" src="http://xdee.net/wp-content/uploads/2009/01/movieclips-300x209.jpg" alt="" width="300" height="209" /></a> So sehen meine Movieclips im moment aus, natürlich dürft ihr eure Movieclips noch etwas schöner und detailreicher gestalten, doch für meinen Geschmack sehen meine Movieclips nicht schlecht aus.</p>
<h2>2. Das Flugzeug steuern</h2>
<p>Alle Hobbypilote können sich nun freuen, wir werden fliegen &#8211; nunja dann doch nicht ganz aber immerhin unser Flugzeug im Spiel soll fliegen können. Damit sich unser Flugzeug nun nach oben und unten bewegt müssen wir die Y-Koordinaten des Flugzeugs ändern.  Fügt nun folgenden Code in das 1. Frame auf der Ebene &#8220;actions&#8221; ein:</p>
<div class="codecolorer-container actionscript " style="overflow:auto;white-space:nowrap;width:435px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="actionscript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> speed = <span class="nu0">5</span>;<br />
<span class="kw2">var</span> live = <span class="nu0">3</span>;<br />
<span class="kw2">var</span> score = <span class="nu0">0</span>;<br />
<span class="kw3">_root</span>.<span class="me1">player_mc</span>.<span class="kw3">onEnterFrame</span> = <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">Key</span>.<span class="kw3">isDown</span><span class="br0">&#40;</span><span class="kw3">Key</span>.<span class="kw3">UP</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">this</span>.<span class="kw3">_y</span> -= speed;<br />
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">Key</span>.<span class="kw3">isDown</span><span class="br0">&#40;</span><span class="kw3">Key</span>.<span class="kw3">DOWN</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="kw3">this</span>.<span class="kw3">_y</span> += speed;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Testet das Ganze mal indem ihr &#8220;<em>Strg + Enter</em>&#8221; drückt. Wenn alles stimmt, könnt ihr das Flugzeug nun nach oben und nach unten bewegen. Gehen wir den Code nun Stück für Stück durch. <em> var speed = 5; </em>- Am Anfang definieren wir erstmal ein paar Variablen. Hier zum Beispiel die Variable <em>speed</em> in der wir festhalten, wie schnell sich unser Flugzeug auf und ab bewegen kann. <em> _root.player_mc.onEnterFrame = function () </em> &#8211; wird 24 mal in der Sekunde aufgerufen, da wir jah 24 fps eingestellt haben. <em> if(Key.isDown(Key.UP)) </em> &#8211; Wenn die Auf-Taste gedrückt wird, <em> this._y -= speed;</em> &#8211; wird die Y-Position verändert.  Das gleiche dann auch, wenn die Ab-Taste gedrückt wird.</p>
<h2>3. Ergebnis:</h2>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="327" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://xdee.net/wp-content/uploads/2009/01/flugzeug-spiel-teil-1.swf" /><embed type="application/x-shockwave-flash" width="450" height="327" src="http://xdee.net/wp-content/uploads/2009/01/flugzeug-spiel-teil-1.swf"></embed></object></p>
<p style="text-align: left;">Dies ist das Ende, des ersten Teils meines &#8220;Flugzeug Spiel Tutorials&#8221;. Lest in Teil 2, wie die Gegner programmiert werden.  Vielen Dank fürs Lesen. Postet euere Fragen oder Kritik in den Comments.  Mit freundlichen Grüssen</p>
<p style="text-align: left;">Michael Ziörjen</p>
<p style="text-align: left;"><a href="http://xdee.net/?p=56">Flugzeug Spiel &#8211; Teil 2</a><br />
Ressourcepack</p>

]]></content:encoded>
			<wfw:commentRss>http://xdee.net/2009/01/02/flugzeug-spiel-teil-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
