<?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>welt-held.de &#187; palm pre</title>
	<atom:link href="http://www.welt-held.de/tag/palm-pre/feed" rel="self" type="application/rss+xml" />
	<link>http://www.welt-held.de</link>
	<description>Sind wir nicht alle Welt Held?</description>
	<lastBuildDate>Wed, 23 Nov 2011 09:14:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Über ein Jahr mit dem Palm Pre</title>
		<link>http://www.welt-held.de/1980-uber-ein-jahr-mit-dem-palm-pre.html</link>
		<comments>http://www.welt-held.de/1980-uber-ein-jahr-mit-dem-palm-pre.html#comments</comments>
		<pubDate>Tue, 07 Jun 2011 08:52:27 +0000</pubDate>
		<dc:creator>Björn</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[erfahrungen]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[probleme]]></category>

		<guid isPermaLink="false">http://www.welt-held.de/?p=1980</guid>
		<description><![CDATA[Seit über einem Jahr besitze ich nun ein Palm Pre. Vorher besaß ich ein Nokia E65, welches zwar gute Dienste leistete, es war aber kein Smart-Phone. Ich hatte damals eigentlich nicht so viele Anforderungen, ich wollte eigentlich ein Handy, mit dem ich meine Emails lesen und meine Termine und evtl.  [...]]]></description>
			<content:encoded><![CDATA[<p>Seit über <a href="http://www.welt-held.de/1645-palm-pre.html">einem Jahr</a> besitze ich nun ein Palm Pre. Vorher besaß ich ein Nokia E65, welches zwar gute Dienste leistete, es war aber kein Smart-Phone. Ich hatte damals eigentlich nicht so viele Anforderungen, ich wollte eigentlich ein Handy, mit dem ich meine Emails lesen und meine Termine und evtl. auch noch Kontakte verwalten kann. Das iPhone war mir einfach zu teuer, zudem hab ich ganz große Probleme mit dieser Politik die Apple veranstaltet, ich möchte doch schon gewisse Freiheiten haben. Ob ich sie nutze, ist die andere Frage aber ich könnte es theoretisch.</p>
<p>So wurde ich damals von <a href="http://mbiebusch.de/">Marc</a> auf das Palm Pre aufmerksam gemacht. Es hat eine gute Integration von Googles Diensten, ein offenes System und eine riesige Community, welche mich mit allen möglichen Extras versorgen kann. Mit der App-Anzahl eines Apple AppStores kann es zwar nicht mithalten, aber ein gutes Handy bringt ja das wichtigste an Software bereits mit. Also wurde es das gute Ding. </p>
<p>Doch nun, nach einiger Zeit gibt es ein Paar Dinge, die mich dermaßen stören, dass ich drauf und dran bin, mir ein neues Telefon zuzulegen. Vor einiger Zeit erschien webOS 2.1, welches offiziell für mein Palm Pre nicht erschien, aber mit ein <a href="http://www.webos-blog.de/2011-02-24-webos-2-1-auf-dem-palm-pre-so-gehts/">paar Tricks</a> war auch das kein Problem. Allerdings löste das Update nicht wirklich meine Probleme oder Dinge, die mich (mittlerweile) nerven.</p>
<p>Fangen wir mal an. Der &#8220;Desktop&#8221; vom Pre, er ist riesig, ich kann mir einen schönen Hintergrund anzeigen lassen und sonst nichts. Warum kann ich dort nicht einfach eine Liste mit Terminen oder Notizen hinterlegen oder sonst was? Also ich habe eigentlich nicht ständig irgendwelche Programme laufen, die mir die Sicht versperren. Selbst mein altes Nokia konnte das besser.</p>
<p>Oder häufig habe ich das Problem, dass der Speicher nicht ausreichend ist. Obwohl kein Programm läuft, bekomme ich beim Programmstart die &#8220;Zuviele Karten&#8221;-Fehlermeldung. Unter webOS 1.x war es so schlimm, dass ich praktisch NIE Angry Birds spielen konnte. Dies hat sich glücklicherweise mit webOS 2.1 deutlich verbessert, tritt aber dennoch ab und an noch auf. Ist schon nett, wenn man jemanden anrufen will, aber das Anrufprogramm nicht starten kann.</p>
<p>Seit dem Update auf 2.1 meckerte mir meine Email / Kalender Synchronisation ab und an die Ohren voll, dass die Zugangsdaten nicht stimmen würden. Warum auch immer, trat sowohl bei Google als auch beim dienstlichen Exchange-Server auf. Manchmal ging es einfach wieder, manchmal musste ich die Daten neu eingeben oder im schlimmsten Fall das Handy neustarten. Direkt nach dem Update trat der Fehler praktisch mehrmals täglich auf, mittlerweile auch eher nur sporadisch (obwohl ich nichts gemacht habe).</p>
<p>Wie auch <a href="http://twitter.com/#!/schakko/status/77820046478540800">meine</a> <a href="http://twitter.com/#!/DeeJayKenny/status/77820602559381505">Kollegen</a> habe ich ab und an das Problem, dass das Pre die Verbindung zur Sim-Karte verliert. Sehr ärgerlich, da mein Handy meistens nur rumliegt und ich es daher erst spät mitbekomme. Man ist also nicht erreichbar.<br />
Allerdings habe ich auch sehr häufig das Phänomen, dass mein Handy Empfang hat und auf einmal bekomme ich eine SMS von wegen mich hätte jemand versucht anzurufen. Mein Handy hat aber nicht geklingelt. Ich kann hierbei aber nicht genau sagen, ob es an o2 oder am Pre liegt, mir fehlte bis jetzt die Motivation, es mit anderen Karten zu testen.</p>
<p>Und dann die Akkulaufzeit. Ich habe auf dem Handy selten irgendwas laufen, meistens werden also nur Email, Kalender und Kontakte abgerufen / synchronisiert. Auch habe ich unterwegs eigentlich G3 und WLan ausgeschaltet, um die Akkulaufzeit zu verlängern. Sollte ich dennoch einmal Abends vergessen, mein Telefon aufzuladen (oder ich lege es nicht korrekt auf den TouchStone), kann ich es nächsten Tag auch zu Hause lassen. Ab und an hab ich auch das Problem, dass das Handy mir einen Akkustand von 50% anzeigt, aber es bereits komplett aus ist, wenn ich rund eine halbe Stunde später wieder nach schaue. Ohne Grund, ohne Warnton ohne alles.</p>
<p>Dann zu meinem Lieblingsthema, die Uhr. Wie jedes Moderne Telefon kann sich das Handy die Zeit aus dem Mobilnetz holen. Nur leider scheint o2 dort nach zu gehen, ich weiß es nicht. Ich hatte sehr häufig unterschiede zur &#8220;realen&#8221; Zeit bis zu einer Stunde. Auch ein aktualisieren brachte nichts. Dann hab ich das Synchronisieren mit der Netzzeit deaktiviert und manuell gestellt. Sollte nun aber das Telefon einfach ausgehen (wie oben beschrieben z.B.), zählt die Uhr nicht weiter. Ich lade es nun wieder auf und vergesse die Uhr nachzustellen, dann sitze ich halt nachts um drei auf Arbeit, also laut meinem Pre. Da ich keine Armbanduhr trage, muss ich mich auf mein Handy verlassen können, was ich aber augenscheinlich nicht kann.</p>
<p>Mal abgesehen vom verschenkten Desktop-Platz sind das alles Anforderungen, welche ein modernes Telefon erfüllen sollte. Und das Palm Pre tut es leider nicht.</p>
<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.welt-held.de%2F1980-uber-ein-jahr-mit-dem-palm-pre.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://www.welt-held.de/1980-uber-ein-jahr-mit-dem-palm-pre.html"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.welt-held.de/1980-uber-ein-jahr-mit-dem-palm-pre.html"  data-text="Über ein Jahr mit dem Palm Pre" data-count="horizontal" data-via="trashar">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div> <p><a href="http://welt-held.de/?flattrss_redirect&amp;id=1980&amp;md5=7c6673b7e16cfcf00032a87d0a4b8f6c" title="Flattr" target="_blank"><img src="http://welt-held.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.welt-held.de/1980-uber-ein-jahr-mit-dem-palm-pre.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" href="http://welt-held.de/?flattrss_redirect&amp;id=1980&amp;md5=7c6673b7e16cfcf00032a87d0a4b8f6c" type="text/html" />
	</item>
		<item>
		<title>HowTo: App für das Palm Pre erstellen</title>
		<link>http://www.welt-held.de/1647-howto-app-fur-das-palm-pre-erstellen.html</link>
		<comments>http://www.welt-held.de/1647-howto-app-fur-das-palm-pre-erstellen.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 22:37:37 +0000</pubDate>
		<dc:creator>Björn</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[mojo]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[webos]]></category>

		<guid isPermaLink="false">http://www.welt-held.de/?p=1647</guid>
		<description><![CDATA[Leider warte ich noch auf mein Palm Pre, aber da Palm seit einiger Zeit ein SDK für webOS zur Verfügung stellt, hindert mich nichts dran, mich schon mal in der Entwicklung zu versuchen.
Dazu brauchen wir erstmal das Palm Pre SDK. Dabei wird gleich eine virtuelle Maschine per Java Virtual Box mit  [...]]]></description>
			<content:encoded><![CDATA[<p>Leider warte ich noch auf mein Palm Pre, aber da Palm seit einiger Zeit ein SDK für webOS zur Verfügung stellt, hindert mich nichts dran, mich schon mal in der Entwicklung zu versuchen.</p>
<p>Dazu brauchen wir erstmal das <a href="http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;layout=page&amp;id=1661">Palm Pre SDK</a>. Dabei wird gleich eine virtuelle Maschine per Java Virtual Box mit einem WebOS installiert. Ansonsten wird alles installiert, was ihr braucht, um eine WebOS App zu erstellen. Wenn ihr wollt könnt ihr nun mit jedem beliebigen Texteditor loslegen.<br />
Ich habe mich für <a href="http://www.eclipse.org/">Eclipse</a> mit der webOS-Erweiterung entschieden. Du kannst die App von hier aus direkt in der VM starten, was einfacher ist, als die Apps jedes mal per Command-Tool in entsprechende Formate zu konvertieren und in die VM zu portieren.<br />
Wie ihr das ganze installiert, könnt ihr <a href="http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1639&amp;Itemid=57">hier</a> nachlesen.</p>
<p><span id="more-1647"></span>Nun will ich euch zeigen, wir ihr eine App für das Palm Pre erstellt. Als Beispiel entwickeln wir ein simples TicTacToe für zwei Spieler. Inspiriert wurde ich durch eine OpenSource Variante von TicTacToe namens <a href="http://scm.ailis.de/svn/webOS/ticsntacs/trunk/">Tics&#8217;n'Tacs</a>, welche aber für Anfänger doch recht oversized wirkt (enthält eine <a href="http://de.wikipedia.org/wiki/Künstliche_Intelligenz">KI</a> etc.)</p>
<p>Da webOS mit dem Javascript Framework &#8220;<a href="http://www.prototypejs.org/">Prototype</a>&#8221; arbeitet, welches man natürlich auch lokal nutzen kann, habe ich beschlossen, die Spiellogik erstmal für den Browser zu erstellen, und diese dann fürs Palm zu portieren und zu erweitern.</p>
<p>Als erstes erstellen wir eine Klasse in Javascript (kann man da von Klasse sprechen?):</p>
<pre class="brush: jscript; title: ; notranslate">function Game() {
}

/*
 * Setzt das Spielfeld zurück *
*/
Game.prototype.reset = function() {
	this.gameRunning = true;
	this.grid = [[ 0, 0, 0], [0, 0, 0], [0,0,0]];
	this.fieldsLeft = 9;
}

/*
 * Click abfangen und entsprechend reagieren
 */
Game.prototype.handleFieldClick = function(event, x, y) {
    // Spiel läuft nicht mehr oder Feld bereits von jemanden belegt!
	if(!this.gameRunning || this.grid[x][y] != 0) {
		return;
	}

	// Feld für den aktuellen Spieler reservieren
	this.grid[x][y] = this.currentPlayer;
	var id = &quot;field&quot; + x + y;
	$(id).addClassName(&quot;p&quot; + this.currentPlayer);

	// Züge reduzieren
	this.fieldsLeft--;

	// Prüfen, ob er gewonnen hat oder alle Felder belegt!
	if(this.checkForWin()) {
		// Hat gewonnen, callback funktion aufrufen!
		this.endGameCallback(this.winner);
		return;
	}
	// Aktuellen Spieler ändern
	this.currentPlayer = (this.currentPlayer == 1) ? 2 : 1;		

}

/*
 * Dient als Zeiger für die Callback Funktion, wird aufgerufen, sobald das Spiel vorbei ist.
 */
Game.prototype.endGameCallback = null;

/*
 * Startet das Spiel und setzt die Eventhandler auf die Felder.
 */
Game.prototype.start = function() {
	var id;
	this.reset();
	for(var i = 0; i &lt; 3; i++) {
		for(var j = 0; j &lt; 3; j++) {
			id = &quot;field&quot; + i + j;
			Event.observe($(id), &quot;click&quot;, this.handleFieldClick.bindAsEventListener(this, i, j));
		}
	}

}	

/*
 * Gibt die Debugmeldung für das Spielfeld aus
 */
Game.prototype.debug = function() {
	alert(this.grid[0][0] + &quot; &quot; + this.grid[0][1] + &quot; &quot; + this.grid[0][2] + &quot;\n&quot; +this.grid[1][0] + &quot; &quot; + this.grid[1][1] + &quot; &quot; + this.grid[1][2] + &quot;\n&quot; +this.grid[2][0] + &quot; &quot; + this.grid[2][1] + &quot; &quot; + this.grid[2][2] + &quot;\n&quot;);
}

/*
 * gibt true zurück, wenn ein Spieler gewonnen hat oder Spiel zuende ist
 */
Game.prototype.checkForWin = function() {
	if(this.checkWinDiagonal() || this.checkWinCol() || this.checkWinRow()) {
		this.gameRunning = false;
		return true;
	}

	if(this.fieldsLeft == 0) {
		this.winner = 3;
		return true;
	}
}

/* Prüft, ob Spieler diagonal eine Reihe hat */
Game.prototype.checkWinDiagonal = function() {
	if(	(
			(this.grid[0][0] == this.grid[1][1] &amp;&amp;
			this.grid[1][1] == this.grid[2][2]) ||
			(this.grid[2][0] == this.grid[1][1] &amp;&amp;
			 this.grid[1][1] == this.grid[0][2]))
		&amp;&amp; this.grid[1][1] != 0) {
			this.winner = this.grid[1][1];
			return true;
		}
	return false;
}

/* prüft ob Spieler eine Spalte voll hat */
Game.prototype.checkWinCol = function() {
	for(var i = 0; i &lt; 3; i++) {
		if(	this.grid[0][i] == this.grid[1][i] &amp;&amp;
			this.grid[1][i] == this.grid[2][i] &amp;&amp;
			this.grid[0][i] != 0) {
				this.winner = this.grid[0][i];
				return true;
			}
	}

	return false;
}

/* prüft ob Spieler eine Reihe voll hat */
Game.prototype.checkWinRow = function() {
	for(var i = 0; i &lt; 3; i++) {
		if(	this.grid[i][0] == this.grid[i][1] &amp;&amp;
			this.grid[i][1] == this.grid[i][2] &amp;&amp;
			this.grid[i][0] != 0) {
				this.winner = this.grid[i][0];
				return true;
			}
	}

	return false;
}

// 0: game running, 1: player 1, 2:player 2, 3: draw
Game.prototype.winner = 0;
Game.prototype.fieldsLeft = 9;
Game.prototype.gameRunning = false;
Game.prototype.currentPlayer = 1;
Game.prototype.grid = null;</pre>
<p>Das Spielfeld:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;&lt;title&gt;Tic Tac Toe&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;prototype.js&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;game.js&quot; /&gt;
  &lt;link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/&gt;
&lt;/head&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

var game = null;
function startgame() {
	game = new Game();
	game.start();
	game.endGameCallback = spielEnde;
}

function spielEnde(winner) {
	if(winner == 1 || winner == 2) {
		alert(&quot;Gewonnen hat Spieler &quot; + winner);
	}
	else {
		alert(&quot;Keiner hat gewonnen!&quot;);
	}

	//game.debug();
}

&lt;/script&gt;
&lt;body&gt;

&lt;div id=&quot;spielfeld&quot;&gt;
	&lt;div class=&quot;row row1&quot;&gt;
		&lt;div id=&quot;field00&quot; class=&quot;cell col1&quot;&gt;1&lt;/div&gt;
		&lt;div id=&quot;field01&quot; class=&quot;cell col2&quot;&gt;2&lt;/div&gt;
		&lt;div id=&quot;field02&quot; class=&quot;cell col3&quot;&gt;3&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;row row2&quot;&gt;
		&lt;div id=&quot;field10&quot; class=&quot;cell col1&quot;&gt;4&lt;/div&gt;
		&lt;div id=&quot;field11&quot; class=&quot;cell col2&quot;&gt;5&lt;/div&gt;
		&lt;div id=&quot;field12&quot; class=&quot;cell col3&quot;&gt;6&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;row row3&quot;&gt;
		&lt;div id=&quot;field20&quot; class=&quot;cell col1&quot;&gt;7&lt;/div&gt;
		&lt;div id=&quot;field21&quot; class=&quot;cell col2&quot;&gt;8&lt;/div&gt;
		&lt;div id=&quot;field22&quot; class=&quot;cell col3&quot;&gt;9&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;

&lt;input type=&quot;button&quot; onclick=&quot;startgame();&quot; value=&quot;start game&quot;/&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Per div-Container und CSS wird ein Spielfeld geformt. Nach einem Klick auf &#8220;start game&#8221; wird die Klasse initialisiert und die Variabeln gesetzt (game.start()). Dort werden &#8220;OnClick&#8221;-Events auf die einzelnen Spielfelder gesetzt. Klickt nun ein Spieler auf ein Feld, wird geprüft, ob es noch frei ist und für den Spieler reserviert und durch hinzufügen der entsprechenden CSS-Klasse auch mit einer entsprechenden Grafik visuell markiert. Danach wird geprüft, ob das Spiel vorrüber ist (weil einer gewonnen hat oder kein Zug mehr möglich ist) und bei Bedarf die Funktion &#8220;endGameCallback()&#8221; aufgerufen. Wenn ihr noch eine Runde spielen wollt, müsst ihr die Seite neuladen.</p>
<p>Damit ihr das nun nicht alles per Copy&amp;Paste selbst machen müsst, habe ich euch alles in einer ZIP-Datei zusammen gepackt: <a href='http://www.welt-held.de/files/tictactoe.zip'>tictactoe.zip</a></p>
<p>Nun erstellen wir daraus eine webOS Applikation. Dazu legen wir in Eclipse eine neue Mojo App an:<br />
<a href="http://www.welt-held.de/files/eclipse1.jpg"><img src="http://www.welt-held.de/files/eclipse1-150x150.jpg" alt="" title="New Mojo Application" width="150" height="150" class="aligncenter size-thumbnail wp-image-1651" /></a></p>
<p>Nun legen wir eine neue Mojo-Scene an und nennen sie &#8220;game&#8221;:<br />
<a href="http://www.welt-held.de/files/eclipse2.jpg"><img src="http://www.welt-held.de/files/eclipse2-150x150.jpg" alt="" title="New Mojo Scene" width="150" height="150" class="aligncenter size-thumbnail wp-image-1652" /></a></p>
<p>Wir legen (der Übersicht halber) unter dem Ordner &#8220;app&#8221; einen Ordner &#8220;model&#8221; an und kopieren die game.js von oben dortrein.<br />
<a href="http://www.welt-held.de/files/eclipse3.jpg"><img src="http://www.welt-held.de/files/eclipse3-150x150.jpg" alt="" title="game.js in Model hinzufügen" width="150" height="150" class="aligncenter size-thumbnail wp-image-1653" /></a></p>
<p>Damit die &#8220;game.js&#8221; später in der App bekannt ist, muss sie in der Datei &#8220;sources.json&#8221; eingetragen werden. Erweitert sie in etwa so:</p>
<pre class="brush: jscript; title: ; notranslate">[
    {&quot;source&quot;: &quot;app/assistants/stage-assistant.js&quot;},
    {
        &quot;scenes&quot;: &quot;game&quot;,
        &quot;source&quot;: &quot;app/assistants/game-assistant.js&quot;
    },
    {
    	&quot;source&quot;: &quot;app/model/game.js&quot;
    }
]</pre>
<p>In der Datei &#8220;/app/views/game/game-scene.html&#8221; füge ich nun das Spielfeld hinzu. Wichtig ist, dass ich hier keinen Header einbaue.</p>
<pre class="brush: xml; title: ; notranslate">&lt;div class=&quot;palm-page-header&quot;&gt;
  &lt;div class=&quot;palm-page-header-wrapper&quot;&gt;
    &lt;div class=&quot;icon app&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;title&quot;&gt;Tic Tac Toe&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;spielfeld&quot;&gt;
	&lt;div class=&quot;row row1&quot;&gt;
		&lt;div id=&quot;field00&quot; class=&quot;cell col1&quot;&gt;1&lt;/div&gt;
		&lt;div id=&quot;field01&quot; class=&quot;cell col2&quot;&gt;2&lt;/div&gt;
		&lt;div id=&quot;field02&quot; class=&quot;cell col3&quot;&gt;3&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;row row2&quot;&gt;
		&lt;div id=&quot;field10&quot; class=&quot;cell col1&quot;&gt;4&lt;/div&gt;
		&lt;div id=&quot;field11&quot; class=&quot;cell col2&quot;&gt;5&lt;/div&gt;
		&lt;div id=&quot;field12&quot; class=&quot;cell col3&quot;&gt;6&lt;/div&gt;
	&lt;/div&gt;
	&lt;div class=&quot;row row3&quot;&gt;
		&lt;div id=&quot;field20&quot; class=&quot;cell col1&quot;&gt;7&lt;/div&gt;
		&lt;div id=&quot;field21&quot; class=&quot;cell col2&quot;&gt;8&lt;/div&gt;
		&lt;div id=&quot;field22&quot; class=&quot;cell col3&quot;&gt;9&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre>
<p>Die beiden Bilder 1.png und 2.png kopiere ich in den Ordner &#8220;/images&#8221;. Den Inhalt der style.css kopiere ich in die Datei &#8220;/resources/tictactoe.css&#8221; und passe die Pfade für die beiden Bilder an.</p>
<p>Nun müssen wir die Spiellogik der game.js in die App einbauen. Das ist ähnlich, wie in der HTML-Datei am Anfang des Beitrags. Dazu bearbeite ich die &#8220;/app/assistants/game-assistant.js&#8221; und erweitern die vorhandenen Funktionen wie hier (bzw. fügen sie hinzu):</p>
<pre class="brush: jscript; title: ; notranslate">
var game = null;
GameAssistant.prototype.setup = function() {
	this.game = new Game();
	this.game.start();
	this.game.callback = this.spielEnde;
}

GameAssistant.prototype.spielEnde = function(winner) {

	var endText;
	if(winner == 3) {
		endText = &quot;Das Spiel endete unentschieden.&quot;;
	} else {
		endText = &quot;Gewonnen hat Spieler &quot; + winner;
	}
	Mojo.Controller.errorDialog(endText);
}</pre>
<p>Unterschiedlich ist hier nur die Callback-Funktion. Sie ruft die Funktion &#8220;errorDialog()&#8221; auf. Dies ist ein webOS Dialog. Es gibt noch andere <a href="http://developer.palm.com/palm-sdk/jsdoc/symbols/Mojo.Controller.html">Dialoge</a>, aber halten wir es mal einfach. Das Ergebnis seht ihr später.</p>
<p>Nun müssen wir der App auch sagen, dass es die Szene &#8220;game&#8221; starten soll, dies geschieht in der &#8220;stage-assistant.js&#8221;:</p>
<pre class="brush: jscript; title: ; notranslate">
StageAssistant.prototype.setup = function() {

this.controller.pushScene(&quot;game&quot;);
}</pre>
<p>Nun starten wir die App (Emulator muss schon laufen), in dem wir aufs Projekt rechtsklicken und &#8220;Run&#8221; -&gt; &#8220;Mojo Application&#8221; auswählen. Nach einem kurzen Moment startet die App im Emulator. Das Ergebnis:</p>
<div style="text-align:center">
<a href="http://www.welt-held.de/files/emulator1.jpg"><img src="http://www.welt-held.de/files/emulator1-150x150.jpg" alt="" title="Emulator 1" width="150" height="150" class="alignnone size-thumbnail wp-image-1657" /></a> <a href="http://www.welt-held.de/files/emulator2.jpg"><img src="http://www.welt-held.de/files/emulator2-150x150.jpg" alt="" title="Emulator 2" width="150" height="150" class="alignnone size-thumbnail wp-image-1658" /></a> <a href="http://www.welt-held.de/files/emulator3.jpg"><img src="http://www.welt-held.de/files/emulator3-150x150.jpg" alt="" title="Emulator 3" width="150" height="150" class="alignnone size-thumbnail wp-image-1659" /></a></div>
<p>Und zu guter letzt noch das ganze Eclipseprojekt als Download: <a href='http://www.welt-held.de/files/tictactoe-eclipse.zip'>tictactoe-eclipse.zip</a></p>
<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.welt-held.de%2F1647-howto-app-fur-das-palm-pre-erstellen.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://www.welt-held.de/1647-howto-app-fur-das-palm-pre-erstellen.html"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.welt-held.de/1647-howto-app-fur-das-palm-pre-erstellen.html"  data-text="HowTo: App für das Palm Pre erstellen" data-count="horizontal" data-via="trashar">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div> <p><a href="http://welt-held.de/?flattrss_redirect&amp;id=1647&amp;md5=327fa15241cb03d496498cf43a244f8a" title="Flattr" target="_blank"><img src="http://welt-held.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.welt-held.de/1647-howto-app-fur-das-palm-pre-erstellen.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://welt-held.de/?flattrss_redirect&amp;id=1647&amp;md5=327fa15241cb03d496498cf43a244f8a" type="text/html" />
	</item>
		<item>
		<title>Palm Pre</title>
		<link>http://www.welt-held.de/1645-palm-pre.html</link>
		<comments>http://www.welt-held.de/1645-palm-pre.html#comments</comments>
		<pubDate>Mon, 08 Feb 2010 17:14:55 +0000</pubDate>
		<dc:creator>Björn</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[handy]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[webos]]></category>

		<guid isPermaLink="false">http://www.welt-held.de/?p=1645</guid>
		<description><![CDATA[Ich habe mir vor ein paar Tagen habe ich mir ein Palm Pre bestellt. Das ist echt ein nettes Smartphone. Aktuell schau ich mir die SDK sowie das Webtool Ares an. Mit diesen ist es möglich, eigene Anwendungen zu entwickeln.
Das Palm Pre selbst basiert auf WebOS und es ist möglich, seine Anwendungen  [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe mir vor ein paar Tagen habe ich mir ein <a href="http://www.palm.com/de/de/products/phones/pre/">Palm Pre</a> bestellt. Das ist echt ein nettes Smartphone. Aktuell schau ich mir die <a href="http://developer.palm.com/">SDK</a> sowie das Webtool <a href="http://ares.palm.com/Ares/index.html">Ares</a> an. Mit diesen ist es möglich, eigene Anwendungen zu entwickeln.<br />
Das Palm Pre selbst basiert auf <a href="http://de.wikipedia.org/wiki/Palm_webOS">WebOS</a> und es ist möglich, seine Anwendungen mithilfe von HTML5, CSS und Javascript zu entwickeln.<br />
Die erste &#8220;Hello World&#8221; App habe ich auch schon entwickelt, nun sehe ich mal weiter <img src='http://welt-held.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Mir fehlen immer ein wenig die Ideen, wenn ich ehrlich bin.</p>
<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.welt-held.de%2F1645-palm-pre.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://www.welt-held.de/1645-palm-pre.html"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.welt-held.de/1645-palm-pre.html"  data-text="Palm Pre" data-count="horizontal" data-via="trashar">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div> <p><a href="http://welt-held.de/?flattrss_redirect&amp;id=1645&amp;md5=618b1cbfa03bae48df0a9ec78e31a5d0" title="Flattr" target="_blank"><img src="http://welt-held.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.welt-held.de/1645-palm-pre.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://welt-held.de/?flattrss_redirect&amp;id=1645&amp;md5=618b1cbfa03bae48df0a9ec78e31a5d0" type="text/html" />
	</item>
	</channel>
</rss>

