Flash: нумерация страниц с помощью XML - PullRequest
1 голос
/ 17 ноября 2010

(работает в AS2.0 из-за ограничений проигрывателя)

В моем приложении Flash я рисую данные из XML.Эти данные, например, состоят из 6 строк на одном языке, но могут быть 20 на другом языке.

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

Какие у меня есть варианты, чтобы получить эффект «страницы»?

1 Ответ

0 голосов
/ 22 ноября 2010

Вы можете рассчитать общее количество символов, которые могут поместиться на странице. Затем используйте подстроку, чтобы получить текст для каждой страницы, пока не дойдете до конца строки xml. Поместите каждую строку страницы в массив и просто измените текст в текстовом поле, когда пользователь нажимает стрелку, используя шаблон типа итератора.

Редактировать на основании комментария:

Ах, я понимаю, что вы говорите. Хорошо, вот более грубый, посимвольный метод для создания массива текстовых полей на или около указанной высоты.

var pageIndex = 0;
var maxHeight = 300;
var copy = "Some super long chunk of text here";

var pages = [];

function parsePages()
{
    for(var i = 0; i < copy.length; i++)
    {
        if(pages.length == 0) createPage(0);

        pages[pageIndex].text += copy.charAt(i);
        pages[pageIndex]._height = pages[pageIndex].textHeight;

        if(pages[pageIndex]._height >= maxHeight)
        {
            pageIndex++;
            createPage(pageIndex);
        }
    }
}

function createPage(index)
{
    this.createTextField("page_"+index,this.getNextHighestDepth(),0,0,300,12);
    this["page_"+index].multiline = true;
    this["page_"+index].wordWrap = true;
    this["page_"+index].font = "Arial";
    this["page_"+index].size = 10;
    this["page_"+index].text = "";

    pages.push(this["page_"+index]);
}

parsePages();
...