class Main {
 
    static function main() {
        var text = "Два друга, поднимаясь в горы, застряли на вершине из-за бурана.\nИсикура при подъеме получил ранение и, думая, что умирает, рассказал Асаи свою самую страшную тайну.\n\n";
        var lines = parseText(text, 300, true);
        for (line in lines) trace(line);
 
        var text = "Но рядом оказалось убежище и, добравшись до туда, они смогли вызвать помощь. Буран не прекращался, и теперь они вдвоем в пустом доме должны ждать спасение.\n\nУ Исикуры есть шанс выжить. Есть ли он у Асаи?";
        var lines = parseText(text, 200, false);
        for (line in lines) trace(line);
    }
 
    static function parseText(text:String, width:Float, wordWrap:Bool):Array<String> {
        var lines:Array<String> = [];
        var lastChance = -1;
        var lastBreak = 0;
        var i = 0;
 
        while (i < text.length) {
            var line = text.substring(lastBreak, i + 1);
            var w = line.length * 10; //достаточно заменить на получение длины строки в пикселях
            if (w > width) {
                if (lastChance < 0 || !wordWrap) lastChance = i - 1;
                lines.push(text.substring(lastBreak, lastChance + 1));
                i = lastBreak = lastChance + 1;
                lastChance = -1;
            }
 
            var char = text.substring(i, i + 1);
            if (char == " ") lastChance = i;
            else if (char == "\n") {
                lines.push(text.substring(lastBreak, i + 1));
                lastBreak = i + 1;
                lastChance = -1;
            }
            i++;
        }
        var end = text.substring(lastBreak);
        if (end != "" && end != " ") lines.push(end);
        return lines;
    }
 
}