Заставить объект вернуть определенное свойство, если на него не ссылаются - PullRequest
0 голосов
/ 06 июля 2019

Я начал создавать HTML5-игру на холсте. У меня есть базовый HTML-документ с холстом. Проблема, с которой я сталкиваюсь, связана с JavaScript. У меня есть объект в качестве «контроллера» моей игры с именем Pixels. Внутри объекта у меня есть объект с именем canvas, который имеет 1 свойство с именем ctx, которое возвращает ctx холста (который я в настоящее время получаю непосредственно из document.getElementById("Pixels-Canvas").getContext("2d). Проблема заключается в следующем: скажем, я вызываю Pixels.canvas.ctx это вернуло бы 2-й контекст холста, просто. Теперь допустим, что я вызываю Pixels.canvas. Как бы я сделал это возвращение document.getElementById("Pixels-Canvas"), не добавляя свойство canvas к объекту canvas, делая вызов следующим образом: Pixels.canvas.canvas

Что у меня есть:

var Pixels =
{
  canvas:
  { 
    ctx:
    document.getElementById("Pixels-Canvas").getContext("2d")
  }
};

Pixels.canvas Это не то, что я хочу, поскольку это не дает мне сам холст


Чего я не хочу:

var Pixels =
{
  canvas:
  {
    canvas:
    document.getElementById("Pixels-Canvas"),

    ctx:
    document.getElementById("Pixels-Canvas").getContext("2d")
  }
};

Pixels.canvas.canvas Возвращает холст, но canvas.canvas? Некрасиво.

Примечание

Я думаю, что до сих пор меня неправильно поняли. Мне нужен вызов Pixels.canvas для возврата холста и Pixels.canvas.ctx для возврата ctx холста.


РЕШЕНИЕ

Я решил свою проблему. Смотрите мой ответ ниже для деталей

Ответы [ 4 ]

1 голос
/ 06 июля 2019

Что с этим не так?:

var Pixels = {
  canvas: document.getElementById("Pixels-Canvas"),
  ctx: this.getContext("2d")
};

Затем вы можете получить действительный элемент canvas DOM с Pixels.canvas и контекст с Pixels.ctx.

0 голосов
/ 06 июля 2019

Я решил свою проблему.

var Pixels =
{
  canvas:
  document.getElementById("Pixels-Canvas"),
};

Pixels.canvas.ctx = Pixels.canvas.getContext("2d");

Теперь Pixels.canvas возвращает холст, а Pixels.canvas.ctx возвращает контекст!

0 голосов
/ 06 июля 2019

Вы можете использовать Pixels.canvas.ctx.canvas.

Вызов getContext("2d") возвращает CanvasRenderingContext2D , который имеет свойство canvas , которое ссылается на исходный элемент canvas.

Тем не менее, я согласен с рекомендацией Скотта Маркуса.

0 голосов
/ 06 июля 2019

Я думаю, что это невозможно, а также не имеет смысла для меня, так как это может привести к путанице, если кто-то другой возьмёт ваш код. Лучший способ - указать свойство canvas для canvas и canvasCtx или ctx для контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...