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

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.

主站蜘蛛池模板: 独山县| 五寨县| 肥城市| 平邑县| 赤城县| 麻城市| 大埔区| 庆安县| 广东省| 巴林右旗| 大冶市| 天水市| 郯城县| 榕江县| 河津市| 泊头市| 德阳市| 攀枝花市| 乌苏市| 包头市| 冀州市| 黎城县| 开化县| 北安市| 扎兰屯市| 大丰市| 阜宁县| 三都| 中宁县| 马山县| 定州市| 木里| 襄樊市| 绥滨县| 五峰| 迁西县| 富顺县| 井陉县| 四会市| 阳城县| 丹阳市|