Enviar pesquisa
Carregar
Making things Move on the iPhone
•
2 gostaram
•
962 visualizações
J
John Wilker
Seguir
Keith Peters - "Making things Move on the iPhone", 360|iDev San Jose '09
Leia menos
Leia mais
Tecnologia
Notícias e política
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 88
Baixar agora
Baixar para ler offline
Recomendados
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
Recomendados
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
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
Mais conteúdo relacionado
Mais de 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
Mais de 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
Último
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Lars Bell
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
DianaGray10
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
LoriGlavin3
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
Kalema Edgar
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
mohitsingh558521
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
NavinnSomaal
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Precisely
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
MounikaPolabathina
Último
(20)
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
How to write a Business Continuity Plan
How to write a Business Continuity Plan
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
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
Baixar agora