投稿
おちゃめ ochame_nako
本体がスリープしたかどうかを取得するSLEEP関数を作りました。一瞬でもスリープしたらtrueを返します。ループ中のVSYNC 1と置き換えて使ってください。
20そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
プログラムリストを見ただけだと常にfalseになりますが、実際に実行するとスリープから復帰直後は処理落ちするのでMAINCNT-CNTの値は必ず2以上になる(大抵は4~5くらいになる)ためtrueを返します。
2そうだね
プレイ済み
返信[2]
親投稿
Godot orz_127
すみません。 この関数はどの様なときに使うと有効なのでしょう? ちょっと思い付きませんでした。 スプライトやらを多様すると処理落ちしてスリープ状態になる事があって、ループ中にVSYNCの代わりに入れておけば、それが判定出来るという事ですか? その場合、スプライトの数を減らすなどの調整を行うためのデバッグ的な使い方となりますか? こういう場合に使うと良い、という例をご提示頂けるとありがたいです。 m(_ _)m
0そうだね
プレイ済み
返信[3]
親投稿
てっく tekpro
ここで言うスリープとは3DSを閉じるという意味では? 市販のDS,3DSソフトにもスリープ状態を利用したミニゲーム等が存在しますが、これまではスリープ状態を調べる方法が無かったので普通に有用だと思います。
1そうだね
プレイ済み
返信[4]
親投稿
てっく tekpro
具体的に言うと、制限時間付きクイズで3DSを折りたたんで(スリープさせて)考えるといったズルの防止に使えそうですね。 勝手に代弁すみません。m(_ _)m
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
Godotさんへ すでにてっくさんが書いておられますが、このSLEEP関数はプチコンが動作中に本体が閉じられたか否かが取得可能になっただけのものです。 要するにデフォルトでサポートされてないアクションが可能になっただけにすぎません。 ジャイロセンサーやモーションセンサーなどと同じく何に使うかはその人次第でしょうね。 スリープの時間を取得することも可能ですが、取得するまで最低1秒かかってしまうというのがネックです。
1そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
やっぱりスリープとは蓋を閉じたときの事ですか…。 それだと尚更使いどころが思いつかなくて…^^; 言われてみれば、てっくさんの言うようなズルも考えられますね^^; おこちゃさんが投稿していてVSYNCの代わりにとあったので…。 考え過ぎました。 素直に蓋が閉じられたかどうかの判定用の関数と考えれば良かったんですね^^; お騒がせしました m(_ _)m
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
Godotさんへ SLEEP関数内にVSYNC 1があるため他のプログラムから呼び出した時には余分にウェイトが入ってしまうためあのような書き方をしました。 SLEEP関数からVSYNC 1を出してしまえば良いのですが、その場合は前回のMAINCNTLの値を記録したグローバル変数CNTを確保しておいてCNT=MAINCNTとSLEEP()の間にVSYNCを入れないと正常動作はしません。 という注意書きを書いたり詳しいやりかたを書くくらいならばSLEEP関数内にVSYNC 1を入れておいてループ内のVSYNC 1と置き換えて使ってくださいと書いた方が遙かに簡潔で分かりやすいと私は思いました。 (下記へ続く)
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
(続き) なお処理落ちしているかどうかを知りたいならば1000分の1秒単位で取得可能なTIMER関数を作ったのでそれを活用してください。 VSYNC 1だと16~17m秒なので18m秒以上かかっていれば処理落ちしていると判断が可能になります。
1そうだね
プレイ済み
返信[9]
親投稿
HIBIKI 130216
OSであればセキュリティのために○○分スリープしたらロックというのができますよね!
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
みやさんへ スリープした時間は秒単位であればループで3DS内蔵時計の動きを監視しておいて前回からの差分を簡単に求めれば分かります。(1秒以下の誤差が出るけどそこまで厳密に求めないならば問題ない) フレーム単位のスリープ時間が必要ならば少し工夫が必要ですが、上記コメントで書いたようにスリープ時間を取得するのに1秒以上かかるのがネックになります。 TIMER関数を使用すればミリ秒単位のスリープ時間も取得できますが、そこまで精度が高くないのでやる意味はあまりないでしょう。
1そうだね
プレイ済み