Недавняя поддержка гироскопа от Corona SDK, кажется, не отвечает - PullRequest
1 голос
/ 07 июля 2011

Я использую недавнюю ежедневную сборку 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!

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

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

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

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

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

0 голосов
/ 18 августа 2011

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

...