Почему преобразования влияют на объекты, которых не касается трансфо? - PullRequest
0 голосов
/ 29 ноября 2018

Я уже некоторое время работаю над этим кодом. Уже существует тема с тем же кодом , но тема кажется мертвой, и я до сих пор не могу найти способ решить мою проблему.Поиском я пришел спросить себя, почему setRotate, который я делаю на дуло, также влияет на корпус моего пистолета?Потому что setRotate делается только на носу ...

Мой код:

package canons;

import javafx.scene.Parent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;

public class Canon extends Parent {
    private int posX = 500, posY = 250;
    private double valeurAngle;
    private Rectangle buse; // nuzzle
    private Circle corps;
    //private Rotate rotate;

public Canon(Color couleurCorps, Color couleurBuse) {
    //rotate = new Rotate();
    this.getChildren().addAll(getBuse(), getCorps());
    getBuse().getTransforms().add(rotate);
    this.setTranslateX(posX);
    this.setTranslateY(posY);
}

public Rectangle getBuse() {
    if(buse == null) { // sécurité, évite de recréer plusieurs fois le même objet
        buse = new Rectangle();
        buse.setWidth(60);
        buse.setHeight(20);
        buse.setArcWidth(15); // extrémités arrondies
        buse.setArcHeight(30);
        buse.setFill(Color.BLACK);
        buse.setTranslateX(posX);
        buse.setTranslateY(posY - buse.getHeight() / 2);
    }
    return buse;
}

public Circle getCorps() {
    if(corps == null) { // sécurité, évite de recréer plusieurs fois le même objet
        corps = new Circle(20);
        corps.setTranslateX(posX);
        corps.setTranslateY(posY);
    }
    return corps;
}

public void orienter(double angle) {
    buse.setRotate(angle);
    //buse.setTranslateY(Math.sin(angle));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...