スクリプト/キー・マウス入力

最終投稿者:Material 6858 mini akasata 更新:2011/04/21 20:55:54
Rmakeでは、マウス入力やキー入力を受け取ることができます。
このページでは、Rmakeにおけるキー・マウス入力を受け取るコードの
例を紹介します。

このサンプルでは以下のことを行うことができます。

  • マウスを動かすと座標を表示します
  • マウスをクリックすると、ボタンを押下したとき、離したときの座標を表示します
  • Aキーを押すと、メッセージを表示します
  • Eキーを押すと終了します

コード例


#テキスト表示領域を用意します。
textID = createText(10, 20, 512, 64)
textID2 = createText(10, 20 + 64, 512, 64)
setText(textID2, "press e and end")

#入力の取得を始めます
startInput()

#ループし続けるように変数を設定します。
loop = true

#loop変数がtrueの間はループし続けます。
while loop

  #入力が入っているかどうか調べます。
  while hasInput()
    #内部にたまっている入力を処理対象とします。
    takeInput()


    if isMouseDown() #マウスのボタンが押されている場合
      #マウスの位置を取得します。
      pos = getMousePosition()
      #位置を表示します。
      setText(textID, "clicked x = ", pos[0], ", y = ", pos[1])

     
    elsif isMouseMove() #マウスが動いた場合
      #マウスの位置を取得します。
      pos = getMousePosition()
      #位置を表示します。
      setText(textID, "x = ", pos[0], ", y = ", pos[1]);


    elsif isMouseUp() #マウスのボタンが離された場合
      #マウスの位置を取得します。
      pos = getMousePosition()
      #位置を表示します。
      setText(textID, "uped x = ", pos[0], ", y = ", pos[1])

    elsif isKeyDown("A") #キーAが押された場合
      #メッセージを表示します。
      speak("press A")

    elsif isKeyUp("A") #キーAが離された場合
      #メッセージを表示します。
      speak("up A")

    elsif isKeyDown("E") #キーEが押された場合
      #ループを終了します。
      loop = false

    end
  end

  #入力がないときに無駄に処理をしないように30ミリ秒waitを入れます。
  waitTime(30)

end

#入力の取得を終了します。
endInput()

#テキスト表示領域を全部消します。
deleteTextAll()


startInput()で入力モードを開始します。
endInput()で入力モードを終了します。

入力を受け取るためにはループを用意し、
入力内容を1つずつ処理します。
loop変数をfalseにするとループを抜けます。

hasInput()で処理すべき入力があるかどうかを調べます。

takeInput()で処理すべき入力を処理対象とします。

isMouseDown()で処理対象がマウスのボタンを押したものかどうか判断します。
ここではgetMousePosition()でボタンが押されたときのマウスの位置を取得し、
テキスト表示しています。

isMouseMove()で処理対象がマウスのボタンを動かしたものかどうか判断します。
ここではgetMousePosition()でマウスが動いたときのマウスの位置を取得し、
テキスト表示しています。

isMouseUp()で処理対象がマウスのボタンを話したときのものかどうか判断します。
ここではgetMousePosition()でボタンを離したときのマウスの位置を取得し、
テキスト表示しています。

isKeyDown("A")でキーAが押されたかどうかを判断しています。
ここではメッセージウィンドウに"press A"と表示します。
isKeyDownに渡す引数は、コード入力支援から入力することをお勧めします。

isKeyUp("A")でキーAが離されたかどうかを判断しています。
ここではメッセージウィンドウに"up A""と表示します。
isKeyUpに渡す引数は、コード入力支援から入力することをお勧めします。

isKeyDown("E")でキーEが押されたかどうかを判断しています。
ここでは、loop変数にfalseを代入して処理を終了しています。

waitTime(30)で入力がなくなった場合はスクリプトの実行を30ミリ秒止めて
余分な処理をしないようにします。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

User icon mini 退会したユーザー(投稿日:2011/04/21 20:55, 履歴)
tdakeikakuサンいつもいつもこんなBAKAに付き合ってくれてありがとうございますww
User icon mini 退会したユーザー(投稿日:2011/04/21 20:55, 履歴)
理解不能w
でもなんとなくワカルw
   mini ___(投稿日:2011/04/20 21:28, 履歴)
まずはコピペして、ご自身で動作を確認してみてください。
そんでもって少しずつ改変して、「あー、こう言うことなんだな」と理解してください。
出てくる関数の意味がわからなければ、関数リファレンスを調べてみてください。

千里の道も一歩からですよ。
User icon mini 退会したユーザー(投稿日:2011/04/20 18:47, 履歴)
クリックの部分を消すとおかしくなるんですか?
キー入力だけの物を作りたいので・・・。
User icon mini 退会したユーザー(投稿日:2011/04/20 18:45, 履歴)
よくわかりません。。。
elsif isKeyDown("A") #キーAが押された場合
#メッセージを表示します。
speak("press A")

これはキーボードのAキーを押すとメッセージが出るってことですか?
そうですよね?
メニュー
目次