AddVirtualPadButton ( pad,button[,label$] )
Parameters
| pad: gamepad group. button: standard position 1..21. label: optional text. |
Description
Adds a momentary button and returns its control handle. Raw and standard button numbers match. Buttons 15..21 allow guide/misc/paddle/touchpad bindings omitted by the presets. Use VirtualControlRect to position it; multiple buttons can bind the same position.
Native overlays are supported on iOS, Android, macOS and Windows, including IDE run presets and saved layouts, and on the web, where the page draws them over the canvas. Controls use presentation coordinates, remain responsive during blocking input waits, and are excluded from SaveBuffer. See the mobile input guide. |
; AddVirtualPadButton Example
; Virtual pad: existing Joy and Gamepad APIs, no touch update/draw commands.
Graphics 800,480,0,2
SetBuffer BackBuffer()
Local pad=CreateVirtualGamepad("standard")
If pad=0 Then RuntimeError MobileInputError$()
; Keep only the controls used by this game.
VirtualControlVisible VirtualControl(pad,"east"),0
VirtualControlVisible VirtualControl(pad,"west"),0
VirtualControlVisible VirtualControl(pad,"north"),0
VirtualControlVisible VirtualControl(pad,"left-shoulder"),0
VirtualControlVisible VirtualControl(pad,"right-shoulder"),0
VirtualControlVisible VirtualControl(pad,"left-click"),0
VirtualControlVisible VirtualControl(pad,"right-click"),0
Local port=VirtualGamepadPort(pad),x#=400,y#=210,score=0
extra=AddVirtualPadButton(pad,1,"Action")
VirtualControlRect extra,2,150,12,80,44
Local target_x#=530,target_y#=210,previous=MilliSecs()
While Not KeyHit(1)
If GamepadHit(7,port) Then Exit
If GamepadHit(8,port) Then score=0
Local now=MilliSecs(),dt#=Float(now-previous)/1000
previous=now
If dt<0 Then dt=0
If dt>0.05 Then dt=0.05
Local speed#=180*(1-0.75*GamepadAxis(5,port)+GamepadAxis(6,port))
x=x+(GamepadAxis(1,port)+GamepadDown(14,port)-GamepadDown(13,port))*speed*dt
y=y+(GamepadAxis(2,port)+GamepadDown(12,port)-GamepadDown(11,port))*speed*dt
If x<15 Then x=15
If x>785 Then x=785
If y<85 Then y=85
If y>465 Then y=465
If GamepadHit(1,port)
If (x-target_x)^2+(y-target_y)^2<65^2
score=score+1
target_x=Rnd(180,610)
target_y=Rnd(120,280)
EndIf
EndIf
Cls
Color 255,255,255
Text 150,48,"Move L/d-pad; aim R; LT slows, RT boosts. Score: "+score
Text 150,68,"Tap A near gold. Start resets; Back exits. Hat: "+JoyHat(port)
Text 150,88,"Triggers: "+GamepadAxis(5,port)+", "+GamepadAxis(6,port)
Color 255,200,40
Oval target_x-15,target_y-15,30,30,True
Color 70,200,255
Oval x-12,y-12,24,24,True
Line x,y,x+GamepadAxis(3,port)*55,y+GamepadAxis(4,port)*55
Flip
Wend
FreeVirtualControls pad
End
Open example ยท Command index