2016-03-11 2 views
0

Я делаю журнал изменений для своего приложения, и я вставил кучу текста в display.newText. Есть ли ограничение на количество символов display.newText, может быть, это проблема в ScrollView? Мой код:ScrollView или NewText не бесконечен

local widget = require("widget") 
    scrollView = widget.newScrollView 
    { 
     hideBackground = true, 
     hideScrollBar = true, 
     left = 0, 
     top = 170, 
     width = display.contentWidth, 
     height = contH - 300, 
     topPadding = 150, 
     bottomPadding = 20, 
     horizontalScrollDisabled = true, 
     verticalScrollDisabled = false, 
    } 

ChangeLogText = [[ ...a bunch of text here... ]] 

ChangeLog = display.newText(ChangeLogText, contW/2, 4730, contW - 100, 0, "Fonts/visitor1.ttf", 40) 
scrollView:insert(ChangeLog) 

я могу видеть, ~ 164 строк текста, но он просто останавливается там ... Есть ли способ, чтобы сделать его бесконечным?

+0

Да. Corona SDK. – FICHEKK

ответ

0

У меня была такая же проблема совсем недавно - слишком плохо, что такие ограничения подробно описаны в API.

Я начал с this github repository, ведьма содержит полную библиотеку виджета Corona SDK (она больше не разработана AFAIK), но ничего не удалось найти.

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

Часть scrollListener (event.direction == "up" в основном зеркальное отражение этого):

elseif (event.direction == "down") then 
    --check if limit is reached or close to it, y is from scrollView:getContentPosition(), -800 is arbitrary 
    if (event.limitReached) or y > - 800 then print("Reached top limit") 
     --firstS stores number of first visible sign of a string 
     if chat.firstS > 1 then 
      --copy string 
      local shownText = stringText 
      --update display object 
      chat.text = shownText 

      local firstS, lastS 

      --do while display object is too high - I found that scrollView stops scrolling ~25000 height 
      while (chat.height) > 24000 do 
       --basically cut the text in half 
       firstS = chat.firstS - #shownText/4 
       if firstS < 1 then firstS = 1 end 
       lastS = firstS + #shownText/2 

       shownText = string.sub(stringText, firstS, lastS) 
       chat.text = shownText 

      end 

      chat.firstS = firstS 
      chat.lastS = lastS 
      --scroll to halfway position in no time for seamless transition 
      mainView:scrollToPosition({y = -(chat.height)/2, time = 0}) 

     end 
    end 
end 

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

Смежные вопросы