Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   мультитач (http://www.flasher.ru/forum/showthread.php?t=210091)

maxisglad 25.01.2015 22:24

мультитач
 
Добрые люди, столкнулся с такой проблемой, есть джойстик который управляет объектом и отдельно кнопка (стрелять например). Джойстик работает норм как ток нажимаю стрельнуть отменяется действие джойстика и кнопка стрельнуть не выполняет событие.

долез вроде Multitouch.inputMode = MultitouchInputMode.GESTURE; че делать с ним не пойму. уже вникаю вникаю.

ZackMercury 26.01.2015 00:32

А вы слушаете TouchEvent? Если вы слушаете MouseEvent.MOUSE_DOWN, то тогда неудивительно. Нужно слушать TouchEvent.

maxisglad 26.01.2015 01:15

да слушаю touchevent щас нашел пример через TOUCH_POINT по тихоньку получается но хочу более опытных людей так сказать направить меня в правильное плаванье

Добавлено через 24 минуты
Код AS3:

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
 
addEventListener(TouchEvent.TOUCH_BEGIN, eventTouchBegin);
addEventListener(TouchEvent.TOUCH_END, eventTouchEnd);
 
function eventTouchBegin(e:TouchEvent): void {
        if(e.type == "touchBegin"){
 
        }
        else{
 
        }
}

мне надо чтоб во время работы джойстика нажималась кнопка не врублюсь че дальше делать.

Zebestov 26.01.2015 03:01

Тебе поможет touchPointID (пример там глянь).

maxisglad 26.01.2015 03:12

вобщем получилось че хотел ток это так пробник надо как то уйти от имен. Подскажите что подкорректировать или более правильный способ реализации этой задачи.

Код AS1/AS2:

djostik.kontroler.x = djostik.kontrol_zone.width/2-djostik.kontroler.width/2;
djostik.kontroler.y = djostik.kontrol_zone.height/2-djostik.kontroler.height/2;
var massArray:Array;
massArray = [];
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
 
this.stage.addEventListener(TouchEvent.TOUCH_BEGIN, eventTouchBegin);
this.stage.addEventListener(TouchEvent.TOUCH_END, eventTouchEnd);
 
 
function eventTouchBegin(e:TouchEvent): void {
        if(e.type == "touchBegin"){
                        if(e.target.name == "kontroler"){
                                startPosition = e.stageX-startPositionCenterKontrolerX;
                                this.stage.addEventListener(TouchEvent.TOUCH_MOVE, eventMove);
                                massArray[e.touchPointID] = "kontroler";
                        }
                        else if(e.target.name == "attack"){
                                eventAttack();
                        }
 
        }
        else{
 
        }
}
 
function eventTouchEnd(e:TouchEvent): void {
                n += 1;
        ata.text = n +" : "+massArray[e.touchPointID];
                if(massArray[e.touchPointID] == "kontroler"){
                        this.stage.removeEventListener(TouchEvent.TOUCH_MOVE, eventMove);
                        djostik.kontroler.x = startPositionCenterKontrolerX-djostik.kontroler.width;
                        delete massArray[e.touchPointID];
                        timer.stop();
                }
}
 
function eventAttack(): void {
 
}
 
var centerJostika:Number = djostik.kontroler.x;
var moveActions:String = "center";
var timer:Timer = new Timer(10);
timer.addEventListener(TimerEvent.TIMER, eventTimer);
var rightEndPosition:Number = djostik.x+djostik.width;
var startPosition:Number;
var startPositionCenterKontrolerX:Number = djostik.x+djostik.kontroler.x+djostik.kontroler.width/2;
 
var n:Number = 0;
function eventMove(e:TouchEvent): void {
//function eventMove(e:MouseEvent): void {
 
        if((e.stageX-startPosition > djostik.x) && (e.stageX-startPosition < rightEndPosition)){
                djostik.kontroler.x = e.stageX-startPosition-djostik.kontroler.width;
                if(djostik.kontroler.x < centerJostika/2){
                        moveActions = "left";
                }
                else if(djostik.kontroler.x > centerJostika+centerJostika/2){
                        moveActions = "right";
                }
                else{
                        moveActions = "center";
                }
                timer.start();
        }
}
 
 
function eventTimer(e:TimerEvent):void{
        switch(moveActions){
                case "right":
                                        telo.x +=5;
                                        break;
                case "left":
                                        telo.x -=5;
                                        break;
                case "center":
                                        timer.stop();
                                        break;
        }
}

Добавлено через 7 минут
Спасиб уже получилось завтра доковыряю до норм вида.

Котяра 26.01.2015 16:55

Код AS3:

var centerJostika:Number = djostik.kontroler.x;

Сразу хочется стукнуть чем нибудь тяжёлым.
Уж опеределитесь jostik,djostik или всё таки joystick


Часовой пояс GMT +4, время: 22:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.