Fehlerbehebung

Flash Player 10.1 und höher, Adobe AIR 2 und höher

Die Hardware- und Software-Unterstützung für die Berührungseingabe ändert sich äußerst schnell. Diese Referenz enthält keine Liste aller Geräte und Kombinationen aus Betriebssystem und Software, die die Multitouch-Eingabe unterstützen. Sie enthält jedoch Anleitungen dazu, wie Sie mit der Discovery API feststellen können, ob Ihre Anwendung auf einem Gerät mit Multitouch-Unterstützung installiert ist. Weiterhin finden Sie Tipps zur Fehlerbehebung Ihres ActionScript-Codes.

Die Reaktion der Flash-Laufzeiten auf Berührungsereignisse richtet sich nach Informationen, die von dem Gerät, dem Betriebssystem oder der Software (wie einem Browser) an die Laufzeit übergeben werden. Wegen dieser Abhängigkeit von der Software-Umgebung ist es noch schwieriger, die Multitouch-Kompatibilität zu dokumentieren. Bestimmte Gesten oder Berührungen werden auf verschiedenen Geräten oft unterschiedlich interpretiert. Wird eine Drehung erkannt, wenn der Benutzer mit zwei Fingern gleichzeitig eine Drehbewegung ausführt? Oder wenn der Benutzer mit einem Finger einen Kreis auf dem Bildschirm zeichnet? Je nach der Hardware- und Software-Umgebung kann eine Drehgeste bei beiden Bewegungen – oder auch bei einer völlig anderen Bewegung – erkannt werden. Mit anderen Worten: Das Gerät teilt dem Betriebssystem die Art der Benutzereingabe mit und das Betriebssystem leitet diese Informationen an die Laufzeit weiter. Wenn die Laufzeit sich innerhalb eines Browsers befindet, wird das Gesten- oder Berührungsereignis in manchen Fällen von der Browsersoftware interpretiert, die die Eingabe nicht an die Laufzeit weitergibt. Dieses Verhalten ähnelt „Hotkeys“: Sie versuchen, in einem Browser über eine bestimmte Tastenkombination eine Aktion in Flash Player auszuführen, aber der Browser öffnet stattdessen ein Menü.

Bei einzelnen APIs und Klassen werden Sie darauf hingewiesen, wenn keine Kompatibilität mit bestimmten Betriebssystemen besteht. Sie können einzelne API-Einträge hier nachschlagen, wobei Sie mit der Multitouch-Klasse beginnen: http://help.adobe.com/de_DE/FlashPlatform/reference/actionscript/3/flash/ui/Multitouch.html .

Im Folgenden werden einige häufige Gesten und Berührungen beschrieben:
Schwenken
Bewegen Sie einen Finger von links nach rechts oder von rechts nach links. Auf einigen Geräten müssen Schwenkbewegungen mit zwei Fingern vorgenommen werden.

Drehen
Berühren Sie das Display mit zwei Fingern, die Sie dann kreisförmig bewegen (zeichnen Sie also mit den Fingern einen imaginären Kreis auf dem Bildschirm nach). Der Drehpunkt befindet sich in der Mitte zwischen den beiden Punkten, die Sie mit den Fingern berühren.

Swipe
Bewegen Sie drei Finger schnell von links nach rechts, von rechts nach links, von oben nach unten oder von unten nach oben.

Zoom
Berühren Sie das Display mit zwei Fingern. Bewegen Sie die Finger dann auseinander, um die Anzeige zu vergrößern, oder aufeinander zu, um die Anzeige zu verkleinern.

Drücken und Tippen
Drücken Sie mit einem Finger auf das Display und tippen Sie dann mit dem anderen Finger auf eine andere Stelle des Displays.

Jedes Gerät verfügt über eine eigene Dokumentation zu den unterstützten Gesten und zur Ausführung dieser Gesten. In den meisten Fällen muss der Benutzer zwischen zwei Gesten die Finger vom Display nehmen, um den Kontakt völlig zu unterbrechen (abhängig vom Betriebssystem).

Wenn Ihre Anwendung nicht auf Berührungsereignisse oder Gesten reagiert, überprüfen Sie Folgendes:
  1. Haben Sie Ereignis-Listener für Berührungs- oder Gestenereignisse an eine Objektklasse angefügt, die von der InteractiveObject-Klasse erbt? Nur InteractiveObject-Instanzen können auf Berührungs- und Gestenereignisse warten.

  2. Testen Sie Ihre Anwendung in Flash Professional CS5? Falls ja, versuchen Sie, die Anwendung zu veröffentlichen und zu testen, da Flash Professional die Interaktion abfangen kann.

  3. Beginnen Sie mit einfachen Schritten und stellen Sie zunächst fest, was richtig funktioniert (das folgende Codebeispiel stammt aus dem API-Eintrag für Multitouch.inputMode :

    Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; 
    var mySprite:Sprite = new Sprite(); 
    var myTextField:TextField = new TextField() 
     
    mySprite.graphics.beginFill(0x336699); 
    mySprite.graphics.drawRect(0,0,40,40); 
    addChild(mySprite); 
     
    mySprite.addEventListener(TouchEvent.TOUCH_TAP, taplistener); 
     
    function taplistener(e:TouchEvent): void { 
        myTextField.text = "I've been tapped"; 
        myTextField.y = 50; 
        addChild(myTextField); 
    }

    Tippen Sie auf das Rechteck. Wenn dieses Beispiel funktioniert, wissen Sie, dass Ihre Umgebung ein einfaches Tippen unterstützt. Dann können Sie komplizierte Verarbeitungen testen.

    Das Testen der Gestenunterstützung ist komplizierter. Ein bestimmtes Gerät oder Betriebssystem unterstützt eine beliebige Kombination aus Gesteneingaben oder auch gar keine Gesteneingaben.

    Das folgende Beispiel zeigt einen einfachen Test für die Zoomgeste:

    Multitouch.inputMode = MultitouchInputMode.GESTURE; 
     
    stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom); 
    var myTextField = new TextField(); 
    myTextField.y = 200; 
    myTextField.text = "Perform a zoom gesture"; 
    addChild(myTextField); 
     
    function onZoom(evt:TransformGestureEvent):void { 
        myTextField.text = "Zoom is supported"; 
    }

    Führen Sie eine Zoomgeste auf dem Gerät aus, um zu sehen, ob das Textfeld mit der Meldung Zoom is supported (Zoom wird unterstützt) ausgefüllt wird. Der Ereignis-Listener wird der Bühne hinzugefügt, sodass Sie die Geste in jedem Teil der Testanwendung ausführen können.

    Das folgende Beispiel zeigt einen einfachen Test für die Schwenkgeste:

    Multitouch.inputMode = MultitouchInputMode.GESTURE; 
     
    stage.addEventListener(TransformGestureEvent.GESTURE_PAN , onPan); 
    var myTextField = new TextField(); 
    myTextField.y = 200; 
    myTextField.text = "Perform a pan gesture"; 
    addChild(myTextField); 
     
    function onPan(evt:TransformGestureEvent):void { 
        myTextField.text = "Pan is supported"; 
    }

    Führen Sie eine Schwenkgeste auf dem Gerät aus, um zu sehen, ob das Textfeld mit der Meldung Pan is supported (Schwenken wird unterstützt) ausgefüllt wird. Der Ereignis-Listener wird der Bühne hinzugefügt, sodass Sie die Geste in jedem Teil der Testanwendung ausführen können.

    Bei einigen Kombinationen aus Betriebssystem und Gerät werden beide Gesten, bei anderen nur eine Geste oder gar keine Geste unterstützt. Testen Sie dies in der Bereitstellungsumgebung Ihrer Anwendung.

Bekannte Probleme

Im Folgenden werden bekannte Probleme in Bezug auf die Berührungseingabe genannt:
  1. Im mobilen Internet Explorer auf Windows Mobile-Betriebssystemen wird Inhalt in SWF-Dateien automatisch vergrößert oder verkleinert:

    Sie können dieses Zoomverhalten in Internet Explorer umgehen, indem Sie der HTML-Seite, die die SWF-Datei hostet, den folgenden Code hinzufügen:

    <head> 
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"> 
    </head>
  2. In Windows 7 (und möglicherweise auch in anderen Betriebssystemen) muss der Benutzer das Zeigegerät oder die Finger zwischen Gesten vom Bildschirm nehmen. Zum Drehen und Zoomen eines Bildes sind beispielsweise folgende Schritte erforderlich:
    • Führen Sie die Drehgeste durch.

    • Nehmen Sie Ihre Finger vom Bildschirm.

    • Berühren Sie den Bildschirm wieder mit den Fingern und führen Sie die Zoomgeste durch.

  3. Unter Windows 7 (und möglicherweise auch anderen Betriebssystemen) generieren die Dreh- und Zoomgesten nicht immer eine Aktualisierungsphase, wenn die Geste sehr schnell durchgeführt wird.

  4. Windows 7 Starter Edition bietet keine Multitouch-Unterstützung. Einzelheiten finden Sie im AIR Labs-Forum: http://forums.adobe.com/thread/579180?tstart=0

  5. Auf Mac OS 10.5.3 und höher ist Multitouch.supportsGestureEvents immer true , auch wenn die Hardware keine Gestenereignisse unterstützt.