TouchEvents для Flash Builder 4.5

#apache-flex #ios #flex4 #touch #flash-builder

#apache-flex #iOS #flex4 #коснитесь #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:

Я бы порекомендовал вам взглянуть на API и примеры. В этом случае, похоже, вам не хватает Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; объявления.

Комментарии:

1. При определении Multitouch.inputMode ничего не происходит по-другому. есть ли способ отладки событий касания на компьютере без использования сенсорного устройства?

2. Пожалуйста, обратитесь к примеру. Попробуйте использовать пример строка за строкой, чтобы увидеть, работает ли это, затем выясните, чего не хватает в вашем коде.