1

私はコロナ SDK (バージョン 2001.562) の最近のデイリー ビルドを使用して、既存のアプリケーションにジャイロスコープのサポートを追加しています。残念ながら、event-handlingジャイロスコープを起動する機能を取得できないようです。アプリケーションは、バージョン 4.3.3 の iPod touch で実行されています。

次のように、ジャイロスコープをイベント ハンドラーにアタッチします。

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ファイルには表示されません!

お知らせ下さい。前もって感謝します!

4

2 に答える 2

2

問題は event.deltaRotation が存在しないことです。event.deltaTime のことかもしれません。

nil 値を連結すると、Lua はエラーをスローし、書き込みコードは完了しません。(最新のデイリー ビルドは、デバイスで Lua エラーが発生したときにメッセージを出力するようになりました。)

ドキュメントには、独自の deltaDegrees または deltaRadians を計算する方法が示されています: http://developer.anscamobile.com/reference/index/events/gyroscope/eventxrotation

于 2011-08-18T00:55:44.057 に答える
0

大げさな推測ですが、リスナーが呼び出されない可能性があります --- onGyroscopeDataReceived 関数がローカルであることに気付きました。その場合は、変数が addEventListener 呼び出しの前に宣言されていることを確認する必要があります。

于 2011-08-17T23:44:17.633 に答える