Upload
johan-lindfors
View
339
Download
0
Tags:
Embed Size (px)
DESCRIPTION
A presentation delivered at DevSum11 in Stockholm 2011-05-18. Topic is around developing Windows Phone 7 applications and what I've learned in the process of building and publishing both XNA and Silverlight applications.
Citation preview
Dev WP7 – IRL
Johan Lindfors
agenda
• inspiration
• planering
• design
• utveckling
• publicering
phoneBeat
file | new start inspiration Customer Design Experience Plaform
www.windowsphoneapplist.com
Design Inspiration Utveckling
Design Inspiration Utveckling
file | new start inspiration planering Design Experience Plaform
cocktail flow
usa today
runkeeper
harbor master
file | new Start inspiration planering design Experience Plaform
“Marketing by not asking any questions
first!“
– Percy Nilegård
ho
hen
hy
here
hat
planera & fokusera
• gör en sak riktigt, riktigt bra
• inga kruseduller
• förhindra misstag
• ”don’t make me think”
Who – personer som tränar
What – registrera träningstillfällen
When – efter att de tränat klart
Where – på gymmet
Why – för att dela med sig och tävla
file | new Start Philosophy planering design utveckling Plaform
metro
• design för utvecklare
• struktur, enkelhet, innehåll
• text
• rörelse
pivot eller panorama?
www.jeff.wilcox.name/2011/03/metro-design-guide-v1/
file | new Start Philosophy Customer design utveckling publicering
mvvm
• prism
• caliburn micro
• mvvmlight
• ultralight.mvvm
demo
nätverk
• asynkrona anrop
• webclient eller httpWebRequest
• async ctp
demo
lagra data
• isolatedstorage
• serialisering
• xml/json/binärt
• inställningar
demo
lokalisering
• cultureinfo
• resurser
• kod
• xaml
demo
prestanda
• uppfattad vs verklig
• använd rörelse
• trådhantering
• analysera och optimera
• testa på en riktig enhet
file | new Start Philosophy Customer Design utveckling publicering
marketplace
• testa, testa, testa
• lokal struktur
• uppdateringar
• auto-publicering
tripeaks solitaire
• fabrication games
• äkta 3D
• all kod i objective-c
-(BOOL) animate { if([self animation] == nil) { [self draw]; return NO; } else { BOOL animationDone = [[self animation] animate]; [self draw]; if (animationDone) { x += [[self animation] currentX]; y += [[self animation] currentY]; z += [[self animation] currentZ]; rotation += [[self animation] currentRotation]; [animations removeObjectAtIndex:0]; } return animationDone; } }
public bool Animate() { if (this.Animation == null) { this.Draw(); return false; } else { bool animationDone = this.Animation.Animate(); this.Draw(); if (animationDone) { x += this.Animation.CurrentX; y += this.Animation.CurrentY; z += this.Animation.CurrentZ; rotation += this.Animation.CurrentRotation; animations.RemoveAt(0); } return animationDone; } }
public bool Animate(GraphicsDevice graphics, BasicEffect effect) { if (this.Animation == null) { this.Draw(graphics, effect); return false; } else { bool animationDone = this.Animation.Animate(); this.Draw(graphics, effect); if (animationDone) { x += this.Animation.CurrentX; y += this.Animation.CurrentY; z += this.Animation.CurrentZ; rotation += this.Animation.CurrentRotation; animations.RemoveAt(0); } return animationDone; } }