Недавняя поддержка гироскопа из Corona SDK, кажется, не отвечает

Я использую последнюю ежедневную сборку Corona SDK (версия 2001.562), чтобы добавить поддержку гироскопа в существующее приложение. К сожалению, я не могу заставить функцию event-handling запускать гироскоп. Приложение работает на iPod touch версии 4.3.3.

Я присоединяю гироскоп к обработчику событий следующим образом:

if system.hasEventSource("gyroscope") then
    feedbackFile = io.open(system.pathForFile("log.txt", system.DocumentsDirectory), "a");
    feedbackFile:write((os.clock()-startupTime).."\tgyroscope on\n");
    io.close(feedbackFile);
    Runtime:addEventListener( "gyroscope", onGyroscopeDataReceived )
else
    feedbackFile = io.open(system.pathForFile("log.txt", system.DocumentsDirectory), "a");
    feedbackFile:write((os.clock()-startupTime).."\tgyroscope off\n");
    io.close(feedbackFile);
end

Когда я запускаю приложение на устройстве, затем закрываю его и загружаю файлы ресурсов, я обнаруживаю, что log.txt содержит строку с timestamp и "гироскоп включен". До сих пор хорошо!

Перейдем к функции обработки событий:

local function onGyroscopeDataReceived(event)

    feedbackFile = io.open(system.pathForFile("log.txt", system.DocumentsDirectory), "a");
    feedbackFile:write((os.clock()-startupTime).."\tgyroscope reading delta="..event.deltaRotation..",x="..event.xRotation..",y="..event.yRotation..",z="..event.zRotation.."\n");
    io.close(feedbackFile);
end

Эта строка информации никогда не появляется в файле log.txt!

Пожалуйста, порекомендуйте. Заранее спасибо!


person JDT    schedule 06.07.2011    source источник
comment
Я подозревал, что проблема может заключаться в моем устройстве, но я попробовал указанный выше код на другом iPod touch версии 4.3.3 и получил те же неутешительные результаты.   -  person JDT    schedule 12.07.2011


Ответы (2)


Проблема в том, что event.deltaRotation не существует. Возможно, вы имели в виду event.deltaTime.

Затем, когда вы объединяете нулевое значение, Lua выдает ошибку, и ваш код записи никогда не завершается. (Последняя ежедневная сборка теперь будет распечатывать сообщение, когда вы сталкиваетесь с ошибкой Lua на устройстве.)

В документации показано, как вычислить собственные дельта-градусы или дельта-радианы: http://developer.anscamobile.com/reference/index/events/gyroscope/eventxrotation

person Community    schedule 18.08.2011

Просто дикое предположение, но, возможно, ваш слушатель никогда не вызывается --- я заметил, что ваша функция onGyroscopeDataReceived является локальной. Если это так, вам нужно убедиться, что переменная объявлена ​​до вызова addEventListener.

person walter    schedule 17.08.2011