Suche senden
Hochladen
Making things Move on the iPhone
•
2 gefällt mir
•
962 views
J
John Wilker
Folgen
Keith Peters - "Making things Move on the iPhone", 360|iDev San Jose '09
Weniger lesen
Mehr lesen
Technologie
News & Politik
Melden
Teilen
Melden
Teilen
1 von 88
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
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
Empfohlen
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
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Weitere ähnliche Inhalte
Mehr von 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
Mehr von 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
Kürzlich hochgeladen
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
2toLead Limited
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
shyamraj55
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Alan Dix
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
Neo4j
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
HostedbyConfluent
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Patryk Bandurski
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
Softradix Technologies
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Sinan KOZAK
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Scott Keck-Warren
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
OnBoard
Kürzlich hochgeladen
(20)
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
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
Jetzt herunterladen