Home | Lesson | Game | Tool | Link

B06.プログラムの終了のさせ方

プログラムが止まってしまった場合や、addCameraSceneNodeFPSを設定した場合など
(addCameraSceneNodeFPSを設定すると、マウス操作ができなくなるので、
 終了ボタンが押せなくなります。)にプログラムを終了させる方法を紹介します。


プログラムで終了
レシーバーを用意して、closeDeviceで終了させましょう。
もし、終了処理(データの保存)がある場合は、予め処理しておきましょう。
closeDeviceを行うとメインループを終了させるので、その後の処理は実行可能です。
class MyEventReceiver : public IEventReceiver
{
public:
	virtual bool OnEvent(const SEvent& event)
	{
		if(event.EventType == EET_KEY_INPUT_EVENT)
		{
			if(event.KeyInput.PressedDown)
			{
				switch(event.KeyInput.Key)
				{
					case KEY_ESCAPE:
						//デバイスを終了させます
						device->closeDevice();
						return true;
					default:
						return false;
				}
			}
			return true;
		}
		return false;
	}
};

キー操作で終了
[Alt]+[F4]を押すことで強制終了させることも可能です。
ただし、正常な終了処理はできないので注意してください。

ダウンロード
今回作成したファイル一式です。

宿題
1.ESCを連続で4回押したときだけ終了するようにしてみましょう。
ただし、途中で他のキーが押された場合は無効とします。