适用于Flash Builder 4.5的TouchEvents

时间:2011-05-05 08:09:39

标签: flex ios flex4 touch flash-builder

我已成功制作了我的第一个应用程序并将其导入我的iPhone,但我似乎无法让TouchEvents工作。我究竟做错了什么?这是我目前的代码:

package
{
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.MouseEvent;
    import flash.events.TouchEvent;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;

    public class TestIos extends Sprite
    {
        private var boll:Sprite = new Sprite;
        private var radius:Number = 40;

        public function TestIos()
        {
            super();

            // support autoOrients
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            this.addChild(boll);

            this.drawBoll();

            // Add events
            boll.addEventListener(TouchEvent.TOUCH_BEGIN,onTouchBegin);
            boll.addEventListener(TouchEvent.TOUCH_TAP,onTouchTap);
        }

        private function onTouchBegin(e:TouchEvent):void {
            var g:Graphics = boll.graphics;
            g.clear();
            g.beginFill(0xcc66cc,1);
            g.drawCircle(150,radius,radius);

            boll.scaleX = boll.scaleY = 1.25;

            boll.addEventListener(TouchEvent.TOUCH_END,onTouchEnds);
            boll.addEventListener(TouchEvent.TOUCH_MOVE,onTouchMove);
        }

        private function onTouchMove(e:TouchEvent):void {
            boll.x = e.stageX;
            boll.y = e.stageY;
        }

        private function onTouchTap(e:TouchEvent):void {
            var g:Graphics = boll.graphics;
            g.clear();
            g.beginFill(0x33cc33,1);
            g.drawCircle(150,radius,radius);

            boll.scaleX = boll.scaleY = 1;
        }

        private function onTouchEnds(e:TouchEvent):void {
            this.drawBoll();

            boll.removeEventListener(TouchEvent.TOUCH_MOVE,onTouchMove);
            boll.removeEventListener(TouchEvent.TOUCH_END,onTouchEnds);
        }

        private function drawBoll():void {
            var g:Graphics = boll.graphics;
            g.clear();
            g.beginFill(0x3399cc,1);
            g.drawCircle(150,radius,radius);

            boll.scaleX = boll.scaleY = 1;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我会推荐你​​look at the API and examples。在这种情况下,您似乎错过了Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;声明。