Class Multimover

java.lang.Object
eu.pedu.lib20s.canvasmanager.Multimover

public class Multimover
extends java.lang.Object
Instance třídy Multimover je jedináček sloužící k přesunu několika grafických objektů zároveň. Obdobně jako CanvasManager přijímá prostřednictvím přesunových metod do správy objekty, kterými pak po plátně pohybuje.

Tyto objekty musí být typu IMovable. Je-li objekt dokonce typu IMultimovable, tak poté, co objekt přesune do zadané cílové pozice, zavolá jeho metodu IMultimovable.moved(), která může provést libovolnou akci (většinou znovu předá objekt multipřesouvači, aby jej přesunul do další pozice).

Přesouvané objekty, které nebyly dosud zobrazovány, budou jako vedlejší efekt metody přidány mezi zobrazované.

  • Method Summary

    Modifier and Type Method Description
    double getFrequency()
    Vrátí frekvenci překreslování, tj. počet překreslení za sekundu.
    static Multimover getInstance()
    Vrátí multipřesouvač (jediný existující) s implicitní periodou (50 ms).
    IMovable[] getMoved()
    Vrátí pole se všemi právě přesouvanými objekty.
    int getPeriod()
    Vrátí hodnotu periody = počet milisekund, které uplynou mezi dvěma následnými překresleními přesouvaných objektů.
    boolean isMoving​(IMovable object)
    Vrátí informaci o tom, je-li zadaný objekt mezi právě přesouvanými.
    void moveInTime​(double seconds, IMovable object, int xn, int yn)
    Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveInTime​(double seconds, IMovable object, int xn, int yn, java.util.function.Consumer<IMovable> whenMoved)
    Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveInTime​(double seconds, IMovable object, Position position)
    Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveInTime​(double seconds, IMovable object, Position position, java.util.function.Consumer<IMovable> whenMoved)
    Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveWithSpeed​(int speed, IMovable object, int xn, int yn)
    Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveWithSpeed​(int speed, IMovable object, int xn, int yn, java.util.function.Consumer<IMovable> whenMoved)
    Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveWithSpeed​(int speed, IMovable object, Position position)
    Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    void moveWithSpeed​(int speed, IMovable object, Position position, java.util.function.Consumer<IMovable> whenMoved)
    Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
    boolean stop​(IMovable object)
    Zastaví požadovaný objekt, tj. vyjme jej ze seznamu objektů, s nimiž pohybuje.
    void stopAll()
    Zastaví veškeré přesuny a zruší všechny plány dalších přesunů.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • getInstance

      public static Multimover getInstance()
      Vrátí multipřesouvač (jediný existující) s implicitní periodou (50 ms).
      Returns:
      Požadovaný multipřesouvač
    • getFrequency

      public double getFrequency()
      Vrátí frekvenci překreslování, tj. počet překreslení za sekundu. Frekvence překreslování může být i menší než 1.
      Returns:
      Frekvence překreslování.
    • getMoved

      public IMovable[] getMoved()
      Vrátí pole se všemi právě přesouvanými objekty. Vrácený seznam je však platný pouze v době volání. Vzápětí na to mohou být některé objekty dovezeny do svých cílových pozic a mohou seznam "opustit".
      Returns:
      Pole právě přesouvaných objektů.
    • getPeriod

      public int getPeriod()
      Vrátí hodnotu periody = počet milisekund, které uplynou mezi dvěma následnými překresleními přesouvaných objektů.
      Returns:
      Perioda překreslování v milisekundách.
    • isMoving

      public boolean isMoving​(IMovable object)
      Vrátí informaci o tom, je-li zadaný objekt mezi právě přesouvanými.
      Parameters:
      object - Objekt, na nějž se ptáme
      Returns:
      Byl-li mezi přesouvanými, vrátí true, jinak vrátí false
    • moveInTime

      public void moveInTime​(double seconds, IMovable object, Position position)
      Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      seconds - Doba, kterou bude přesun trvat, v sekundách
      object - Přesouvaný objekt
      position - Požadovaná cílové pozice
    • moveInTime

      public void moveInTime​(double seconds, IMovable object, int xn, int yn)
      Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      seconds - Doba v sekundách, po kterou bude přesun trvat
      object - Přesouvaný objekt
      xn - Vodorovná souřadnice cílové pozice
      yn - Svislá souřadnice cílové pozice
    • moveWithSpeed

      public void moveWithSpeed​(int speed, IMovable object, Position position)
      Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      speed - Počet bodů, o které se objekt přesune za sekundu
      object - Přesouvaný objekt
      position - Požadovaná cílové pozice
    • moveWithSpeed

      public void moveWithSpeed​(int speed, IMovable object, int xn, int yn)
      Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      speed - Počet bodů, o které se objekt přesune za sekundu
      object - Přesouvaný objekt
      xn - Vodorovná souřadnice cílové pozice
      yn - Svislá souřadnice cílové pozice
    • moveInTime

      public void moveInTime​(double seconds, IMovable object, Position position, java.util.function.Consumer<IMovable> whenMoved)
      Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      seconds - Doba, kterou bude přesun trvat, v sekundách
      object - Přesouvaný objekt
      position - Požadovaná cílové pozice
      whenMoved - Akce, která se má provést po dokončení přesunu
    • moveInTime

      public void moveInTime​(double seconds, IMovable object, int xn, int yn, java.util.function.Consumer<IMovable> whenMoved)
      Za zadanou dobu přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      seconds - Doba v sekundách, po kterou bude přesun trvat
      object - Přesouvaný objekt
      xn - Vodorovná souřadnice cílové pozice
      yn - Svislá souřadnice cílové pozice
      whenMoved - Akce, která se má provést po dokončení přesunu
    • moveWithSpeed

      public void moveWithSpeed​(int speed, IMovable object, Position position, java.util.function.Consumer<IMovable> whenMoved)
      Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      speed - Počet bodů, o které se objekt přesune za sekundu
      object - Přesouvaný objekt
      position - Požadovaná cílové pozice
      whenMoved - Akce, která se má provést po dokončení přesunu
    • moveWithSpeed

      public void moveWithSpeed​(int speed, IMovable object, int xn, int yn, java.util.function.Consumer<IMovable> whenMoved)
      Zadanou rychlostí přesune zadaný posuvný objekt do zadané cílové pozice, přičemž v případě, že přesouvaný objekt nebyl dosud zobrazován, bude jako vedlejší efekt přidán mezi zobrazované.
      Parameters:
      speed - Počet bodů, o které se objekt přesune za sekundu
      object - Přesouvaný objekt
      xn - Vodorovná souřadnice cílové pozice
      yn - Svislá souřadnice cílové pozice
      whenMoved - Akce, která se má provést po dokončení přesunu
    • stop

      public boolean stop​(IMovable object)
      Zastaví požadovaný objekt, tj. vyjme jej ze seznamu objektů, s nimiž pohybuje. Pro příští rozpohybování tohoto objektu bude potřeba znovu požádat multipřesouvač o jeho přesunutí.
      Parameters:
      object - Zastavovaný objekt
      Returns:
      Informace o tom, byl-li objekt mezi přesouvanými
    • stopAll

      public void stopAll()
      Zastaví veškeré přesuny a zruší všechny plány dalších přesunů.