В Corona SDK проверка равенства возвращает true в эмуляторе, но false в реальном устройстве - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь отобразить круг с помощью Corona, если class == "a" отображает его красным, иначе отображает синий. Это работает в эмуляторе короны, но я все время получаю синий круг при попытке в реальном устройстве или другом эмуляторе (bluestacks). Это мой код:

if (class=="a") then
    myCircle:setFillColor( 1,0,0 )
    print( "calss is a" )
    print( type( class ) )
elseif  (class=='b') then
    myCircle:setFillColor( 0,0,1 )
    print( "calss is b" )
else
    print( "calss is not a or b" )
    print (class)
    print( type( class ) )

end

В журнале имитаторов короны показаны операторы печати в соответствующих условиях if и elseif, но logcat устройства Android показывает операторы печати в противном случае всегда.

Примечание. Я импортируюкласс из CSV-файла. Это похоже на

5,6,a
3,7,a
6,2,a
4,6,b
4,4,b

код, который я использую для импорта:

local DataCount=1
for line in file:lines() do
    x, y, class = line:match("([^,]+),([^,]+),([^,]+)")
    data[DataCount]={ x=x, y=y, class=class }
    DataCount=DataCount+1
    print( line )
end

Редактировать: если стало верно, когда я вручную добавил class = "a" перед проверкой условия, так что я думаю, эточто-то не так с тем, как я импортировал данные ...?

Редактировать 2: Нашел решение .. заменил это:

x, y, class = line:match("([^,]+),([^,]+),([^,]+)")

на это:

x, y, class = line:match("([^,]+),([^,]+),([a-b]+)")

ноЯ до сих пор не понимаю, почему это происходит .. невидимый персонаж добавляется после сборки apk ??? Насколько я понимаю, 1-я строка соответствует чему угодно, кроме "," после второй "," и присваивает ее переменной класса. вторая строка ищет только символы между ab (включительно), исключая любые шансы невидимого символа быть добавленным в класс.

...