Submit Search
Upload
Making things Move on the iPhone
•
2 likes
•
962 views
J
John Wilker
Follow
Keith Peters - "Making things Move on the iPhone", 360|iDev San Jose '09
Read less
Read more
Technology
News & Politics
Report
Share
Report
Share
1 of 88
Download now
Download to read offline
Recommended
Exporting from ebsco to ref works
Exporting from ebsco to ref works
Bialik Hebrew Day School
Refworks 2.0 in 15 minutes
Refworks 2.0 in 15 minutes
Bialik Hebrew Day School
Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11
John Wilker
Flash on Tap slides
Flash on Tap slides
jkosoy
The ABC of User Testing
The ABC of User Testing
GabrielRadic
OpenID DrupalCon 2009
OpenID DrupalCon 2009
James Walker
Encontro Locaweb Porto Alegre
Encontro Locaweb Porto Alegre
Fabio Akita
DrupalCon DC: Busines Analytics with Views
DrupalCon DC: Busines Analytics with Views
Irakli Nadareishvili
Recommended
Exporting from ebsco to ref works
Exporting from ebsco to ref works
Bialik Hebrew Day School
Refworks 2.0 in 15 minutes
Refworks 2.0 in 15 minutes
Bialik Hebrew Day School
Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11
John Wilker
Flash on Tap slides
Flash on Tap slides
jkosoy
The ABC of User Testing
The ABC of User Testing
GabrielRadic
OpenID DrupalCon 2009
OpenID DrupalCon 2009
James Walker
Encontro Locaweb Porto Alegre
Encontro Locaweb Porto Alegre
Fabio Akita
DrupalCon DC: Busines Analytics with Views
DrupalCon DC: Busines Analytics with Views
Irakli Nadareishvili
Introtoduction to cocos2d
Introtoduction to cocos2d
John Wilker
Getting Started with OpenGL ES
Getting Started with OpenGL ES
John Wilker
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.
John Wilker
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
John Wilker
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
John Wilker
Getting Started with iPhone Game Development
Getting Started with iPhone Game Development
John Wilker
Internationalizing Your Apps
Internationalizing Your Apps
John Wilker
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application Responsiveness
John Wilker
I Phone On Rails
I Phone On Rails
John Wilker
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLime
John Wilker
Starting Core Animation
Starting Core Animation
John Wilker
P2P Multiplayer Gaming
P2P Multiplayer Gaming
John Wilker
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve Responsiveness
John Wilker
Leaving Interface Builder Behind
Leaving Interface Builder Behind
John Wilker
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouch
John Wilker
Accelerometer and OpenGL
Accelerometer and OpenGL
John Wilker
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and Framework
John Wilker
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegate
John Wilker
Using SQLite
Using SQLite
John Wilker
From Flash to iPhone
From Flash to iPhone
John Wilker
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
FIDO Alliance
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
CzechDreamin
More Related Content
More from John Wilker
Introtoduction to cocos2d
Introtoduction to cocos2d
John Wilker
Getting Started with OpenGL ES
Getting Started with OpenGL ES
John Wilker
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.
John Wilker
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
John Wilker
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
John Wilker
Getting Started with iPhone Game Development
Getting Started with iPhone Game Development
John Wilker
Internationalizing Your Apps
Internationalizing Your Apps
John Wilker
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application Responsiveness
John Wilker
I Phone On Rails
I Phone On Rails
John Wilker
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLime
John Wilker
Starting Core Animation
Starting Core Animation
John Wilker
P2P Multiplayer Gaming
P2P Multiplayer Gaming
John Wilker
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve Responsiveness
John Wilker
Leaving Interface Builder Behind
Leaving Interface Builder Behind
John Wilker
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouch
John Wilker
Accelerometer and OpenGL
Accelerometer and OpenGL
John Wilker
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and Framework
John Wilker
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegate
John Wilker
Using SQLite
Using SQLite
John Wilker
From Flash to iPhone
From Flash to iPhone
John Wilker
More from John Wilker
(20)
Introtoduction to cocos2d
Introtoduction to cocos2d
Getting Started with OpenGL ES
Getting Started with OpenGL ES
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Started with iPhone Game Development
Getting Started with iPhone Game Development
Internationalizing Your Apps
Internationalizing Your Apps
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application Responsiveness
I Phone On Rails
I Phone On Rails
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLime
Starting Core Animation
Starting Core Animation
P2P Multiplayer Gaming
P2P Multiplayer Gaming
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve Responsiveness
Leaving Interface Builder Behind
Leaving Interface Builder Behind
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouch
Accelerometer and OpenGL
Accelerometer and OpenGL
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and Framework
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegate
Using SQLite
Using SQLite
From Flash to iPhone
From Flash to iPhone
Recently uploaded
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
FIDO Alliance
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
CzechDreamin
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
Femke de Vroome
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
CzechDreamin
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
UXDXConf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
FIDO Alliance
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
CzechDreamin
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
FIDO Alliance
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
UXDXConf
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FIDO Alliance
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Mark Billinghurst
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
DianaGray10
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
FIDO Alliance
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
CzechDreamin
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
FIDO Alliance
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
UXDXConf
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
UXDXConf
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
IoTAnalytics
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
FIDO Alliance
Recently uploaded
(20)
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Making things Move on the iPhone
1.
Making Things Move
on the iPhone Keith Peters www.bit-101.com Wednesday, March 4, 2009
2.
www.bit-101.com/
360iDev/ presentation.zip Wednesday, March 4, 2009
3.
CoreAnimation Wednesday, March 4,
2009
4.
Background Wednesday, March 4,
2009
5.
Background
2005 Wednesday, March 4, 2009
6.
Background
2005 2007 Wednesday, March 4, 2009
7.
Background
2005 2007 2008 Wednesday, March 4, 2009
8.
Wednesday, March 4,
2009
9.
Wednesday, March 4,
2009
10.
Wednesday, March 4,
2009
11.
What is Animation? Wednesday,
March 4, 2009
12.
Wednesday, March 4,
2009
13.
Wednesday, March 4,
2009
14.
Coded Animation Wednesday, March
4, 2009
15.
Coded Animation
Apply a rule Wednesday, March 4, 2009
16.
Coded Animation
Apply a rule Change something Wednesday, March 4, 2009
17.
Coded Animation
Apply a rule Update Change the screen something Wednesday, March 4, 2009
18.
Coded Animation
Apply a rule Update Change the screen something Wednesday, March 4, 2009
19.
Make something
to move Wednesday, March 4, 2009
20.
Make something
to move Wednesday, March 4, 2009
21.
Make something
to move (project files: Animation101) Wednesday, March 4, 2009
22.
// interface
UIImageView *ball; // viewDidLoad ball = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@quot;ball.pngquot;]]; [self.view addSubview:ball]; Wednesday, March 4, 2009
23.
NSTimer Wednesday, March 4,
2009
24.
NSTimer [NSTimer
scheduledTimerWithTimeInterval:1.0/60.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; Wednesday, March 4, 2009
25.
Moving UIViews Wednesday, March
4, 2009
26.
Moving UIViews
• view.center Wednesday, March 4, 2009
27.
Moving UIViews
• view.center • view.transform Wednesday, March 4, 2009
28.
Moving UIViews
• view.center • view.transform • view.frame Wednesday, March 4, 2009
29.
// interface
float x; float y; // viewDidLoad x = 50.0; y = 50.0; Wednesday, March 4, 2009
30.
ball.center = CGPointMake(x,
y); x += 2.0; y += 3.0; Wednesday, March 4, 2009
31.
ball.frame = CGRectMake(x,
y, width, height); x += 2.0; y += 3.0; Wednesday, March 4, 2009
32.
ball.transform =
CGAffineTransformMakeTranslation(x, y); x += 2.0; y += 3.0; Wednesday, March 4, 2009
33.
ball.transform =
CGAffineTransformTranslate( ball.transform, 2.0, 3.0); Wednesday, March 4, 2009
34.
Which is fastest? Wednesday,
March 4, 2009
35.
Which is fastest?
• view.center Wednesday, March 4, 2009
36.
Which is fastest?
• view.center • view.transform (~2-3x) Wednesday, March 4, 2009
37.
Which is fastest?
• view.center • view.transform (~2-3x) • view.frame (~2-3x) Wednesday, March 4, 2009
38.
Velocity
(project files:Velocity) Wednesday, March 4, 2009
39.
Velocity
+ (project files:Velocity) Wednesday, March 4, 2009
40.
speed
and direction Wednesday, March 4, 2009
41.
speed
and direction y velocity x velocity Wednesday, March 4, 2009
42.
- y velocity
- x velocity + x velocity + y velocity Wednesday, March 4, 2009
43.
Wednesday, March 4,
2009
44.
// interface:
float vx; float vy; Wednesday, March 4, 2009
45.
// interface:
float vx; float vy; // viewDidLoad: vx = 2.0; vy = 3.0; Wednesday, March 4, 2009
46.
// interface:
float vx; float vy; // viewDidLoad: vx = 2.0; vy = 3.0; // onTimer: ball.center = CGPointMake(x, y); x += vx; y += vy; Wednesday, March 4, 2009
47.
speed
angle (project files: AngularVelocity) Wednesday, March 4, 2009
48.
y velocity
speed = sin(angle) x speed angle x velocity = cos(angle) x speed (project files: AngularVelocity) Wednesday, March 4, 2009
49.
Wednesday, March 4,
2009
50.
// interface:
float angle; float speed; Wednesday, March 4, 2009
51.
// interface:
// viewDidLoad: float angle; angle = 45.0; float speed; speed = 4.0; Wednesday, March 4, 2009
52.
// interface:
// viewDidLoad: float angle; angle = 45.0; float speed; speed = 4.0; // onTimer: ball.center = CGPointMake(x, y); x += cos(angle * M_PI / 180.0) * speed; y += sin(angle * M_PI / 180.0) * speed; Wednesday, March 4, 2009
53.
Acceleration
(project files: Acceleration) Wednesday, March 4, 2009
54.
Acceleration
+ (project files: Acceleration) Wednesday, March 4, 2009
55.
Wednesday, March 4,
2009
56.
// interface:
float ax; float ay; Wednesday, March 4, 2009
57.
// interface:
// viewDidLoad: float ax; ax = 0.07; float ay; ay = 0.1; Wednesday, March 4, 2009
58.
// interface:
// viewDidLoad: float ax; ax = 0.07; float ay; ay = 0.1; // onTimer: ball.center = CGPointMake(x, y); x += vx; y += vy; vx += ax; vy += ay; Wednesday, March 4, 2009
59.
Bouncing
(project files: Bouncing) Wednesday, March 4, 2009
60.
Wednesday, March 4,
2009
61.
-x velocity y
velocity y velocity x velocity Wednesday, March 4, 2009
62.
Wednesday, March 4,
2009
63.
// interface:
float bounce; Wednesday, March 4, 2009
64.
// interface:
float bounce; // viewDidLoad: bounce = -1.0; Wednesday, March 4, 2009
65.
ball.center = CGPointMake(x,
y); x += vx; y += vy; if(x > 300) // 320 - radius (20) { x = 300; vx *= bounce; } else if(x < 20) // 0 + radius { x = 20; vx *= bounce; } Wednesday, March 4, 2009
66.
if(y > 440)
// 460 - radius { y = 440; vy *= bounce; } else if(y < 20) // 0 + radius { y = 20; vy *= bounce; } Wednesday, March 4, 2009
67.
Gravity
acceleration (+y) Wednesday, March 4, 2009
68.
Wednesday, March 4,
2009
69.
// interface:
float gravity; Wednesday, March 4, 2009
70.
// interface:
float gravity; // viewDidLoad: gravity = 0.5; Wednesday, March 4, 2009
71.
// interface:
float gravity; // viewDidLoad: gravity = 0.5; // onTimer: vy += gravity; Wednesday, March 4, 2009
72.
Wednesday, March 4,
2009
73.
acceleration.y
acceleration.x Wednesday, March 4, 2009
74.
@interface GravityViewController :
UIViewController <UIAccelerometerDelegate> { UIImageView *ball; float x; float y; float vx; float vy; float bounce; CGPoint gravity; } Wednesday, March 4, 2009
75.
Wednesday, March 4,
2009
76.
// viewDidLoad
gravity = CGPointZero; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; Wednesday, March 4, 2009
77.
// viewDidLoad
gravity = CGPointZero; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { gravity = CGPointMake(acceleration.x, -acceleration.y); } Wednesday, March 4, 2009
78.
// viewDidLoad
gravity = CGPointZero; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { gravity = CGPointMake(acceleration.x, -acceleration.y); } // onTimer vx += gravity.x; vy += gravity.y; Wednesday, March 4, 2009
79.
Do we still
have time? Wednesday, March 4, 2009
80.
Dragging and Throwing Wednesday,
March 4, 2009
81.
Wednesday, March 4,
2009
82.
// interface
BOOL dragging; Wednesday, March 4, 2009
83.
// interface
// viewDidLoad BOOL dragging; dragging = NO; Wednesday, March 4, 2009
84.
// interface
// viewDidLoad BOOL dragging; dragging = NO; - (void)onTimer { if(!dragging) { ... } } Wednesday, March 4, 2009
85.
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint point = [touch locationInView:self.view]; float dx = point.x - x; float dy = point.y - y; float dist = sqrt(dx * dx + dy * dy); if(dist < 20) { dragging = YES; x = point.x; y = point.y; vx = 0; vy = 0; } } Wednesday, March 4, 2009
86.
- (void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event { dragging = NO; } Wednesday, March 4, 2009
87.
- (void)touchesMoved:(NSSet *)touches
withEvent:(UIEvent *)event { if(dragging) { UITouch *touch = [touches anyObject]; CGPoint point = [touch locationInView:self.view]; vx = point.x - x; vy = point.y - y; x = point.x; y = point.y; ball.center = point; } } Wednesday, March 4, 2009
88.
Thank you
• Keith Peters • kp@bit-101.com • www.bit-101.com • www.wickedpissahgames.com • www.bit-101.com/360iDev/presentation.zip Wednesday, March 4, 2009
Download now