Apr 21
Dieser Blogpost auf der Betavine-Seite schreibt, dass es kein “keypress”-Eventtype in der Vodafone Mobile Widget Runtime gibt.
Das bedeutet aber nicht, dass in Mobile Widgets überhaupt keine KeyEvents abgefangen werden können. “keydown” und “keyup” können sehr wohl verwendet werden.
Hier ein Beispiel unter Verwendung von jQuery:
$(function(){
$(document).keyup(function(e){
if(!gameOver){
switch(e.keyCode){
case 52: //this is left! (4 on mobile)
// move left functions
break;
case 50: //this is up! (2 on mobile)
// move up functions
break;
case 54: //this is right (6 on mobile)
// move right functions
break;
case 56: //this is down! (8 on mobile)
// move down functions
break;
}
}
});
});
Übrigens, auch für Mobile Widgets kann man sehr schön gameQuery (ein Addon für jQuery) verwenden.
Über die mobile Spieleentwicklung mit Widgets aber ein anderes Mal ein kleines Tutorial.
Apr 21
Hier ein kleines Widget, das ich heute gebaut habe, um herauszufinden, welche Tasten auf dem Handy welche Keycodes werfen, damit ich diese dann verarbeiten kann.
Das Widget sollte demnächst auch im Vodafone Widget Portal zur Verfügung stehen (wenn alles gut läuft), ansonsten gibt’s das auch hier schon zum Download (keycode_listener.wgt)
BTW: Natürlich läuft das Widget auch ganz normal im Opera Browser und fängt auch hier die Keycodes der Tasten ab. Ist also für jeden Entwickler interessant.
Apr 02
Beim Erstellen des wgt-Archivs sollte man nicht die Funktion des Finders “… komprimieren” bzw. “compress …” verwenden, da die Vodafone Widget Runtime dieses Archiv auf Grund der 64bit-Komprimierungsmethode nicht erkennt.
Statt dessen z.B. über die Konsole:
zip -r widgetname.wgt *
Apr 02
Momentan arbeite ich an einem Widget für die Vodafone Widget Runtime. Diese Widgets orientieren sich an Opera Widgets, allerdings stößt man manchmal auf interessante Probleme.
Ein Icon für das Widget kann in der config.xml definiert werden per
<icon>Pfad/zum/icon.png</icon>
Das Problem ist jedoch, wenn man den gesamten Widget-Ordner komprimiert (was nach den Opera Widget Specifications OK ist) und auf dem Mobilgerät einspielt, so wird das Widget-Icon nicht angezeigt.
Lösung:
Anstatt den gesamten Ordner zu komprimieren, nur die Dateien und Unterverzeichnise im Widget-Hauptordner komprimieren!
Anstatt
zip -r widgetname.wgt widgetordner/
also
zip -r widgetname.wgt *
im jeweiligen Ordner ausführen.
Dann gehts.
Jul 15
Hier die Folien meines Vortrags über “Facebook-Anwendungen mit RubyOnRails” beim gestrigen WebMontag in der Uni Paderborn.
FacebookOnRails.pdf
Jul 03
Auch mit Rails 2.1 und dem xss_terminate Plugin scheint es Probleme zu geben. Beim Speichern eines Objekts kommt immer der Fehler
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]
Der Fix ist einfach: Eine neue Version des Plugins herunterladen, diese ist gefixt und das Problem ist gelöst.
Jul 03
Wie man an meinen letzten beiden Blogeinträgen erkennt, versuche ich momentan ein Projekt auf Rails 2.1 umzustellen. Das ist nicht all zu schwer, da wir das Projekt vorher auf Rails 2.0 laufen hatten, allerdings gibt es doch einige Stellen die mich wundern.
Zum Einen lief Gettext nach der Umstellung nicht mehr und jetzt auch acts_as_taggable_on_steroids nicht mehr. Beim Aufruf von xyz.tag_list gab es eine Fehlermeldung:
stack level too deep
Weiterlesen »
Jul 01
Mit Rails2.1 und gettext gibt es anscheinend einige kleine Probleme. Beim Start des Servers kam es bei mir immer zu der Meldung:
undefined method `init_gettext' for ApplicationController:Class
Gelöst werden kann dies, indem man im Verzeichnis config/initializers eine Datei gettext.rb anlegt mit folgendem Inhalt:
require 'gettext/rails'
module ActionView
class Base
delegate :file_exists? , :to => :finder unless respond_to?( :file_exists? )
end
end
Jun 26
Ohne jetzt hier wieder den alten Kampf zwischen WebORB und RubyAMF als Schnittstelle zwischen Ruby und Flex anzufachen, wollte ich hier etwas aus unserer eigenen Erfahrung berichten.
Vor einiger Zeit sind haben wir ein größeres Projekt von WebORB auf RubyAMF umgebaut. Wir hatten die Anwendung zuerst mit WebORB aufgebaut, da das WebORB besser gepflegt schien und RubyAMF nicht mehr weiter entwickelt wird (jedenfalls nicht vom ursprünglichen Entwickler und nicht momentan, wer weis was die Zukunft bringt). Doch mit der Zeit stellten wir fest, dass WebORB seeehr langsam ist und ausserdem sehr speicherhungrig. Wir haben ein System mit mehreren Mongrel-Instanzen laufen, dass von einem monit überwacht wird.
Weiterlesen »