Index

Symbols

/**-Enter (Javadoc comments), 103-104

2D from 3D coordinates, gravity sensors, converting, 183

3D rendering, Android NDK support, 8

3D to 2D coordinates, gravity sensors, converting, 183

A

ABD (Android Debug Bridge)

installing, 65-68

running code, 69-71

versus USB device driver, 65-68

AC3 (FFmpeg) audio format, 217

Accelerometer Demo, 164-167

accelerometer sensors, 157-158, 193, 209

accelMotion variable, 162

disabling screen orientation changes, 159-160

initializing, 160-161

versus linear acceleration, 169

movement of, 161-162

Activity class

base application class, 78

methods, 78

overridable, 78

setTitle(), 78

addAnimation() method, Sprite class, 287

addToGroup() method, Engine class, 324, 392

adjustAlpha() method, Animation class, 282

adjustPosition() method, Animation class, 282

adjustRotation() method, Animation class, 282

adjustScale() method, Animation class, 282

ADT (Android Development Tools) plug-in

Android “wizard” dialog, 80

installing, 25-28

AIFF (Apple) signed 16-bit PCM audio format, 217

AlphaAnimation class, 287

alpha channels, GIMP graphic editor, 121-124

Amazon

digital media industry, 9

Kindle Fire

Android 2.2 Eclair, 69

Android 4.0 Ice Cream Sandwich, 69

sensors reported, 164

AMR (narrow band) (FFmpeg) audio format, 217

Android 4/Google. See also Android OS/devices

Apps screen, 6

based on Linux 3.0, 3

compatibility of games/apps, 6

hardware requirements, 11-12

Home button, 4-5

home screen, 4-5

versus iPhone, 4

licensing, 4, 6, 10

market share, 4, 9, 12

non proprietary, 4

Plants vs. Zombies, 7

programming games, 7

Return button, 4-5

Search field with voice recognition, 4

Tasks button, 4-5

Unity game engine support, 226

Android Development Tools (ADT), 25-28

android.graphics.Bitmap namespace, 112

android.hardware classes

methods

getSensorList(), 163

onAccuracyChanged(), 158-159

onCreate(), 158-159, 163

onSensorChanged(), 158-159

Sensor, 160, 162, 165

SensorEvent, 162, 165

SensorEventListener, 158, 162, 165

SensorManager, 158, 162

Android NDK, C++ for components, 8

pixel buffer access, 8

support for 3D rendering and audio, 8

Android OS/devices. See also Android 4/Google

ABD (Android Debug Bridge)

installing, 65-68

running code, 69-71

versus USB device driver, 65-68

adult toy, 7

Android Device Settings, options, 66-67

derivative of iOS/Apple, 9

history, 9-10

Linux kernel numbers, 10

release dates, 10

versions and code names, 10

versus iPhone, 4

licensing, 4, 6, 10

logo, 12

Mac OS X or Linux development, 66

market share, 4, 9, 12

non proprietary, 4

quick-to-market release, 10

rooting, 66

tablets, screen definitions, 107-108

versions to program for, 69

XNA Game Studio, Microsoft, similar to Android, 78

Android SDK (Software Development Kit). See SDK

Android Virtual Device. See AVD

animation and bitmaps, 269

Runnable Animation Demo, 134-140

walking character, 134-140

Bitmap knight [ ], 135

drawBitmap() method, 135

frames, 135

InputStream object, 135

for loops, 135

Animation class/animation systems, 281

classes

AlphaAnimation, 287

constructors, 287

Animation, 281

CirclingBehavior, 360-361

CircularMovement Animation, 292

FenceBehavior, 326-327, 362, 388-395

FrameAnimation, 288-290

ReboundBehavior, 387-388

SpinAnimation, 290-291

ThrobAnimation, 291-292, 324-325

VelocityBehavior, 359-360

WarpBehavior, 325-326, 363-364

WarpRect, 309-311

methods, 282

destroying/removing sprites from groups, 358-359

Animation Demo

frames

arranging, 270

drawing, from strip images, 270-271

source code, 275-278

sprite sheets

for asteroid animation, 273-274

for zombie animation, 275-274

Animation System Demo, 293-297

Apple products. See also iOS/Apple; iPad; iPhone; iPod; iTunes

Apple II, 7

Apple Macintosh, 7

Arkanoid, 386

AssetManager class, 117-118

assets

adding, 115-118

AssetManager class, 117-118

converting from one format to another, 115-116

copying, 121, 271

error handling, 119

InputStream object, 118

istream.close() method, 119

linking, 121

atan() and atan2() methods, Math class, 353

Atari devices

Breakout, 386

history, 7

Audacity audio editor, 214-215

formats supported, 217

audio files, with MediaPlayer, 213

adding to .redraw folder, 214-215

Android NDK support, 8

exporting, 217

formats

converting from one to another, 214-216

exporting, 215

performance issues, 215

supported, 214, 217

initializing, 214

playing, 217

R (resource identifiers), 215

audio files, with SoundPool

asset file extensions, 218

Audio Demo Program, 220-221

initializing, 218

loading resources, 218-219

playing, 219

multiple sounds, 218

R (resource identifiers), 219

AudioManager.STREAM_MUSIC parameter, 218

autorotation on screens, 159-160

AVD (Android Virtual Device) emulator

versus Android devices, 63-64

AVD Manager, 31, 33-34

creating, 32-33

limitations, 64

multi-touch input

receiving basic data, 149

receiving/storing values, 150-155

options

CPU/ABI field, 32

RAM size, 64

SD card field, 33

Skin, 106

Target field, 32, 56

WVGA800 display, 33, 64

running, 33-35, 54-59

single-touch input, 144

axis directions

accelerometer sensor, 161, 164

linear acceleration sensor, 169

B

back buffers, 111, 113-115

background scrolling, seamless texture, 371-374

BaseSensor class, 208-209

Basic Graphics Demo, 95-98, 129

beginDrawing() method, Engine class, 262, 365

Bitmap class, 111

alpha channels for transparencies, 121-124

android.graphics.Bitmap namespace, 112

assets

adding, 115-118

AssetManager class, 117-118

copying, 121, 271

error handling, 119

InputStream object, 118

istream.close() method, 119

linking, 121

back buffer, 111, 113-115

background scrolling, 372-374

Bitmap Loading Demo, 120, 125-126, 129-130

Config.ARGB_8888 parameter, 112, 119

file formats, 115

front buffer, 111

methods

BitmapFactory.decodeStream(), 118-119

createBitmap(), 112, 373-374

drawBitmap(), 120

Texture class, 246

BitmapFactory.decodeStream() method, 118-119

Bitmap knight [ ], 135

Bitmap Loading Demo, 120, 125-126, 129-130

bitmaps and animation, 269

Runnable Animation Demo, 134-140

walking character, 134-140

Bitmap knight [ ], 135

drawBitmap() method, 135

frames, 135

InputStream object, 135

for loops, 135

BMP file format, 115

bounding circles (radial) collision detection, 335-336

bounding rectangles (box) collision detection, 333-336

Box2D physics library, 233

box (bounding rectangles) collision detection, 333-336

boxes, 93-94

Breakout, 386

Buffered Graphics Demo, 113-115

buffers, front and back, 111, 113-115

C

C++ and Android NDK

libraries, 8

supplementing Android SDK, 8

support

for Open GL ES 2.0, 8

for Open SL ES 2.0, 8

Canvas class, 89-90

Basic Graphics Demo, 95-98, 129

Create Canvas Demo, source code, 83-85, 90

drawing

bitmaps, 120

canvas, 112

without onDraw() method, 132-133

game engine core, 227, 235

methods

beginDrawing(), 262

drawBitmap(), 120

drawBox(), 93-94

drawCircle(), 87-89, 93

drawColor(), 89

drawLines(), 93

drawRoundRect(), 94-95

drawText(), 99, 101-102

drawTriangle(), 95

getHolder(), 132

lockCanvas(), 132-133, 262

onDraw(), 88-89, 111, 131

invalidate(), 130

Paint.setColor(), 95, 99, 101-102

Paint.setStyle(), 95

Paint.setTextSize(), 99, 101-102

unlockCanvasAndPost(), 132-133, 262

portrait and landscape mode output, 99

Style.FILL, 95

Style.STROKE, 95

SurfaceHolder variable, 132-133

SurfaceView class, 132

View class, 132

Cartesian coordinate systems, 301-302

circles, 87-89, 93

CircularMovementAnimation class, 292

C# language

similar to Java, 78

XNA Game Studio, 78

.class extension, 8

collisioncheck() method, Engine class, 341-342, 368

CollisionDemo, 343-347

collision detection techniques

bounding circles, 335-336

bounding rectangles, 333-336

collision() method, Engine class, 337, 347, 366, 393

Commodore 64, history, 7

compass sensors, 195, 211

Config.ARGB_8888 parameter, 112, 119

Conley, Ron, 258

coordinate systems, 301-304

Cartesian, 301-302

transforming coordinates, 300, 303-305

cos() method, Math class, 350

createBitmap() method, 112

Create Canvas Demo

output, 85

running on devices, 90

source code, 83-85

Cupcake code name, 10

D

Dalvik Debug Monitor, 70

DDMS Perspective, Eclipse IDE, 70

densities for screens

AVD for each device tested, 107

AVD Skin option, 106

dark over light text display, 107

density-independent pixel (dip), 104

DisplayMetrics class, 106

general resolutions/densities, 106

general sizes/resolutions, 105

Screen Resolution Demo, 107-109

digital media industry, 9

DirectX SDK, 20

Documents app, 10

Donut code name, 10

double buffering, 111

drawBitmap() method, 120, 135

limitations, 308

Matrix class, 299, 305

drawBox() method, Canvas class, 93-94

drawCircle() method, Canvas class, 87-89, 93

drawColor() method

Canvas class, 89

Engine class, 365

draw(delta) method, Engine class, 228

drawing

bitmaps, 120

canvas, 112

without onDraw() method, 132-133

drawLines() method, 93

draw() method

Engine class, 262, 365, 393

Sprite class, 262, 290

drawRoundRect() method, 94-95

drawSheetFrame() method, Sprite or Texture classes, 273

drawStripFrame() method, Sprite class, 271

drawText() method, 99, 101-102

portrait and landscape mode output, 99

drawTriangle() method, 95

DrawView class

game engine core, 227

game engine rendering, 228

graphics, 88-89

threaded game loops, 130-131

E

Earth app, 10

Eclair code name, 10

Amazon Kindle Fire, 69

Eclipse IDE, 3, 8

.APK files (Android Packages), 233

Classic version, 25

DDMS Perspective, 70

downloading, 25

versions available, 25

Helios Service Release, 16, 25

installing

ADT plug-in, 25-28

with JDK, 16

for Java Developers version, 25

versus NetBeans, 9

official IDE, 25

Package Explorer, Assets folder, 116-118, 271

preferred for Android development, 16

programming games, 7

projects

Android project wizard, 230

Android “wizard” dialog, 80

Application Info dialog, 231

copying/pasting, 269

Java complier requirements, 140

Javadoc for self-documented code, 103-104

new projects, 230

new project target, 69-70, 231

Package Name field, 231-232

perspectives, Java, 149-150

properties, 233, 263

references, 263

versus NetBeans IDE, 80

and SDK, 40

build target, 45

NBAndroid plug-in, configuring, 49

new projects, 40-43

endDrawing() method, Engine class, 262, 365

Engine class

conditional test with alive property, 364-365

methods

addToGroup() method, 324, 392

beginDrawing(), 262, 365

collision(), 337, 347, 366, 393

collisioncheck(), 341-342, 368

draw(), 262, 365, 393

drawColor(), 365

draw(delta), 228

endDrawing(), 262, 365

getGroup(), 368

load(), 392

removeFromGroup(), 324

run(), 338-341, 365-367

toString(), 368

update(), 393

update(delta), 228

entity grouping, 322-324

LinkedList object, 321

adding properties, 322

initializing, 322

Entity Grouping Demo, 327-331

F

Feldman, Ari, 270

FenceBehavior class, 326-327, 362, 388-395

FLAC audio format, 217

Float2 or Float3 classes, 182-183

Float3 p_data variable, 193

for loops, 135

FrameAnimation class, 288-290

frames, 135

front buffers, 111

Froya code name, 10

G

game developers

compatibility warning, 6

porting to other platforms, 6

game engines

components, 227

design goals, 226-227

engine core component, 227

Engine class, 235-243

TextPrinter class, 244-246

Texture class, 246-247

Timer class, 243-244

Engine Test Demo Project

creating, 247-248

logging demo, 252-253

source code, 249-251

Game Engine Library project, 229-233, 288

android.engine.VectorMath class, 229

.APK file (Android Package), 233

creating, 230-232

DotProduct() method, 229

VectorMath class, 229

main thread component, 228

rendering component, 228

startup component, 227-228

Unity, 226

game examples

Ball and Paddle, 385

automated ball movement, 386-388

automated paddle restriction, 388-390

source code, 390-394

Shoot-’Em-Up

output, 375-394

source code, 374-395

getBitmap() method, Texture class, 246

getBounds() method, Sprite class, 342-343, 368

getBoundsScaled() method, Sprite class, 342-343

getCanvas() method, Sprite class, 262

getCollidable() method, Sprite class, 342-343

getCollided() method, Sprite class, 342-343

getGroup() method, Engine class, 368

getHolder() method, Canvas class, 132, 228

getIdentifier() method, Sprite class, 342-343

getName() method, Sprite class, 342-343

getOffender() method, Sprite class, 342-343

getSensorList() method, SensorManager class, 163

GIF file format, 115

GIMP graphic editor

alpha channels for transparencies, 121-124

converting assets from one format to another, 115-116

Gingerbread code name, 10

Google Drive app, 10

GPS location service versus sensors, 158

Graphics Demo project code, 86-87

Canvas class, 89-90

drawColor() method, 89

graphics shapes, 90

onDraw() method, 88-89

DrawView class, 88-89

MainActivity class, 88-89

package and import statements, 88

Paint class, 89

View class, 90

gravity sensors, 194

algorithm, 181

constants/values, 182

converting 3D to 2D coordinate, 183

Float2 or Float3 classes, 182-183

initializing, 181

onSensorChanged() method, 182

reading, 182

testing, 183-188

GSM 6.10 WAV (mobile) audio format, 217

gyroscope sensors, 194-195, 210

H

H15 Game Engine Library, 248

H16 Game Engine Library, 263

H16 Sprite Demo, 262

H17 Game Engine Library, 270

H19 Game Engine Library, 322

H23 Game Engine Library, 367, 375

H23 Velocity Scrolling Demo, 375

hand-held video game systems, 7

Helios Service Release, Eclipse IDE, 16, 25

Honeycomb code name, 10, 69

I

IBM PCs, 7

Ice Cream Sandwich code name, 3-4, 10, 69

Amazon Kindle Fire, 69

identity matrix, 300

IDEs (integrated development environments), 16

init() method, 252

InputStream object, 118, 135

int change constructor, 287

int maxAlpha constructor, 287

int() method, 390

int minAlpha constructor, 287

invalidate() method, 130

iOS/Apple, Android as derivative of, 9

iOS/Apple versus Android and Windows Phone

hardware control, 3

licensing, 4-6

market share, 4, 9, 12

iPad

adult toy, 7

versus Android, 9

development of, 9

iPhone

adult toy, 7

versus Android 4, 4

development from iPod, 9

and Palm Pilot, 9

Plants vs. Zombies, 7

and Pocket PC, 9

release in 2007, 9

Unity game engine support, 226

iPod

versus Android, 9

iPhone development, 9

istream.close() method, 119

iTunes, development of, 9

J

JAR (Java Archive) utility, 269

Java

compiler requirements, 140

importance of experience, 8

JAR (Java Archive) utility, 269

modulus operator, 273

new classes, 288-289

programming games, 7

similar to C# language, 78

Java Development Kit. See JDK

Javadoc for self-documented code, 103-104

.java extension, 8

Java Runtime Environment. See JRE

JDK (Java Development Kit), 8

Enterprise Edition, 16

installing, with Eclipse, 16

Java Standard Edition 7, 16

NetBeans

downloading, 17

installing, 16-20

installing, default locations, 19-20

license agreement, 18-20

plug-in for, 16

versions available, 17

Jelly Bean code name, 3, 10, 69

JPEG file format, 115

JRE (Java Runtime Environment), 8, 16

K

Katz, Phil, 233

Kindle Fire, Amazon

Android 2.2 Eclair, 69

Android 4.0 Ice Cream Sandwich, 69

sensors reported, 164

L

landscape orientation, 99, 159-160

licensing

Android OS/devices, 4, 6, 10

iOS/Apple, 4-6

lifetimes for programs (activities), 79

foreground, 79

visible, 79

light detector sensor, 195

Linear Acceleration Demo, 171-177

linear acceleration sensors, 193, 210

versus accelerometer, 169

initializing sensor, 170-171

methods

onPause(), 171

onResume(), 171

registerListener(), 171

unregisterListener(), 171

reading sensor, 171

velocity, 170

X and Y values, 169

lines, 93

LinkedList object, 321, 392

adding properties, 322

initializing, 322

Linux

and Android development, 8, 66

basis for Android 4, 3

versus iOS and Windows Phone OS, licensing, 4

load() method, Engine class, 252, 392

lockCanvas() method, 132-133, 262

Log statement, 252

M

M4A (AAC) (FFmpeg) audio format, 217

Mac OS X

and Android development, 66

4.8 or later, 8

Plants vs. Zombies, 7

magnetic field (compass), 157-158

MainActivity class, 88-89

main() function, MAC OS X, versus Activity class, 77

Maps app, 10

market share

Android OS devices, 4, 9, 12

iOS/Apple, 4, 9, 12

Windows Phone, 4, 9

Math class methods

atan() and atan2()s, 353

cos(), 350

sin(), 350

toDegrees(), 305, 350

toRadians(), 305, 350

Matrix class, 300-301

values stored, 303-304

matrix rotation

radians versus degrees, 305

rotation values, 305

X, Y, and Z components, 306

transformations with Sprite class, 307

combined with scaling and translation, 307-308

matrix scaling

methods, 306-307

scale values, 307

transformations with Sprite class, 307

combined with rotation and translation, 307-308

Matrix Transforms Demo

getting screen resolution, 309

rendering frames to scratch bitmaps, 308

Sprite class

transforming rotation, scaling, and translation, 307-308

updated, 311-316

warping behavior, 309-311

matrix translation

coordinate systems, 301-304

identity matrix, 300

transformations with Sprite class, 307

combined with rotation and scaling, 307-308

transforming coordinates, 300, 303-305

zero matrix, 300

MediaPlayer audio files, 213

adding to .redraw folder, 214-215

Android NDK support, 8

exporting, 217

formats

converting from one to another, 214-216

exporting, 215

performance issues, 215

supported, 214, 217

initializing, 214

playing, 217

R (resource identifiers), 215

MediaPlayer class

audio files, 213

initializing, 214

method comments, Javadoc, 103-104

Microsoft, XNA Game Studio, similar to Android, 78

MIDI file format, 214

modulus operator, Java, 273

MotionEvent parameter, 151

multi-touch, 151

getX() and getY() methods, 149

single- and multi-touch, get.PointerCount() method, 149

single-touch, 144-147

MOVE event, 144

MP2 audio format, 217

MP3 audio format, 9, 214, 217

MS-DOS OS, 7

Multi-touch Demo, 150-155

multi-touch input

methods

getX() and getY(), 149

onTouch(), 151

Point(), 151

MotionEvent parameter, 151

Multi-touch Demo, 151-155

receiving basic data, 149

and storing values, 150-155

receiving/storing values, 150-155

N

Napster, 9

NBAndroid plug-in, 36, 38-40

configuring, 49

New Android Application dialog, 80-81

NetBeans IDE, 3, 8

available plug-ins, 38-39

versus Eclipse, 9

“Hello, Android!” program

building, 62

editing, 60

running, 62

and JDK

downloading, 17

installing, 16-20

installing, default locations, 19-20

installing plug-in, 16

license agreement, 18-20

plug-in for, 16

NBAndroid plug-in, 36, 38-40

configuring, 49

new projects, 47-48

Output window, 53

package naming, 51

running project in AVD, 54-59

Target Platform table, 51

Output window, 53, 62

Package Name field, 51, 82

programming games, 7

Project Browser, Source Packages, 82

projects, 47-48

creating, 79-81

New Android Application dialog, 80-82

running in AVD, 54-59

versus Eclipse IDE, 80

and SDK

available plug-ins, 38-39

NBAndroid plug-in, 36, 38-40

Target Platform table, 51, 82

version 7.1, 16-17

New Android Project Wizard, 43-44

Nintendo Entertainment System (NES), 7

DSi and Plants vs. Zombies, 7

Nintendo DS family, 7

Wii, 7

O

OGG file format, 214

Ogg Vorbis audio format, 217

onAccuracyChanged() method, 158-159

onCreate() method

Activity class, 78-79, 85

game engine startup, 227

engine test, 252

SensorManager class, 158-159, 163

Tricorder class, 197

onDestroy() method, Activity class, 78-79

onDraw() method

Canvas class, 88-89, 111, 131-132

Context parameter, 131

game engine rendering, 228

invalidate() method, 130

onPause() method

Activity class, 78, 85-86

linear acceleration, 171

Tricorder class, 197

onResume() method

Activity class, 78, 85-86

linear acceleration, 171

Tricorder class, 197

onSensorChanged() method, 158-159

gravity sensors, 182

linear acceleration sensors, 171

pressure sensors, 189

onStart() method, Activity class, 78-79, 85

onStop() method, Activity class, 78-79

OnTouchListener

game engine core, 227

single-touch input, 143-148

onTouch() method, 151

multi-touch, 151

single-touch, 144-147

Open GL ES 2.0 and Open SL ES 2.0, 8

orientation

disabling changes, 159-160

gravity sensors, 182

landscape and portrait, 159-160

drawText() method, 99

OS X (Apple), 7

P

Package Explorer, 43

bitmap assets, 271

File Operation confirmation dialog, 116-117

file properties, 117-118

Paint class, 89

Paint.NET graphic editor, 115-116

Paint.setColor() method, 95, 99-102

Paint.setStyle() method, 95

Paint.setTextSize() method, 99-102

Palm Pilot, and iPhone, 9

pause() method, Thread class, 131

PCs, history of use, 7

Picasa app, 10

pixel buffer access, Android NDK, 8

Plants vs. Zombies, 7

PNG file format, 115

Pocket PC, and iPhone, 9

podcasts, 9

Point() points, 151

PopCap Games, Plants vs. Zombies, 7

portrait orientation

Canvas class output, 99

disabling accelerometer changes, 159-160

postRotate() method, Matrix class, 305

postScale() method, Matrix class, 307

postTranslate() method, Matrix class, 304-305

Preferences, Eclipse IDE, Android build target, 45

preRotate() method, Matrix class, 305

preScale() method, Matrix class, 307

pressure sensors, 210

preTranslate() method, Matrix class, 304-305

Prokein, Reiner, free game art, 134

castle images, 116

character sprites

dragon, 257

knight, 257

trees, 255

proximity sensors, 177-178, 193-194, 210

infrared detector, 177

uses, 178

R

radial (bounding circles) collision detection, 335-336

ReboundBehavior class, 387-388

registerListener() method, linear acceleration, 171

removeFromGroup() method, Engine class, 324

resolutions for screens

AVD for each device tested, 107

AVD Skin option, 106

bitmaps, 112

dark over light text display, 107

density-independent pixel (dip), 104

DisplayMetrics class, 106

general screen

resolutions/densities, 106

sizes/resolutions, 105

Screen Resolution Demo, 107-109

resume() method, Thread class, 131

rounded rectangles, 94-95

RTS (real-time strategy) games, 353

run() method

Engine class, 338, 366-367

Runnable class, 130-132

thread updating, 322

Runnable Animation Demo, 134-140

Runnable class, 130

game engine core, 227

run() method, 130-132, 228

S

Samsung Galaxy Nexus, 11

Android hardware, 12

Samsung Galaxy Tab, 11-12

screen autorotation, 159-160

screen densities and resolutions

AVD for each device tested, 107

AVD Skin option, 106

dark over light text display, 107

density-independent pixel (dip), 104

DisplayMetrics class, 106

general resolutions/densities, 106

general sizes/resolutions, 105

Screen Resolution Demo, 107-109

Screen Resolution Demo, 107-109

SDK (Software Development Kit), 7-8

ADT plug-in, 25-28

Android NDK supplement, 8

Canvas class, 90

downloading, 20-21

Eclipse IDE, 40

build target, 45

NBAndroid plug-in, configuring, 49

new projects, 40-43

history of Android 4, 9

installing, 19-23

default folder, 22

JDK required, 21

NetBeans IDE

available plug-ins, 38-39

NBAndroid plug-in, 36, 38-40

operating systems supported, 8

SDK Manager

additional versions, 24

downloading/installing all packages, 25-26

enabling, 23

Extras, Android Support, 24

running, 23-24

verification dialog, 25

sensors supported, 157-158

system requirements, 8-9

Sega Master System (SMS), 7

self-documented code, 103-104

testing, 104

Sensor class, 160, 162, 165

SensorEvent class, 162, 165, 189

SensorEvent.values array, 191

SensorEventListener class, 162, 165

implements statement, 158, 171

methods

onAccuracyChanged(), 158, 159

onSensorChanged(), 158-159, 171, 189

SensorManager class, 158, 162, 170

gravity constants/values, 182

methods

getSensorList(), 163

onCreate(), 158-159, 163

SensorPanel class, 202-203

sensors

Accelerometer Demo, 164-167

accelerometer sensor, 157-158, 193, 209

accelMotion variable, 162

initializing, 160-161

versus linear acceleration, 169

movement of, 161-162

android.hardware classes, 162

BaseSensor class, 192

compass sensor, 195, 211

GPS location service not sensor, 158

gravity sensor, 194

algorithm, 181

constants/values, 182

converting 3D to 2D coordinate, 183

Float2 or Float3 classes, 182-183

initializing, 181

onSensorChanged() method, 182

reading, 182

testing, 183-188

Gravity Sensor Demo, 183-188

gyroscope sensor, 194-195, 210

light detector sensor, 195

Linear Acceleration Demo, 171-177

linear acceleration sensor, 193, 210

versus accelerometer, 169

initializing sensor, 170-171

onPause() method, 171

onResume() method, 171

reading sensor, 171

registerListener() method, 171

unregisterListener() method, 171

velocity, 170

X and Y values, 169

list of, getting, 163-164

magnetic field (compass), 157-158

pressure sensor, 188, 210

atmospheric pressure levels, 189

initializing, 189

reading, 189

proximity sensor, 177-178, 193-194, 210

infrared detector, 177

uses, 178

screen autorotation, 159-160

Tricorder Demo, 196-211

Sensors class, 205

setBounds() method, Matrix class, 342-343

setCollidable() method, Matrix class, 342-343

setCollided() method, Matrix class, 342-343

setIdentifier() method, Matrix class, 342-343

setName() method, Matrix class, 342-343

setOffender() method, Matrix class, 342-343

setRotate() method, Matrix class, 305, 308

setScale() method, Matrix class, 306, 308

setTitle() method, Activity class, 78

setTranslate() method, Matrix class, 304, 308

single-touch input

MotionEvent parameter, 144-147

get.PointerCount() method, 149

MOVE event, 144

OnTouchListener, 143-148

onTouch() method, 144-147

Single Touch Input Demo, 144-148

testing on emulator, 144

UP event, 144

View class, 143-148

Single Touch Input Demo, 144-148

sin() method, Math class, 350

Sony products, Walkman, 9

Sony PSP family, 7

SoundPool audio files

asset file extensions, 218

Audio Demo Program, 220-221

initializing, 218

loading resources, 218-219

playing, 219

multiple sounds, 218

R (resource identifiers), 219

SoundPool class

initializing, 218

sound effects, 218

SpinAnimation class, 290-291

Sprite class, 258-260

blueprinting versus evolving, 259

enhancements, 284-286

methods

addAnimation(), 287

animate(), 283

draw(), 262

drawSheetFrame(), 273

getBounds(), 342-343

getBoundsScaled(), 342-343

getCanvas(), 262

getCollidable(), 342-343

getCollided(), 342-343

getIdentifier(), 342-343

getName(), 342-343

getOffender(), 342-343

properties, adding, 342

setBounds(), 342-343

setCollidable(), 342-343

setCollided(), 342-343

setIdentifier(), 342-343

setName(), 342-343

setOffender(), 342-343

sprites

character sprites, 257-258

creating with animation, 287-288

creating without animation, 283

drawing requirements, 262

pointing in direction of movement, 352-354

prop sprites, 255-256

transforming rotation, scaling, and translation, 307-308

subpixel translation support, 355-358

Texture class, 261

updated, 311-316

Sprite Demo

source code, 262-265

testing Sprite class, 265-266

sprite sheets

advantages, 270

animation frames

creating from sprite sheets, 272-273

tiling to store as sprite sheets, 270

for asteroid animation, 273-274

for zombie animation, 275-274

Sprite Transforms Demo, 316-319

stopwatch() method, Timer class, 243

strokes and fills, changing styles, 95

Style.FILL, 95

Style.STROKE, 95

supported by SDK, 157-158

SurfaceHolder class

beginDrawing() method, 262

drawing, 132-133

game engine rendering, 228

lockCanvas() method, 262

SurfaceView class

beginDrawing() method, 262

game engine core, 227, 235

threaded game loops, 131-132

System.currentTimeMillis() method, Timer class, 243

system requirements, SDK, 8-9

T

Taito’s Arkanoid, 386

Target Platform table, NetBeans IDE, 51

Teach Yourself Windows Phone 7 Game Programming in 24 Hours, 6

TextPrinter class, 244-246

texture atlas. See sprite sheets

Texture class

Bitmap object, 246

core engine classes, 246-247

drawSheetFrame() method, 273

getBitmap() method, 246

Sprite class, 261

TextView widget, 63, 83

threaded game loops

Context parameter, 131

methods

invalidate(), 130

onDraw(), 131-132

Runnable class, 130

run() method, 130-132

SurfaceView class, 131

Thread object, 131

pause() method, 131

resume() method, 131

Thread object, 131

pause() method, 131

resume() method, 131

Thread.sleep() method, Timer class, 243

ThrobAnimation class, 291-292, 324-325

Timer class methods, 243-244

stopwatch(), 243

System.currentTimeMillis(), 243

Thread.sleep(), 243

toDegrees() method, Math class, 305, 350

toRadians() method, Math class, 305, 350

Toshiba Thrive 7″ tablet, 69

sensors reported, 163

toString() method, Engine class, 368

touch input

multi-touch input

MotionEvent parameter, 151

MotionEvent parameter, getX() and getY() methods, 149

Multi-touch Demo, 151-155

onTouch() method, 151

Point() points, 151

receiving basic data, 149

receiving/storing values, 150-155

single-touch input

MotionEvent parameter, 144-147

get.PointerCount() method, 149

MOVE event, 144

OnTouchListener, 143-148

onTouch() method, 144-147

Single Touch Input Demo, 144-148

testing on emulator, 144

UP event, 144

View class, 143-148

transparencies, alpha channels, 121-124

triangles, 95

Tricorder Demo (sensors)

classes

Accelerometer, 209

BaseSensor, 208-209

CompassSensor, 211

GyroscopeSensor, 210

LinearAcceleration, 210

PressureSensor, 210

ProximitySensor, 210

SensorPanel, 202-203

Sensors, 205

events, trapping, 205-206

events, unused accuracy, 207

helper methods, 201-202

panels, 199-200

panels, drawing, 201

pausing and resuming, 207-208

printing text lines, 203-204

updating sensors, 200-201

TYPE sensors

ACCELEROMETER, 157

AMBIENT_TEMPERATURE, 157

GRAVITY, 157, 181, 182

GYROSCOPE, 157

LIGHT, 157

LINEAR_ACCELERATION, 157, 171

MAGNETIC_FIELD, 157

PRESSURE, 157

PROXIMITY, 158, 177

RELATIVE_HUMIDITY, 158

ROTATION_VECTOR, 158

U

unlockCanvasAndPost() method, 132-133, 262

unregisterListener() method, linear acceleration, 171

update(delta) method, Engine class, 228

update() method, Engine class, 393

UP event, 144

USB device drivers versus ABD (Android Debug Bridge), 65-68

V

vector shapes, 93

Basic Graphics Demo, 95-98

boxes, 93-94

circles, 87-89, 93

lines, 93

rounded rectangles, 94-95

strokes and fills, changing styles, 95

triangles, 95

velocity

angular velocity, 351

calculating from specific direction, 349

radians versus degrees, 350

trigonometry functions, 350

linear acceleration sensors, 170

pointing sprites to direction of movement, 352-353

calculating angles to targets, 353-354

sine and cosine relationships, 350-351

View class, 90, 132, 143-148

W

WarpBehavior class, 325-326

warping behavior, 309-311

WarpRect class, 309-311

WAV audio format, 214

WAV (Microsoft) signed 16-bit PCM audio format, 217

WEBP file format, 115

Wikipedia, 354

Winamp, 9

Windows Media Player, 9

Windows Mobile OS. See Windows Phone

Windows Phone

adult toy, 7

licensing, 4

market share, 4, 9

versus Google and Apple

Plants vs. Zombies, 7

Windows versions, supported by Android SDK

Vista, 8

Windows 7, 8

XP, 8

WinMain() function, Windows versus Activity class, 77

WMA (version 2) (FFmpeg) audio format, 217

WSVGA screen display, 107

WXGA800 screen display, 107

X

Xbox 360, Plants vs. Zombies, 7

XNA Game Studio, Microsoft, 78

Z

zero matrix, 300

ZIP compression algorithm, 233

ZIP library, 269

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.221.163.13