Базовая точка по умолчанию для отображаемого объекта в Corona

Я пытаюсь понять эти ориентиры в Corona. Говорят, что контрольной точкой по умолчанию является центр объекта, однако позиция x центра textObject не равна 100, а 150, когда я запускаю этот код:

  local textObject = display.newText(  "Hello World!", 100, 100, nil , 20 )

Я отобразил эту позицию с событием касания на экране и распечатал положение x и y затронутых мест:

  local function onScreenTouch(event)
      print("x: "..event.x.."  y: "..event.y);
  end
  Runtime:addEventListener("tap", onScreenTouch)

person Figen Güngör    schedule 23.01.2013    source источник


Ответы (1)


Очень хороший вопрос, и это то, что долгое время сводило меня с ума.

По умолчанию эталонной точкой является display.CenterReferencePoint, если вы не передаете X, Y в качестве параметров вызову API. В большинстве случаев (для прямоугольников) передача X, Y становится верхней левой контрольной точкой только для начального рисования объекта. Линии, конечно, вы проходите через конечные точки, а для кругов ваши X, Y являются центром.

myRect = display.rect(X, Y, width, height)  -- X, Y = Top, Left

в этом случае X и Y представляют верхний левый угол поля, но впоследствии, если вы это сделаете:

myRect.x = X -- X = center of object
myRect.y = Y -- Y = center of object

то теперь вы используете центральную контрольную точку, если вы явно не измените ее обратно на что-то другое. Теперь, поскольку это сбивает с толку, я обычно делаю так:

myRect = display.rect(0,0, width, height)
myRect.x = 100
myRect.y = 100

точно так же, как я действительно позиционирую вещи только с помощью центральной точки.

Надеюсь, это объясняет это.

Роб

person Rob Miracle    schedule 23.01.2013