-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgameUI.lua
More file actions
98 lines (73 loc) · 2.57 KB
/
Copy pathgameUI.lua
File metadata and controls
98 lines (73 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
-- gameUI library
module(..., package.seeall)
-- A general function for dragging physics bodies
-- Simple example:
-- local dragBody = gameUI.dragBody
-- object:addEventListener( "touch", dragBody )
function dragBody( event, params )
local body = event.target
local phase = event.phase
local stage = display.getCurrentStage()
if "began" == phase then
stage:setFocus( body, event.id )
body.isFocus = true
-- Create a temporary touch joint and store it in the object for later reference
if params and params.center then
-- drag the body from its center point
body.tempJoint = physics.newJoint( "touch", body, body.x, body.y )
else
-- drag the body from the point where it was touched
body.tempJoint = physics.newJoint( "touch", body, event.x, event.y )
end
-- Apply optional joint parameters
if params then
local maxForce, frequency, dampingRatio
if params.maxForce then
-- Internal default is (1000 * mass), so set this fairly high if setting manually
body.tempJoint.maxForce = params.maxForce
end
if params.frequency then
-- This is the response speed of the elastic joint: higher numbers = less lag/bounce
body.tempJoint.frequency = params.frequency
end
if params.dampingRatio then
-- Possible values: 0 (no damping) to 1.0 (critical damping)
body.tempJoint.dampingRatio = params.dampingRatio
end
end
elseif body.isFocus then
if "moved" == phase then
-- Update the joint to track the touch
body.tempJoint:setTarget( event.x, event.y )
elseif "ended" == phase or "cancelled" == phase then
stage:setFocus( body, nil )
body.isFocus = false
-- Remove the joint when the touch ends
body.tempJoint:removeSelf()
end
end
-- Stop further propagation of touch event
return true
end
-- A function for cross-platform event sounds
function newEventSoundXP( params )
local isAndroid = "Android" == system.getInfo("platformName")
if isAndroid and params.android then
soundID = media.newEventSound( params.android ) -- return sound file for Android
elseif params.ios then
soundID = media.newEventSound( params.ios ) -- return sound file for iOS/MacOS
end
return soundID
end
-- A function for cross-platform fonts
function newFontXP( params )
local isAndroid = "Android" == system.getInfo("platformName")
if isAndroid and params.android then
font = params.android -- return font for Android
elseif params.ios then
font = params.ios -- return font for iOS/MacOS
else
font = native.systemFont -- default font (Helvetica on iOS, Android Sans on Android)
end
return font
end