[解決済] 【質問】isMouseUp() について(質問掲示板)
投稿: 闇さん
投稿:2017/04/01 16:49:01(最新:2017/04/01 18:49:01)
ノベルエディタでマウス画像を押すと画像を消し、放すと再表示というものを作っているのですが
入力待ちループ処理
if isMouseDown()
処理
end
だと正常に押されたときに動くのですが
マウスを離しても
isMouseUp()
の中身が処理されず 試しにマウスを離した時の処理を消して
isMouseUp()を isKeyDown("SPACE")に変えてみたところ 正常に動きました
マウスを離すと何か処理を行うにはどうすればいいでしょうか?
参考にしたサイトは 関数リファレンスと
簸川さんの
https://rmake.jp/blog/aoihikawa/820
です
ツイート
入力待ちループ処理
if isMouseDown()
処理
end
だと正常に押されたときに動くのですが
マウスを離しても
isMouseUp()
の中身が処理されず 試しにマウスを離した時の処理を消して
isMouseUp()を isKeyDown("SPACE")に変えてみたところ 正常に動きました
マウスを離すと何か処理を行うにはどうすればいいでしょうか?
#キャンバス作成処理とか略 mainloop = true while mainloop #キー入力の判定 while hasInput() takeInput() if isMouseDown() #画像を消す処理 #ここは正常に動く elsif isMouseUp() #画像を再表示する処理 #ここの処理が動かない #スペースキーが押されたらとかにすると動く end startInput() end #画像の更新処理 略 waitTime(30) end
参考にしたサイトは 関数リファレンスと
簸川さんの
https://rmake.jp/blog/aoihikawa/820
です
コメントする
コメントするには、ログインする必要があります。
コメント一覧
省略した部分に問題がある可能性があるので
省略なしで最初から最後まで載せます
省略なしで最初から最後まで載せます
#メニュー項目等の表示OFF setMenuItemVisible(getMenuBackLog(), false) setMenuItemVisible(getMenuSave(), false) setMenuItemVisible(getMenuLoad(), false) setHelpVisible(false) #キャンバスの初期化 setCanvasVisible(false) deleteAllSprite() drawCanvas() #背景画像の設定 img_bg_no = 319404 img_bg = createSprite(img_bg_no) get_x = 0 ;get_y = 0 ;get_w = 800 ;get_h = 600 set_x = 0 ;set_y = 0 ;set_w = 800 ;set_h = 600 set_z = 1 pos_x = 0 ;pos_y = 0 setSpriteRect(img_bg, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_bg, set_z) setSpritePosition(img_bg, pos_x, pos_y) #キャラクター画像の設定 img_char_no = 319403 img_char = createSprite(img_char_no) get_x = 0 ;get_y = 0 ;get_w = 64*3 ;get_h = 64*3 set_x = 0 ;set_y = 0 ;set_w = 64*3 ;set_h = 64*3 set_z = 7 pos_x = 64*5 ;pos_y = 64*3 setSpriteRect(img_char, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_char, set_z) setSpritePosition(img_char, pos_x, pos_y) #ゴミ箱画像の設定 img_gomi_no = 319403 img_gomi = createSprite(img_gomi_no) get_x = 0 ;get_y = 64*3 ;get_w = 64*3 ;get_h = 64*3 set_x = 0 ;set_y = 0 ;set_w = 64*3 ;set_h = 64*3 set_z = 6 pos_x = 64*0.5 ;pos_y = 64*6 setSpriteRect(img_gomi, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_gomi, set_z) setSpritePosition(img_gomi, pos_x, pos_y) #画面の更新 drawCanvas() setCanvasVisible(true) #スコアと時間表示 min = 0 setTextFontColor(255,15,15) time = createText(0, 0, 64*4, 64) setText(time, "時間:"+min) setTextFontColor(255,111,15) sca = createText(0, 32, 64*4, 64) sca_mkn = 0 setText(sca, "みかん:" + sca_mkn) setTextFontColor(255,255,255) #ゲームモードの選択 startInput() #入力受付の開始 mkn = true #メインループの開始 mainloop = true while mainloop #キー入力の判定 while hasInput() takeInput() if isMouseDown() pos = getMousePosition() endInput() #----- キー入力の判定処理を入れる場所 ----- if pos[0] >= 64*5 && pos [0] <= 64*5+64*3 && pos[1] >= 64*3 && pos[1] <= 64*3+64*3 #キャラクタークリック時 deleteSprite(img_char) if mkn sca_mkn = sca_mkn + 1 else sca_mkn = floor((sca_mkn+1)/2) img_char_no = 319403 img_char = createSprite(img_char_no) get_x = 64*3 ;get_y = 0 ;get_w = 64*3 ;get_h = 64*3 set_x = 0 ;set_y = 0 ;set_w = 64*3 ;set_h = 64*3 set_z = 7 pos_x = 64*5 ;pos_y = 64*3 setSpriteRect(img_char, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_char, set_z) setSpritePosition(img_char, pos_x, pos_y) drawCanvas() end elsif pos[0] >= 64*0.5 && pos[0] <= 64*0.5+64*2.5 && pos[1] >= 64*6 #ゴミ箱クリック時 deleteSprite(img_char) if mkn else end end elsif isMouseUp() endInput() #マウスが離されたとき deleteSprite(img_char) if rand(10) == 0 img_char_no = 319403 img_char = createSprite(img_char_no) get_x = 64*3 ;get_y = 64*3 ;get_w = 64*3 ;get_h = 64*3 set_x = 0 ;set_y = 0 ;set_w = 64*3 ;set_h = 64*3 set_z = 7 pos_x = 64*5 ;pos_y = 64*3 setSpriteRect(img_char, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_char, set_z) setSpritePosition(img_char, pos_x, pos_y) drawCanvas() mkn = false else img_char_no = 319403 img_char = createSprite(img_char_no) get_x = 0 ;get_y = 0 ;get_w = 64*3 ;get_h = 64*3 set_x = 0 ;set_y = 0 ;set_w = 64*3 ;set_h = 64*3 set_z = 7 pos_x = 64*5 ;pos_y = 64*3 setSpriteRect(img_char, get_x, get_y, get_w, get_h, set_x, set_y, set_w, set_h) setSpriteZOrder(img_char, set_z) setSpritePosition(img_char, pos_x, pos_y) drawCanvas() mkn = true end end startInput() end #時間とスコアの処理 まだ途中 deleteText(sca) deleteText(time) setTextFontColor(255,111,15) sca = createText(0, 32, 64*4, 64) setText(sca, "みかん:" + sca_mkn) setTextFontColor(255,15,15) time = createText(0, 0, 64*4, 64) setText(time, "時間:" + min) setTextFontColor(255,255,255) #----- 画面の更新 ----- drawCanvas() waitTime(30) end
池ちゃん(翡翠ヶ池)(投稿日:2017/04/01 17:15,
履歴)
startInput() text = createText(200, 200, 700, 300) a = 0 U=false t = "マウスを押し続けてください" #キャンバス作成処理とか略 mainloop = true while mainloop setText(text, a,"\n",t) #キー入力の判定 while hasInput() takeInput() if isMouseDown() t = "キーを離すと、止まります。" U = true #画像を消す処理 #ここは正常に動く elsif isMouseUp() t = "上キーを押し続けてください" a=0 U = false #画像を再表示する処理 #ここの処理が動かない #スペースキーが押されたらとかにすると動く end end #画像の更新処理 略 if U #押し続けている時の動作 a= a + 1 end waitTime(30) end endInput()
とりあえずこれでisMouseUp()の部分が動くことを確認しました。
結論から言えば
startInput() とendInput() をループ外に出したらOkでした
getMousePosition() は endInput()の後じゃないとダメだと勘違いしてました