[解決済] 【質問】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
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()の後じゃないとダメだと勘違いしてました