Tag Archives: Flex

Adobe Developer Week 2011 – June 20-24

During developer week you can learn how to build expressive mobile, web, and desktop apps with the newly released Flash Builder 4.5 and Flex 4.5. Live eSeminars are free and those are presented by Adobe technology experts.

Sessions:

  • Introduction to Flex 4.5 and Flash Builder 4.5
  • What’s new in Flex 4.5
  • New Features in Flash Builder 4.5
  • Flex and PHP Integrated Development with Flash Builder 4.5 for PHP
  • Build Your First Mobile Application With Flex 4.5
  • Architecting Flex Applications For Re-Use Across Web, Desktop and Mobile
  • Multi-Density and Multi-Platform Authoring for Smart Phones and Tablets With Flex 4.5 SDK
  • Migrating from Flex 3 to Flex 4.5: Understanding Changes from Halo to Spark
  • Creating Expressive Applications with Flash Builder and Flash Catalyst
  • Building Mobile Applications for BlackBerry Playbook
  • Coding Productivity Features in Flash Builder 4.5
  • Next Generation Application Development for the Enterprise
  • Building Data Driven Flex and Java Applications
  • Flex and BlazeDS Integration with Spring
  • Maximizing Flex Application Performance (Mobile and Desktop)
  • Creating Performant Skins and Item Renderers for Mobile Applications
  • Anatomy of an Enterprise Mobile Application Built with Flex 4.5

You can register here: Adobe Developer Week 2011

Passed Adobe Flex ACE 4 Exam

I passed Adobe Flex 4 ACE Exam last week. Not so excellent score this time (only 77% score) - I missed mostly new design and skin stuff with Spark, but for example Programming with Adobe AIR was 100% score :-) If you want to certify, make sure to take a look new spark architecture, service integration with LCDS and general OOP topics with ActionScript.

With this exam I got new "Adobe Certified Instructor in Flex 4 and LiveCycle Data Services 3: Data Driven Development" ACI status also.

Here is a few links to study materials:
- Adobe Certifications
- Adobe Flex 4
- Adobe LiveCycle Data Services 3.1
- Adobe AIR
- Adobe Flex 4 ACE Exam

Send pictures from Android device to Windows with AIR applications

In this example I will show how you can take and send pictures from Android phone to Windows application using Adobe AIR in Android and Windows.

Create AIR for Android application (to take and send picture)

In Adobe AIR 2.5 there is Camera UI class that allows you to capture a still image or video using the default camera application on a device. First check that Camera is supported and create a new Camera UI object and register MediaEvent.COMPLETE to call onComplete function when picture is taken.

After that establish a new NetConnection for P2P in the local network (LAN). This can be done by specifying connection string as "rtmpf:" in NetConnection.

private function init():void {
  if (CameraUI.isSupported){
    myCam = new CameraUI();
    myCam.addEventListener(MediaEvent.COMPLETE, onComplete);
  }
  nc = new NetConnection();
  nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
  nc.connect("rtmfp:");
}

When connection is made netStatus function will be called. If NetConnection is ok it is time to setup own group for multicasting. You can set up your own NetGroup with GroupSpecifier. Enable local connections between peers and set your IP address and port for multicasting. You can find more details about multitasking for example here: www.flashrealtime.com (Tom Krcha - thanks about your excellent demos and work with Flash based Technologies).

private function netStatus(event:NetStatusEvent):void {
  switch(event.info.code) {
    case "NetConnection.Connect.Success":
       var groupspec:GroupSpecifier = new GroupSpecifier("fi.ptm.imageApp/myChannel");
       groupspec.postingEnabled = true;
       groupspec.ipMulticastMemberUpdatesEnabled = true;
       groupspec.addIPMulticastAddress("225.225.0.1:30000");
       group = new NetGroup(nc,groupspec.groupspecWithAuthorizations());
       group.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
       break;
  }
}

A new picture is taken when user presses Take Picture Button in device's screen. Picture is taken with Android Native Camera Application (using with Camera UI class) and onComplete will be called when picture is taken.

In this example image is shown with <mx:Image id="image"> and image URL is used when image is sent to Windows AIR application.

private function takePicture():void {
  image.filters = [];
  if (CameraUI.isSupported) myCam.launch(MediaType.IMAGE);
}

private function onComplete(evt:MediaEvent):void{
  image.source = evt.data.file.url;
  imageURL = evt.data.file.url;
}

Image is converted to ByteArray and all of those bytes is sent to Windows AIR application when user clicks send button in the devices screen.

private function sendPicture():void {
  var fs:FileStream = new FileStream();
  fs.open(new File(imageURL), FileMode.READ);
  var bytes:ByteArray = new ByteArray();
  fs.readBytes(bytes);
  fs.close();
  if (bytes == null) {
    trace("Image bytes is null!");
  } else {
    // create a new object with image data and image count (sent)
    var message:Object = new Object();
    message.bytes = bytes;
    message.images = ++imagesSent;
    group.post(message);
    trace("Pictures sent:"+imagesSent);
  }
}

Create AIR local client in Windows (receive images)

Windows AIR application is connected to same group and it is waiting for images from AIR for Android application. If we get a new netStatus with NetGroup.Posting.Notify message then a new image is received from Android. First new Sprite is created and all of those image bytes is loaded with Loader.

public function receivePicture(message:Object):void {
  imageContainer = new Sprite();
  var loaderContext:LoaderContext = new LoaderContext();
  loaderContext.allowCodeImport = false;
  var loader:Loader = new Loader();
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoaded,false,0,true);
  loader.loadBytes(message.bytes, loaderContext);
  // add a new sprite to hold image
  imageSprite = new Sprite();
  imageSprite.addChild(loader);
  imageContainer.addChild(imageSprite);
  wrapper.addChild(imageContainer);
}

ImageSprite is a wrapped for a new image sprite to get Parallel image animation into it (scaling, positioning and sizing) for 4 seconds.

private function onPicLoaded(e:Event):void {
  imageSprite.x = -imageContainer.width / 2;
  imageSprite.y = -imageContainer.height / 2;
  imageContainer.x += imageContainer.width / 2;
  imageContainer.y += imageContainer.height / 2;
  startX = imageContainer.width / 2;
  startY = imageContainer.height / 2;
  targetX = Math.floor(Math.random()*frame.width);
  var borderSize:uint = 100;
  if (targetX < borderSize) targetX = borderSize;
  if (targetX > (frame.width-borderSize)) targetX = frame.width - borderSize;
  targetY = Math.floor(Math.random()*frame.height);
  if (targetY < borderSize) targetY = borderSize;
  if (targetY > (frame.height-borderSize)) targetY = frame.height - borderSize;
  startRotation = Math.floor(Math.random()*360);
  if (Math.random() > .5) targetRotation = startRotation + 180;
  else targetRotation = startRotation - 180;
  imageAnimation.play();
}

Here is a basic parallel animation used to make a cool sliding effect with a new images. All previous taken images will be visible there too.

<mx:Parallel id="imageAnimation" target="{imageContainer}" >
  <mx:AnimateProperty property="scaleX" fromValue="1" toValue="0.2" duration="4000" />
  <mx:AnimateProperty property="scaleY" fromValue="1" toValue="0.2" duration="4000" />
  <mx:AnimateProperty property="x" fromValue="{startX}" toValue="{targetX}" duration="4000" />
  <mx:AnimateProperty property="y" fromValue="{startY}" toValue="{targetY}" duration="4000" />
  <mx:AnimateProperty property="rotation" fromValue="{startRotation}" toValue="{targetRotation}" duration="4000" />
</mx:Parallel>

Testing and source codes

You have to install Flex 4.1 (or newer) and AIR 2.5 SDK to try these examples (just copy/overwrite AIR SDK 2.5 to Flash Builder sdks/4.1.0 folder, or make copy from 4.1.0 to for example FlexAIR2.5 folder and overwrite there).

AIRSendingImageFromAndroid.zip
AIRReceiveImageFromAndroid.zip

Adobe® Developer Week

Adobe is holding free Developer Week at May 10 - 14, 2010. Live webinars includes new Adobe CS5 technologies like: Adobe Flash Platform, Flex, Flash Builder, AIR and interactive Q&A sessions.

Full session list:

  • Welcome and Introduction to the Adobe® Flash® Platform
  • Building Multi-Screen Applications with the Adobe® Flash® Platform and Adobe® Creative Suite® 5
  • New Features in Adobe® Flex® 4 Framework
  • New Features in Adobe® Flash® Builder™ 4
  • Adobe® Flash® Catalyst™ CS5 for Developers
  • Building Mobile Applications with Adobe® Flash® Professional™ CS5: Create a Game
  • What's New in Adobe® Flash® Builder™ for Java Developers
  • New Features in Adobe® Flash® Player 10.1
  • Creating Sexy Applications with the Adobe® Flash® Platform: Designer-Developer Workflow
  • A Basic CRUD Application with Zend AMF and Adobe® Flex 4
  • Adobe® Flash® Builder™ 4 and Adobe® ColdFusion® 9
  • Advanced Features In Adobe® Flex®
  • AS34J: ActionScript 3 for Java Developers
  • Adobe® Flash® Platform and Salesforce.com
  • Adobe® Flash® Builder™ for Adobe® Dreamweaver® CS5 Users
  • What’s New in Adobe® Flash® Builder™ for PHP Developers
  • Using Advanced Features with Adobe® Flex® & PHP
  • Adobe® ColdFusion® 9 and Adobe® Flash® Catalyst™ CS5
  • Adobe® Flex® and BlazeDS Integration with SpringSource
  • Building Desktop Applications with Adobe® AIR® 2.0

More informations and registration.

Image Gallery with Flex, PHP and MySQL

There are many Image Galleries available on web, but time to time I want to make one of me own. This time I used Flex, PHP and MySQL. I found one excellent Flex Component from Doug McCune - CoverFlow Component and created my Image Gallery Menu with it.

Image Gallery Menu

Selected gallery is displayed with own state in Flex, thumbnails and image information are displayed in bottom of the screen.

Image Gallery Pictures

New galleries can be uploaded to server with Admin tool. Admin tool sends gallery information to PHP which adds gallery information to MySQL table. After gallery is initialized, all selected pictures will be send to server and thumbnails will be generated with PHP.

Image Gallery Admin

Here are sources and installation instructions:

1. MySQL tables
- create following tables
- if you change table names, edit PHP-files also

mysql> describe ptm_imagegallery;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| gallery_ID  | int(11)      | NO   | PRI | NULL    | auto_increment |
| name        | varchar(50)  | YES  |     | NULL    |                |
| description | varchar(100) | YES  |     | NULL    |                |
| date        | date         | YES  |     | NULL    |                |
| password    | varchar(45)  | NO   |     |         |                |
| count       | int(11)      | YES  |     | NULL    |                |
| size        | int(11)      | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

mysql> describe ptm_imagegalleryimages;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| image_ID   | int(11)     | NO   | PRI | NULL    | auto_increment |
| gallery_ID | int(11)     | YES  |     | NULL    |                |
| filename   | varchar(30) | YES  |     | NULL    |                |
| date       | date        | YES  |     | NULL    |                |
| width      | int(11)     | YES  |     | NULL    |                |
| height     | int(11)     | YES  |     | NULL    |                |
| views      | int(11)     | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

2. PHP files
- copy PHP files to your server and edit needed MySQL variables

3. Flex project
- edit and compile Flex sources, use your own domain and path's

You can test my Image Gallery here:

PTM Image Gallery

Racing Golf Tour – Flash Lite, Flex 2, PHP, MySQL – Example, Tutorial

My friends and I play golf in summer times and we have one major tournament at the end of July yearly. We drive then around Finland one week and play about 18-36 holes in each day. We needed a system what stores our golf scorecards and maybe gives somekind of analyse of playing. So I decided to do a application for that purpose. Now here is Flex application to test and of course all Flex sources are available to you also. Forum Nokia will release Flash Lite part of this application soon in early 2008, maybe in January, so you can download Flash Lite sources from there then.

Flash Lite application can send players scorecards data to server and get basic analyses from server side (like scores, pbs, firs, girs, birdies and so on). Here is a few screenshots from Flash Lite application:


Flex 2 application is web based client to this application - there player can add, edit and delete scorecards and get beautiful graphics. This Flex application uses AMFPHP 1.9 at the backend of this applications. There are a lot of data in screen so you should have at least 1024x768 screen resolution to test this application.

You can test this Flex application here: Racing Tour Golf (login: guest, passwd: guest). There are now only testing material available in my player name, all other players data are empty.



Here are Flex, PHP, MySQL source codes of this application:

- AMFPHP Racing Golf Tour Services
- MySQL Racing Golf Tour Tables
- Flex Racing Golf Tour Sources

Merry Christmas and a Happy New Year to everyone!