Sorun Giderme

Flash Player 10.1 ve üstü, Adobe AIR 2 ve üstü

Dokunma girdisi için donanım ve yazılım desteği hızla değişmektedir. Bu başvuru, çoklu dokunma desteği bulunan işletim sistemi ve yazılım kombinasyonunu içeren her aygıtın bir listesini tutmaz. Ancak, uygulamanızın çoklu dokunma desteğine sahip bir aygıta konuşlandırılmış olup olmadığını belirlemek için keşif API’sini kullanma kurallarını sağlar ve ActionScript kodunuzun sorunlarını gidermek için ipuçları verir.

Flash çalışma zamanları, dokunma olaylarına aygıtın, işletim sisteminin veya içindeki yazılımların (tarayıcı gibi) çalışma zamanına geçirdiği bilgilere göre yanıt verir. Yazılım ortamına bu bağımlılık, çoklu dokunma uyumluluğunu belgelemeyi zorlaştırır. Bazı aygıtlar hareket veya dokunma hareketini başka bir aygıttan farklı bir şekilde yorumlar. Döndürme, aynı anda dönen iki parmakla mı tanımlanıyor? Bir parmakla döndürme işlemi, ekranda bir daire çiziyor mu? Donanım ve yazılım ortamına bağlı olarak, döndürme hareketi tamamen farklı bir şey olabilir. Bu yüzden aygıt, işletim sistemine kullanıcı girdisini söyler, ardından işletim sistemi bu bilgileri çalışma zamanına geçirir. Çalışma zamanı bir tarayıcının içindeyse, tarayıcı yazılımı zaman zaman hareket veya dokunma olayını yorumlar ve girdiyi çalışma zamanına geçirmez. Bu davranış “kısayol tuşları”nın davranışına benzer: Flash Player’a tarayıcı içerisinde bir şey yaptırmak için belli bir tuş kombinasyonu kullanmaya çalışırsınız ve tarayıcı bunun yerine bir menü açmaya devam eder.

Ayrı API ve sınıflar, belli işletim sistemleriyle uyumlu olmadıklarını belirtir. Ayrı API girişlerini buradan Multitouch sınıfıyla başlayarak keşfedebilirsiniz: http://help.adobe.com/tr_TR/FlashPlatform/reference/actionscript/3/flash/ui/Multitouch.html.

Yaygın hareket ve dokunma açıklamaları şunlardır:
Kaydır
Bir parmağı soldan sağa veya sağdan sola taşıyın. Bazı aygıtlar iki parmakla kaydırma gerektirir.

Döndür
İki parmakla dokunun ve bir daire etrafında hareket ettirin (her ikisi de bir yüzey üzerinde aynı anda hayali bir daireyi takip ediyormuş gibi). Pivot noktası, iki parmağın dokunduğu noktaların arasındaki orta noktada belirlenir.

Kaydır
Üç parmağı soldan sağa veya sağdan sola, yukarıdan aşağıya veya aşağıdan yukarıya hızla taşıyın.

Yakınlaştır
İki parmakla dokunun, sonra yakınlaştırmak için bunları birbirinden ayırın ve uzaklaştırmak için birbirine yaklaştırın.

Bastır-tıklat
Bir parmakla taşırken veya basarken, diğer parmakla yüzeyi tıklatın.

Her aygıt, aygıtın desteklediği el hareketleri ve bir hareketin bu aygıtta nasıl gerçekleştirileceği ile ilgili ayrı belgelere sahiptir. Genellikle, işletim sistemine bağlı olarak kullanıcı, el hareketleri arasında tüm parmaklarının aygıtla temasını kesmelidir.

Uygulamanızın dokunma veya hareket olaylarına yanıt vermediğini görürseniz, aşağıdaki testleri yapın:
  1. InteractiveObject sınıfından alınan bir nesne sınıfına bağlı dokunma veya hareket olayları için olay dinleyicileriniz var mı? Dokunma ve hareket olaylarını yalnızca InteractiveObjects sınıfı örnekleri dinleyebilir

  2. Uygulamanızı Flash Professional CS5’te mi test ediyorsunuz? Öyleyse, uygulamayı yayınlamayı ve test etmeyi deneyin; çünkü Flash Professional etkileşimi engelleyebilir.

  3. İlk olarak basit başlayın ve neyin işe yaradığını görün (aşağıdaki kod örneği Multitouch.inputMode API girişinden alınmıştır:

    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); 
    }

    Dikdörtgene dokunun. Bu örnek işe yararsa, ortamınızın basit bir tıklatmayı desteklediğini anlarsınız. Bundan sonra daha karmaşık bir işlem deneyebilirsiniz.

    Hareket desteğini test etmek daha karmaşık bir işlemdir. Ayrı bir aygıt veya işletim sistemi herhangi bir hareket girdisini destekleyebilir veya hiçbirini desteklemeyebilir.

    Aşağıda yakınlaştırma hareketi için basit bir test vardır:

    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"; 
    }

    Aygıtta bir yakınlaştırma hareketi gerçekleştirin ve metin alanının Zoom is supported mesajıyla doldurulup doldurulmadığına bakın. Test uygulamasının herhangi bir kısmında hareket uygulayabilmeniz için olay dinleyici sahne alanına eklenir.

    Aşağıda yatay kaydırma hareketi için basit bir test vardır:

    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"; 
    }

    Aygıtta bir yatay kaydırma hareketi gerçekleştirin ve metin alanının Pan is supported mesajıyla doldurulup doldurulmadığına bakın. Test uygulamasının herhangi bir kısmında hareket uygulayabilmeniz için olay dinleyici sahne alanına eklenir.

    Bazı işletim sistemi ve aygıt kombinasyonları her iki hareketi de destekler. Bazıları yalnızca bir tanesini desteklerken bazıları hiçbirini desteklemez. Emin olmak için uygulamanızın dağıtım ortamını test edin.

Bilinen Sorunlar

Aşağıda dokunma girdisiyle ilgili bilinen sorunlar verilmiştir:
  1. Windows Mobile işletim sistemindeki Mobile Internet Explorer, SWF dosya içeriğini otomatik olarak yakınlaştırır:

    Bu Internet Explorer yakınlaştırma davranışı, SWF dosyasını barındıran HTML sayfasına aşağıdakiler eklenerek iptal edilir:

    <head> 
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"> 
    </head>
  2. Windows 7 (ve muhtemelen başka işletim sistemleri), kullanıcı el hareketleri arasında işaret aygıtını (veya parmaklarını) ekrandan kaldırmalıdır. Örneğin, bir görüntüyü döndürmek ve yakınlaştırmak için:
    • Döndür hareketini yapın.

    • Parmaklarınızı ekrandan kaldırın.

    • Parmaklarınızı ekrana geri koyun ve yakınlaştırma hareketini yapın.

  3. Windows 7'de (ve büyük ihtimalle diğer işletim sistemlerinde), kullanıcı hareketi çok hızlı bir şekilde gerçekleştirirse, döndür ve yakınlaştır hareketleri her zaman bir “güncelleme” aşaması oluşturmaz.

  4. Windows 7 Starter Edition çoklu dokunma olayını desteklemez. Ayrıntılar için bkz. AIR Laboratuarları Forumu: http://forums.adobe.com/thread/579180?tstart=0

  5. Mac OS 10.5.3 ve üstü sürümler için, Multitouch.supportsGestureEvents değeri donanımın hareket olaylarını desteklemediği durumlarda bile daima true’dur.