public MySprite1()
        {
            this.stage.scaleMode = StageScaleMode.NO_SCALE;

            var app = new MultitouchTransform.ApplicationCanvas();

            Func <TouchEvent, Movable> ToMovable =
                e =>
            {
                var k = this.labels.Keys.ToArray();
                var i = -1;

                foreach (var item in k)
                {
                    i++;

                    if (item == e.touchPointID)
                    {
                        break;
                    }
                }

                return(app.Movables[i]);
            };


            app.AttachToContainer(this);

            this.labelFormat  = new TextFormat();
            labelFormat.color = 0xACF0F2;
            labelFormat.font  = "Helvetica";
            labelFormat.size  = 11;

            this.dotCount = 0;

            this.dotsLeft                   = new TextField();
            this.dotsLeft.width             = 300;
            this.dotsLeft.defaultTextFormat = this.labelFormat;
            this.dotsLeft.x                 = 3;
            this.dotsLeft.y                 = 0;
            this.stage.addChild(this.dotsLeft);
            this.updateDotsLeft();


            Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

            this.graphics.beginFill(0x7f0000);
            this.graphics.drawRect(0, 0, DefaultWidth, DefaultHeight);

            // not interested in stage are we
            var u = app.ToSprite();

            u.touchBegin +=
                e =>
            {
                if (this.dotCount == Multitouch.maxTouchPoints)
                {
                    return;
                }

                //var dot = this.getCircle();
                //dot.x = e.stageX;
                //dot.y = e.stageY;
                //this.stage.addChild(dot);
                //dot.startTouchDrag(e.touchPointID, true);
                //this.dots[e.touchPointID] = dot;

                //++this.dotCount;

                var label = this.getLabel(e.stageX + ", " + e.stageY);
                label.x = 3;
                label.y = this.dotCount * LABEL_SPACING;
                this.stage.addChild(label);
                this.labels[e.touchPointID] = label;

                this.updateDotsLeft();
            };

            u.touchMove +=
                e =>
            {
                var label = this.labels[e.touchPointID];


                ToMovable(e).MoveTo(e.stageX, e.stageY);

                label.text = (e.touchPointID + ": " + e.stageX + ", " + e.stageY);
            };

            u.touchEnd +=
                e =>
            {
                //var dot = this.dots[e.touchPointID];
                var label = this.labels[e.touchPointID];

                //this.stage.removeChild(dot);
                this.stage.removeChild(label);

                //this.dots.Remove(e.touchPointID);
                this.labels.Remove(e.touchPointID);

                --this.dotCount;

                this.updateDotsLeft();
            };
        }
        public MySprite1()
        {
            this.stage.scaleMode = StageScaleMode.NO_SCALE;

            var app = new MultitouchTransform.ApplicationCanvas();

            Func<TouchEvent, Movable> ToMovable =
                e =>
                {

                    var k = this.labels.Keys.ToArray();
                    var i = -1;

                    foreach (var item in k)
                    {
                        i++;

                        if (item == e.touchPointID)
                            break;
                    }

                    return app.Movables[i];
                };


            app.AttachToContainer(this);

            this.labelFormat = new TextFormat();
            labelFormat.color = 0xACF0F2;
            labelFormat.font = "Helvetica";
            labelFormat.size = 11;

            this.dotCount = 0;

            this.dotsLeft = new TextField();
            this.dotsLeft.width = 300;
            this.dotsLeft.defaultTextFormat = this.labelFormat;
            this.dotsLeft.x = 3;
            this.dotsLeft.y = 0;
            this.stage.addChild(this.dotsLeft);
            this.updateDotsLeft();


            Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

            this.graphics.beginFill(0x7f0000);
            this.graphics.drawRect(0, 0, DefaultWidth, DefaultHeight);

            // not interested in stage are we
            var u = app.ToSprite();

            u.touchBegin +=
                e =>
                {
                    if (this.dotCount == Multitouch.maxTouchPoints)
                        return;

                    //var dot = this.getCircle();
                    //dot.x = e.stageX;
                    //dot.y = e.stageY;
                    //this.stage.addChild(dot);
                    //dot.startTouchDrag(e.touchPointID, true);
                    //this.dots[e.touchPointID] = dot;

                    //++this.dotCount;

                    var label = this.getLabel(e.stageX + ", " + e.stageY);
                    label.x = 3;
                    label.y = this.dotCount * LABEL_SPACING;
                    this.stage.addChild(label);
                    this.labels[e.touchPointID] = label;

                    this.updateDotsLeft();
                };

            u.touchMove +=
                e =>
                {
                    var label = this.labels[e.touchPointID];


                    ToMovable(e).MoveTo(e.stageX, e.stageY);

                    label.text = (e.touchPointID + ": " + e.stageX + ", " + e.stageY);
                };

            u.touchEnd +=
                e =>
                {
                    //var dot = this.dots[e.touchPointID];
                    var label = this.labels[e.touchPointID];

                    //this.stage.removeChild(dot);
                    this.stage.removeChild(label);

                    //this.dots.Remove(e.touchPointID);
                    this.labels.Remove(e.touchPointID);

                    --this.dotCount;

                    this.updateDotsLeft();
                };
        }