przeciągalny deseń

12

Chcę osiągnąć coś w rodzaju nieskończonego przeciągnięcia, takiego jak ten w Konva js. Czy ktoś może mi w tym pomóc. Próbuję różnych rzeczy, ale żadne z nich nie było w porządku. Jestem nowy w p5js i javascript. Proszę o wszelkie wskazówki. Tylko ten element uniemożliwia mi ukończenie całego projektu.

var grid;
var current_img;
var BgCat1 = [];
var layerOne;
let show_grid = false;
Michał Mi
źródło
2
Jestem zdezorientowany co do tego, co próbujesz zrobić. Czy chcesz, aby siatkę można było przeciągać tak jak w przykładzie, w nieskończoność?
Quillbert Q.
tak .. chcę, aby siatkę można było przeciągać jak na przykładzie
Michał Mi

Odpowiedzi:

7

Może być bardziej eleganckie rozwiązanie, ale tutaj rysuję dodatkową komórkę po każdej stronie siatki, aby obsłużyć zawijanie, więc siatka 12x12 z widocznym 10x10. Zobacz, jak działa tutaj: https://editor.p5js.org/rednoyz/full/uJCADfZXv

let dim = 10, sz;
let xoff = 0, yoff = 0;

function setup() {
  createCanvas(400, 400);
  sz = width/ dim;
}

function mouseDragged() {
  xoff += mouseX - pmouseX;
  yoff += mouseY - pmouseY;
}

function draw() {
  background(255);

  for (let i = 0; i < dim+2; i++) {
    for (let j = 0; j < dim+2; j++) {

      let x = ((xoff + j * sz) % (width+sz)) - sz;
      if (x < -sz) x += width+sz;

      let y = ((yoff + i * sz) % (height+sz)) - sz;
      if (y < -sz) y += height+sz;

      rect(x, y, sz, sz);
      text(i * 10 + j, x + sz/2, y + sz/2);
    }
  }
}
rednoyz
źródło
Można również umieścić if((mouseX < width && mouseX > 0)&&(mouseY < height && mouseY > 0))na mouseDragged()funkcji do pracy tylko na płótnie przeciąganie
darcane
czegokolwiek jeszcze szukasz w tej odpowiedzi, @ michał-mi?
rednoyz
Odpowiadałem na prośbę pytającego o dodatkowy kod, który został później usunięty
rednoyz