Sviluppo e deployment cross-platform: Dal mobile alla Tv Andrea Trento
Andrea Trento
<ul><li>Specializzato in cross-platform games e applications dal 2000 </li></ul><ul><li>Managing Director e Lead Developer...
“ By definition, a cross contents is one that can be used in multiple location, platform and while moving…” “ Per definizi...
<ul><li>Terminata la progettazione… </li></ul><ul><li>Dobbiamo sviluppare per i vari dispositivi… </li></ul><ul><li>A live...
<ul><li>WORA     W rite  O nce  R un  A nywhere </li></ul><ul><li>Progettare in maniera corretta ed efficace </li></ul><u...
Flash Player 10.1 - AIR 2.5    10.2 – 2.6 In browser e out of browser WEB – MOBILE – TABLET - DESKTOP – TV – AUTOMOTIVE  ...
Multiscreen Content and Applications Flex Flash Media  Server Family Flash  Platform Services AIR Flash Player Flash Build...
<ul><li>ActionScript 3.0 Reference for the Adobe Flash Platform </li></ul><ul><li>http://help.adobe.com/en_US/FlashPlatfor...
<ul><li>Nuove Features: </li></ul><ul><li>Multi-touch e gestures </li></ul><ul><li>Accelerometer </li></ul><ul><li>Screen ...
<ul><li>Per avere buoni content dobbiamo considerare: </li></ul><ul><li>Scripting performance </li></ul><ul><li>Start-up t...
Architetture e design patterns
<ul><li>ship.addEventListener( TransformGestureEvent.GESTURE_ZOOM,  onZoom); </li></ul><ul><li>function onZoom(e:Transform...
<ul><li>import flash.events. StageOrientationEvent; </li></ul><ul><li>stage.scaleMode = StageScaleMode.NO_SCALE; </li></ul...
<ul><li>import flash.sensors.Accelerometer; </li></ul><ul><li>import flash.events.AccelerometerEvent; </li></ul><ul><li>Ac...
<ul><li>import flash. sensors.Geolocation; </li></ul><ul><li>import flash. events.GeolocationEvent; </li></ul><ul><li>var ...
import  flash.media.CameraRoll ; import flash.events.Event; var cr:CameraRoll = new CameraRoll(); cr.addEventListener(Even...
Minimizzare l’istance allocations:  Ottimizzare
<ul><li>Usare un frame rate più basso possibile </li></ul><ul><li>stage.frameRate = 4; </li></ul><ul><li>Variare dinamicam...
<ul><li>Usare l’appropriato type di display object, usare anche getSize() per ottenere e monitorare l’object size: </li></...
<ul><li>Anche quando si rimuove dal display list, il movie clip rimane dispatched ed influisce: </li></ul><ul><li>ship.add...
<initialWindow> <content>[...]</content> <resizable>true</resizable> <autoOrients>false</autoOrients> <fullScreen>false</f...
<ul><li>Usare un frame rate più basso possibile </li></ul><ul><li>stage.frameRate = 4; </li></ul><ul><li>Variare dinamicam...
Ottimizzare
 
 
 
Andrea Trento Twitter - @andreatrento Mail - andrea.trento@interpreting.it
Upcoming SlideShare
Loading in …5
×

Sviluppo e deployment cross-platform: Dal mobile alla Tv

1,398 views

Published on

Presentazione tenuta da Andrea Trento in occasione del Codemotion del 5 marzo a Roma - http://www.codemotion.it/

Progettare e sviluppare contenuti cross-platform in grado di essere deployate su differenti piattaforme (desktop, mobile, TV, ecc.) implica l’utilizzo di svariate tecnologi e/o la creazione di differenti versioni a compensazione della frammentazione del mercato. Analizzeremo come progettare e fare cross' coding 'sfruttando al meglio le potenzialità della Flash Plartform tecnology e di AS3. Un sessione pratica che condurrà noi e i contenuti su piattaforma Android, iOS, TabletOS, desktop,TV.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,398
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sviluppo e deployment cross-platform: Dal mobile alla Tv

  1. 1. Sviluppo e deployment cross-platform: Dal mobile alla Tv Andrea Trento
  2. 2. Andrea Trento
  3. 3. <ul><li>Specializzato in cross-platform games e applications dal 2000 </li></ul><ul><li>Managing Director e Lead Developer in Interpreting </li></ul><ul><li>Flash Platform, C++, Objective-C, Action Script </li></ul><ul><li>Adobe Community Professional Mobile & Devices, Adobe User Group Manager. </li></ul>
  4. 4. “ By definition, a cross contents is one that can be used in multiple location, platform and while moving…” “ Per definizione, un contenuto cross può essere usato in luoghi e piattaforme differenti e in movimento…”
  5. 5. <ul><li>Terminata la progettazione… </li></ul><ul><li>Dobbiamo sviluppare per i vari dispositivi… </li></ul><ul><li>A livello tecnico di solito le soluzioni sono: </li></ul><ul><li>Nativo  C++, Qt, Java, Objective-C </li></ul><ul><li>Ibrido  Xhtml, Css, JavaScript, JQuery mobile, PhoneGap, ecc. </li></ul><ul><li>HTML5 </li></ul>
  6. 6. <ul><li>WORA  W rite O nce R un A nywhere </li></ul><ul><li>Progettare in maniera corretta ed efficace </li></ul><ul><li>Sviluppare con le giuste tecnologie </li></ul><ul><li>Sviluppare con tools efficaci. </li></ul>
  7. 7. Flash Player 10.1 - AIR 2.5  10.2 – 2.6 In browser e out of browser WEB – MOBILE – TABLET - DESKTOP – TV – AUTOMOTIVE - (DEVICES) ActionSript 3.0
  8. 8. Multiscreen Content and Applications Flex Flash Media Server Family Flash Platform Services AIR Flash Player Flash Builder Flash Catalyst Flash Professional FLASH PLATFORM TOOLS FRAMEWORK CLIENTS SERVICES SERVERS LiveCycle
  9. 9. <ul><li>ActionScript 3.0 Reference for the Adobe Flash Platform </li></ul><ul><li>http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html </li></ul>
  10. 10. <ul><li>Nuove Features: </li></ul><ul><li>Multi-touch e gestures </li></ul><ul><li>Accelerometer </li></ul><ul><li>Screen orientation </li></ul><ul><li>Mobile text input </li></ul><ul><li>Sleep mode </li></ul><ul><li>Graphics hardware acceleration </li></ul><ul><li>Stage video </li></ul><ul><li>H.264 video decoding </li></ul><ul><li>Compatibilità e integrazione con i device </li></ul><ul><li>… </li></ul>
  11. 11. <ul><li>Per avere buoni content dobbiamo considerare: </li></ul><ul><li>Scripting performance </li></ul><ul><li>Start-up time </li></ul><ul><li>Sleep mode </li></ul><ul><li>Battery life </li></ul><ul><li>CPU </li></ul><ul><li>Hardware acceleration </li></ul><ul><li>Memory utilization </li></ul><ul><li>… e molte altre cose. </li></ul><ul><li>Molti pensano che la Flash Platform e AS3 non siano in grado farlo… </li></ul>
  12. 12. Architetture e design patterns
  13. 13. <ul><li>ship.addEventListener( TransformGestureEvent.GESTURE_ZOOM, onZoom); </li></ul><ul><li>function onZoom(e:TransformGestureEvent):void </li></ul><ul><li>{ </li></ul><ul><ul><li>ship.scaleX *= e.scaleX; </li></ul></ul><ul><ul><li>ship.scaleY = ship.scaleX; </li></ul></ul><ul><li>} </li></ul><ul><li>ship.addEventListener( TransformGestureEvent.GESTURE_ROTATE, onRotate); </li></ul><ul><li>function onRotate(e:TransformGestureEvent):void </li></ul><ul><li>{ </li></ul><ul><ul><li>ship.rotation += e.rotation; </li></ul></ul><ul><li>} </li></ul>AS3
  14. 14. <ul><li>import flash.events. StageOrientationEvent; </li></ul><ul><li>stage.scaleMode = StageScaleMode.NO_SCALE; </li></ul><ul><li>stage.align = StageAlign.TOP_LEFT; </li></ul><ul><li>function setPosition():void </li></ul><ul><li>{ </li></ul><ul><li>vidHolder.x = stageWidth/2 - vidHolder.width/2; </li></ul><ul><li>vidHolder.y = stageHeight/2 - vidHolder.height/2; </li></ul><ul><li>//If the layout is vertical </li></ul><ul><li>if (stage.stageWidth < stage.stageHeight) </li></ul><ul><ul><li>{ </li></ul></ul><ul><li>//Adjust graphics </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>setPosition(); </li></ul><ul><li>stage.addEventListener( Event.RESIZE , resizeLayout); </li></ul><ul><li>function resizeLayout(e:Event):void </li></ul><ul><li>{ </li></ul><ul><li>setPosition(); </li></ul><ul><li>} </li></ul>AS3
  15. 15. <ul><li>import flash.sensors.Accelerometer; </li></ul><ul><li>import flash.events.AccelerometerEvent; </li></ul><ul><li>Accelerometer.isSupported; </li></ul><ul><li>var accel:Accelerometer = new Accelerometer(); </li></ul><ul><li>accel.addEventListener( AccelerometerEvent.UPDATE , update); </li></ul><ul><li>function update(e:AccelerometerEvent):void </li></ul><ul><li>{ </li></ul><ul><li>e.accelerationX; </li></ul><ul><ul><li>e.accelerationY; </li></ul></ul><ul><li>e.accelerationZ; </li></ul><ul><li>} </li></ul>AS3
  16. 16. <ul><li>import flash. sensors.Geolocation; </li></ul><ul><li>import flash. events.GeolocationEvent; </li></ul><ul><li>var geo = new Geolocation (); </li></ul><ul><li>geo.setRequestedUpdateInterval(1000); </li></ul><ul><li>geo.addEventListener( GeolocationEvent.UPDATE , onTravel); </li></ul><ul><li>function onTravel(event:GeolocationEvent):void </li></ul><ul><li>{ </li></ul><ul><ul><li>long.text = event.latitude.toString(); </li></ul></ul><ul><ul><li>lat.text = event.longitude.toString(); </li></ul></ul><ul><ul><li>heading.text = event.heading.toString(); </li></ul></ul><ul><ul><li>speed.text = event.speed.toString(); </li></ul></ul><ul><ul><li>hacc.text = event.horizontalAccuracy.toString(); </li></ul></ul><ul><ul><li>vacc.text = event.verticalAccuracy.toString(); </li></ul></ul><ul><li>} </li></ul>AS3
  17. 17. import flash.media.CameraRoll ; import flash.events.Event; var cr:CameraRoll = new CameraRoll(); cr.addEventListener(Event.COMPLETE, completeHandler); function completeHandler(evt:Event):void { trace(&quot;bitmapData successfully added&quot;); } if (cr.supportsAddBitmapData) { cr.addBitmapData(bitmap); } AS3
  18. 18. Minimizzare l’istance allocations: Ottimizzare
  19. 19. <ul><li>Usare un frame rate più basso possibile </li></ul><ul><li>stage.frameRate = 4; </li></ul><ul><li>Variare dinamicamente il frame rate </li></ul><ul><li>Variare dinamicamente lo StageQuality (Low, Medium, High, Best) </li></ul><ul><li>Usare enterFrame quando necessario </li></ul><ul><li>Evitare timers e usarne uno solo per tutta l’applicazione </li></ul><ul><li>Ridurre al minimo gli eventi in esecuzione contemporaneamente </li></ul>Ottimizzare
  20. 20. <ul><li>Usare l’appropriato type di display object, usare anche getSize() per ottenere e monitorare l’object size: </li></ul><ul><li>Per object che non sono interattivi, usare Shape(); </li></ul><ul><li>trace(getSize(new Shape())); </li></ul><ul><li>Per interattività non timeline, usare Sprite(); </li></ul><ul><li>trace(getSize(new Sprite())); </li></ul><ul><li>Per animation, usare Movieclip(); </li></ul><ul><li>trace(getSize(new MovieClip())); </li></ul>Ottimizzare
  21. 21. <ul><li>Anche quando si rimuove dal display list, il movie clip rimane dispatched ed influisce: </li></ul><ul><li>ship.addEventListener(Event.REMOVED_FROM_STAGE,deactivate); </li></ul><ul><li>function deactivate(e:Event):void </li></ul><ul><li>{ </li></ul><ul><ul><li>e.currentTarget.removeEventListener(Event.ENTER_FRAME,handleMovement); </li></ul></ul><ul><ul><li>e.currentTarget.stop(); </li></ul></ul><ul><li>} </li></ul><ul><li>Ricordarsi di mettere a null gli oggetti, eliminarli se non servono. </li></ul><ul><li>Non metterli mai fuori dallo stage e gestirli con visible = false; se necessario </li></ul><ul><li> unloadAndStop(), null, delete. </li></ul>Ottimizzare
  22. 22. <initialWindow> <content>[...]</content> <resizable>true</resizable> <autoOrients>false</autoOrients> <fullScreen>false</fullScreen> <visible>true</visible> <renderMode>gpu</renderMode> </initialWindow> square.cacheAsBitmap = true; quare.cacheAsBitmapMatrix = new Matrix(); Ottimizzare
  23. 23. <ul><li>Usare un frame rate più basso possibile </li></ul><ul><li>stage.frameRate = 4; </li></ul><ul><li>Variare dinamicamente il frame rate </li></ul><ul><li>Variare dinamicamente lo StageQuality (Low, Medium, High, Best) </li></ul><ul><li>Usare enterFrame quando necessario </li></ul><ul><li>Evitare timers e usarne uno solo per tutta l’applicazione </li></ul><ul><li>Ridurre al minimo gli eventi in esecuzione contemporaneamente </li></ul>Ottimizzare
  24. 24. Ottimizzare
  25. 28. Andrea Trento Twitter - @andreatrento Mail - andrea.trento@interpreting.it

×