スクリプト/画面上にボタンを作る関数
最終投稿者: cfm_
更新:2016/07/14 22:24:29
2枚の画像と、ボタンの左上・右下座標を入力するだけでボタンが作れます。
この関数を使うには、こちらスクリプト/キー入力を1行で取得する関数の関数を入れる必要があります。
この関数のスクリプトより先に実行されるよう貼り付けてください。
関数のスクリプト
このゲームのスクリプト
ツイート
この関数を使うには、こちらスクリプト/キー入力を1行で取得する関数の関数を入れる必要があります。
この関数のスクリプトより先に実行されるよう貼り付けてください。
#スクリプトの最初に記述が必要 button_start() #ボタンを追加する(ボタン番号,通常時画像,押下中画像,画像幅,画像高さ,左上X,左上Y,右下X,右下Y) # index(ボタン番号)は-1以外の数値です。 # img0,img1に0を入れると、それぞれ画像を表示しません # 2つの画像は同じサイズで用意してください。 # 左上と右下の座標によって、自動で画像を拡大縮小します。 button_add(index,img0,img1,imgw,imgh,x0,y0,x1,y1,ZOrder) #ボタンがクリックされたらTrueを返す button_get(index) #ボタンを削除する button_delete(index) #ボタンをすべて削除する button_alldelete() #すべてのボタンの番号が入った配列を取得 button_getarray()
関数のスクリプト
#スクリプトの最初に記述が必要。 def button_start() setCanvasVisible(true) setVariable("btn_ctrl",createArray()) setVariable("btn_img0",createArray()) setVariable("btn_img1",createArray()) setVariable("btn_imgnum0",createArray()) setVariable("btn_imgnum1",createArray()) setVariable("btn_x0",createArray()) setVariable("btn_y0",createArray()) setVariable("btn_x1",createArray()) setVariable("btn_y1",createArray()) setVariable("btn_z",createArray()) setVariable("btn_imgw",createArray()) setVariable("btn_imgh",createArray()) setVariable("btn_push",createArray()) end #ボタンを作成(ボタン番号,通常時画像,押下中画像,画像幅,画像高さ,左上X,左上Y,右下X,右下Y) #img0,img1に0を入れると、それぞれ画像を表示しません #2つの座標によって、自動で画像を拡大縮小します。 #2つの画像の幅と高さは同じにしてください。 #indexは-1以外の数値。 def button_add(index,img0,img1,imgw,imgh,x0,y0,x1,y1,ZOrder) getVariable("btn_imgw")[index]=imgw getVariable("btn_imgh")[index]=imgh getVariable("btn_imgnum0")[index]=img0 getVariable("btn_imgnum1")[index]=img1 getVariable("btn_x0")[index]=x0 getVariable("btn_y0")[index]=y0 getVariable("btn_x1")[index]=x1 getVariable("btn_y1")[index]=y1 getVariable("btn_z")[index]=ZOrder pushArray(getVariable("btn_ctrl"), index) if img0==0 getVariable("btn_img0")[index]=0 else getVariable("btn_img0")[index]=createSprite(img0) setSpriteRect(getVariable("btn_img0")[index],0,0,getVariable("btn_imgw")[index],getVariable("btn_imgh")[index],0,0,getVariable("btn_x1")[index]-getVariable("btn_x0")[index]+1,getVariable("btn_y1")[index]-getVariable("btn_y0")[index]+1) setSpritePosition(getVariable("btn_img0")[index],getVariable("btn_x0")[index],getVariable("btn_y0")[index]) setSpriteZOrder(getVariable("btn_img0")[index],getVariable("btn_z")[index]) drawCanvas() end getVariable("btn_img1")[index]=0 end #ボタンがクリックされたらTrueを返す def button_get(index) b=0 x=input_getmousex() if getVariable("btn_x0")[index]<x&&x<getVariable("btn_x1")[index] y=input_getmousey() if getVariable("btn_y0")[index]<y&&y<getVariable("btn_y1")[index] if input_getmouse("HOLD") if !getVariable("btn_push")[index] if getVariable("btn_img0")[index]!=0 deleteSprite(getVariable("btn_img0")[index]) getVariable("btn_img0")[index]=0 end if getVariable("btn_imgnum1")[index]!=0 getVariable("btn_img1")[index]=createSprite(getVariable("btn_imgnum1")[index]) setSpriteRect(getVariable("btn_img1")[index],0,0,getVariable("btn_imgw")[index],getVariable("btn_imgh")[index],0,0,getVariable("btn_x1")[index]-getVariable("btn_x0")[index]+1,getVariable("btn_y1")[index]-getVariable("btn_y0")[index]+1) setSpritePosition(getVariable("btn_img1")[index],getVariable("btn_x0")[index],getVariable("btn_y0")[index]) setSpriteZOrder(getVariable("btn_img1")[index],getVariable("btn_z")[index]) end drawCanvas() getVariable("btn_push")[index]=true end elsif getVariable("btn_push")[index]#離されたとき b=2 end elsif getVariable("btn_push")[index] b=1 end elsif getVariable("btn_push")[index] b=1 end if b==1||b==2 if getVariable("btn_img1")[index]!=0 deleteSprite(getVariable("btn_img1")[index]) getVariable("btn_img1")[index]=0 end if getVariable("btn_imgnum0")[index]!=0 getVariable("btn_img0")[index]=createSprite(getVariable("btn_imgnum0")[index]) setSpriteRect(getVariable("btn_img0")[index],0,0,getVariable("btn_imgw")[index],getVariable("btn_imgh")[index],0,0,getVariable("btn_x1")[index]-getVariable("btn_x0")[index]+1,getVariable("btn_y1")[index]-getVariable("btn_y0")[index]+1) setSpritePosition(getVariable("btn_img0")[index],getVariable("btn_x0")[index],getVariable("btn_y0")[index]) setSpriteZOrder(getVariable("btn_img0")[index],getVariable("btn_z")[index]) end drawCanvas() getVariable("btn_push")[index]=false end return b==2 end #すべてのボタンの番号が入った配列を取得 def button_getarray() a=createArray() len=getArrayLength(getVariable("btn_ctrl")) j=0 i=0 while i<len if getVariable("btn_ctrl")[i]!=-1 a[j]=getVariable("btn_ctrl")[i] j=j+1 end i=i+1 end return a end def button_delete(index) i=getArrayLength(getVariable("btn_ctrl"))-1 while -1<i if getVariable("btn_ctrl")[i]==index if getVariable("btn_img0")[index]!=0 deleteSprite(getVariable("btn_img0")[index]) elsif getVariable("btn_img1")[index]!=0 deleteSprite(getVariable("btn_img1")[index]) end drawCanvas() getVariable("btn_ctrl")[i]=-1 return true end i=i-1 end return false end def button_alldelete() i=getArrayLength(getVariable("btn_ctrl"))-1 while -1<i if getVariable("btn_ctrl")[i]!=-1 if getVariable("btn_img0")[getVariable("btn_ctrl")[i]]!=0 deleteSprite(getVariable("btn_img0")[getVariable("btn_ctrl")[i]]) elsif getVariable("btn_img1")[getVariable("btn_ctrl")[i]]!=0 deleteSprite(getVariable("btn_img1")[getVariable("btn_ctrl")[i]]) end getVariable("btn_ctrl")[i]=-1 end i=i-1 end drawCanvas() end
このゲームのスクリプト
input_start() button_start() i=0 while i<7 x=rand(400) y=rand(400) button_add(i,300405,300412,32,32,x,y,x+20+rand(20),y+20+rand(20),7) i=i+1 end cnt=0 while true i=0 while i<7 if button_get(i) speak("それは"+toString(i)+"番のボタンだ。") if i==cnt cnt=cnt+1 if cnt==7 then goEnding();end else cnt=0 speak("順番に押そう。") end end i=i+1 end end
コメントする
コメントするには、ログインする必要があります。
http://blog.rmake.jp/mosmoss/7573
応用例は、「ボタンに回転角度を設定する」「カーソルがボタンの上にある時に画像を変える」
「ボタン情報を利用した当たり判定」の3本です