Как получить координаты экрана в обработке - PullRequest
1 голос
/ 29 марта 2011

Я использую Обработка для создания проекта.
У меня есть эскиз (фактически текст) на доске эскизов с помощью функции draw.
Я хочу получить экранные координаты каждого словатекст, чтобы сделать некоторые другие интересные вещи.

Я не знаю, какую функцию я могу использовать для получения, возврата координат экрана.

Может ли кто-нибудь помочь в этом.Я буду признателен за вашу помощь.

Спасибо

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Надеюсь, я правильно понял вашу проблему, и следующий скриншот объясняет, как вы можете найти решение.Это довольно быстро и в основном зависит от ручного позиционирования слова.Прежде всего я разбил весь текст на отдельные слова;хранится в массиве myWords.
В цикле draw я использую две переменные - xPos и yPos - для представления воображаемого курсора, который перемещается по экрану.Предложение if проверяет, выпадет ли текущее слово из области эскиза (включая отступ):

        float xPosEnd = xPos + textWidth (myWords[i]);

Если это так, курсор переместится в начало следующей строки.

        if (xPosEnd > width - PADDING_X) {
            ...

Прямо сейчас расстояние зависит от мыши, а высота строки фиксирована;но также может легко быть динамичным.Вы можете использовать переменные xPos и yPos, чтобы поиграть с позициями слов.Кроме того, xPosEnd указывает конечное положение слова.Как я уже сказал, этот подход довольно быстр и может применяться на уровне персонажа.

Сценарий ручного позиционирования текста

public static final int FONT_SIZE = 20;
public static final float LINE_HEIGHT = FONT_SIZE * 1.3f;
public static final float PADDING_X = 25;
public static final float PADDING_Y = 15;

PFont font;
String myText;
String[] myWords;

float spacing = 5;

void setup () {
    size (480, 320);
    smooth ();

    font = createFont ("Arial", FONT_SIZE);
    textFont (font);

    myText = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, ";
    myText += "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ";
    myText += "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ";
    myText += "nisi ut aliquip ex ea commodo consequat.";

    myWords = myText.split (" ");
}

void draw () {

    background (0);

    float xPos = PADDING_X;
    float yPos = PADDING_Y + FONT_SIZE;

    // For every word in the text
    for (int i=0; i < myWords.length; i++) {

        // Calculate the expected end position of 
        // the current word in this line
        float xPosEnd = xPos + textWidth (myWords[i]);

        // Check if word is not to long 
        // for current screen bounds. If...
        if (xPosEnd > width - PADDING_X) {
            // Set the cursor to the beginning 
            // of the next line
            xPos = PADDING_X;
            yPos += LINE_HEIGHT;
        }

        // Display word at xPos-yPos
        text (myWords[i], xPos, yPos);

        // Move the cursor to the right for the 
        // next word in list
        xPos += textWidth (myWords[i]) + spacing;
    }
}

void mouseMoved () {
    spacing = map (mouseX, 0, width, 0, 40);
}
0 голосов
/ 29 марта 2011

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

Может быть, вы ищете screen Системная переменная

Описание Системная переменная, которая хранит размеры компьютера экран. Например, если текущий разрешение экрана 1024х768, screen.width равно 1024 и screen.height 768. Эти размеры полезны при экспорте в полноэкранный режим приложения.


Пример программы

println ("Width:" + screen.width);
println ("Height:" + screen.height);

Для получения дополнительной информации всегда обращайтесь к Language API


Редактировать

Но я ищу способы найти координаты любого объекта, который является обращается на доске эскиза. Как сказать, если у меня есть текст, я хочу знать начальная и конечная координаты каждого слова в тексте

Какой метод вы используете для рисования текста? Какой метод вы будете использовать для анимации текста? Это зависит от методов, которые вы используете, чтобы найти координаты.

Если вы использовали метод text, то вы указали координаты в качестве параметров
например: text(data, x, y)

Если вы анимировали текст, чтобы переместить 5 координат вправо, тогда, если начальная координата x была 10, тогда координата x теперь будет 15.

...