官术网_书友最值得收藏!

Detecting whether or not a device supports multitouch

When developing projects which target the Android operating system, it is always a good idea to make sure that multitouch is actually supported on the device. In the case of an Android phone, this will probably always be the case, but what about a Google TV or AIR for TV device? Many of these are also Android-based yet most televisions do not have any touch control whatsoever. Never assume the capabilities of any device.

How to do it...

We will need to use internal classes to detect whether or not multitouch is supported:

  1. First, import the following classes into your project:
    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    import flash.display.Stage;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.ui.Multitouch;
    
  2. Declare a TextField and TextFormat object to allow visible output upon the device:
    private var traceField:TextField;
    private var traceFormat:TextFormat;
    
  3. We will now set up our TextField, apply a TextFormat, and add it to the DisplayList. Here, we create a method to perform all of these actions for us:
    protected function setupTextField():void {
    traceFormat = new TextFormat();
    traceFormat.bold = true;
    traceFormat.font = "_sans";
    traceFormat.size = 44;
    traceFormat.align = "center";
    traceFormat.color = 0x333333;
    traceField = new TextField();
    traceField.defaultTextFormat = traceFormat;
    traceField.selectable = false;
    traceField.mouseEnabled = false;
    traceField.width = stage.stageWidth;
    traceField.height = stage.stageHeight;
    addChild(traceField);
    }
    
  4. Then, simply invoke Multitouch.supportsGestureEvents and Multitouch.supportsTouchEvents to check each of these capabilities as demonstrated in the following method:
    protected function checkMultitouch():void {
    traceField.appendText(String("Gestures: " + Multitouch.supportsGestureEvents) + "\n");
    traceField.appendText(String("Touch: " + Multitouch.supportsTouchEvents));
    }
    
  5. Each of these properties will return a Boolean value of true or false, indicating device support as shown here:

How it works...

Detecting whether the device supports either touch or gesture events will determine how much freedom you, as a developer, have in refining the user experience. If either of these items returns as false, then it is up to you to provide (if possible) an alternative way for the user to interact with the application. This is normally done through Mouse events:

  • Touch events: Basic interactions such as a single finger tap.
  • Gesture events: More complex interpretations of user interaction such as pinch, zoom, swipe, pan, and so forth.

There's more...

It is important to note that while a specific device may support either gesture events or touch events, when using Flash Platform tools, we must set the Multitouch.inputMode to one or the other specifically.

主站蜘蛛池模板: 沁水县| 怀安县| 静安区| 平罗县| 宁海县| 东兰县| 尼玛县| 沙湾县| 张家川| 府谷县| 宝坻区| 石景山区| 双桥区| 象州县| 阳山县| 金乡县| 武宣县| 罗田县| 松原市| 浮梁县| 静海县| 六盘水市| 永寿县| 长葛市| 明星| 庆阳市| 日土县| 高唐县| 麦盖提县| 巨野县| 手机| 济南市| 罗平县| 青冈县| 枞阳县| 林州市| 浦北县| 平凉市| 闸北区| 惠东县| 江口县|