«Псевдо» смахивание в Createjs для мобил / планшетов - PullRequest
0 голосов
/ 11 октября 2019

Я работал над проектом, в котором я хотел иметь возможность вращать игровой объект, проводя пальцем во время работы на планшете / мобильном устройстве. Насколько я знаю, в режиме Createjs Touch еще не существует специального метода, позволяющего выполнять смахивание, но я решил что-то вроде хака ...

var active = false;
var firstX, runningX, dx;
var star = this.star;

createjs.Touch.enable(stage);
stage.preventSelection = false;
this.stage.addEventListener("stagemousedown", initActive); 
this.stage.addEventListener("stagemousemove", swiping);
this.stage.addEventListener("stagemouseup", endActive); 

function initActive(){
    this.active = true;
    this.firstX = stage.mouseX;

}

function swiping(){
    if(this.active){
        this.runningX = stage.mouseX;
        this.dx = this.firstX - this.runningX;
        star.rotation = this.dx;
    }   
}

function endActive(){
    this.active = false;
}

Воткод в действии ... http://www.e -nimation.com / HTML5 / swipeCode / Swiping.html Я изначально включил функцию тиков ...

createjs.Ticker.addEventListener("tick", rotating);
function rotating(){
    console.log("star rotation = "+star.rotation);
    if(this.active) star.rotation = this.dx;
}

, но это не такКажется, это необходимо.

Я надеюсь, что кто-то найдет это полезным. Не стесняйтесь вносить изменения, изменять, комментировать, выбрасывать окна и т. Д.

ПЕРЕСМОТР:

Я заметил, что с помощью приведенного выше кода вращающийся объект (в данном случае звезда) отскакивает назадс поворотом нуля каждый раз, когда вызывается функция stagemousedown. Вот исправленный код ...

var active = false;
var firstX, runningX, dx, startRotation;
var star = this.star;

createjs.Touch.enable(stage);
stage.preventSelection = false;
this.stage.addEventListener("stagemousedown", initActive); 
this.stage.addEventListener("stagemousemove", swiping);
this.stage.addEventListener("stagemouseup", endActive); 

function initActive(){
    this.active = true;
    this.firstX = stage.mouseX;
        this.startRotation = star.rotation; 
}

function swiping(){
    if(this.active){
        this.runningX = stage.mouseX;
        this.dx = this.firstX - this.runningX;
        star.rotation = this.dx + this.startRotation;
    }   
}

function endActive(){
    this.active = false;
}

Он учитывает новое вращение вращающегося объекта, а не сбрасывает его в ноль.

...