почему я не могу нарисовать квадрат на холсте?

Я не совсем уверен, что вы пытаетесь сделать с SingUpError (вы имеете в виду SignUpError?), но это моя попытка. В основном я перемещаю перечисление из func, и я делаю func возвратом String

class SingUpError  {
    enum ErrorMessage: String {
        case noName = "Name cannot be empty"
        case noLastName = "Last name cannot be empty"
        case noEmail = "Email cannot be empty"
        case noPassword = "Password cannot be empty"
    }

    func errorMessage(name: String?, lastName: String?,email: String?, password: String?) -> String? {
        var message: String?

        if name == nil || name.isEmpty {
            message = ErrorMessage.noName.rawValue
        } //else if lastName...

        return message
    }
}

, а затем в submitData

if let error = vm.errorMessage(name: name, lastName: lastName, email: email, password: password) {
     nameErrLbl.text = error
}
1
задан Dulara Malindu 20 January 2019 в 03:01
поделиться

1 ответ

Это происходит потому, что ваш snake является массивом объектов. Вам нужно либо превратить это в один объект, чтобы ваш код работал, либо использовать индекс для выбора объекта внутри.

ctx.fillRect(snake[0].x-unit/2, snake[0].y-unit/2, unit, unit);

Также обратите внимание, что для правильного центрирования вашей змеи вам необходимо вычесть unit/2 из координат x и y.

Вы также можете удалить настройку размеров холста в вашем коде, так как она устанавливается, когда вы определяете атрибуты height и width для вашего элемента canvas.

См. Рабочий пример ниже:

//declare global variables
const canvas = document.querySelector('#canvas');

//set canvas context
const ctx = canvas.getContext('2d');

//put canvas dimensions into variables
const cvsW = canvas.width;
const cvsH = canvas.height;

//create snake unit
const unit = 16;

//create snake and set starting position
let snake = [{
  x: cvsW / 2,
  y: cvsH / 2
}];


ctx.fillStyle = 'lime';
ctx.fillRect(snake[0].x - unit / 2, snake[0].y - unit / 2, unit, unit);
body {
  background-color: #333;
}

#canvas {
  background-color: #4d4d4d;
  display: block;
  margin: auto;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}
<canvas id="canvas" width="768" height="512"></canvas>

0
ответ дан Nick Parsons 20 January 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: