Interesting Tech Projects
Compiling OpenScales 1.1 with FlashDevelop 3
This article describes how to compile the OpenScales mapping library for Flash in FlashDevelop 3. OpenScales is an open source LGPL library for displaying interactive maps using Flex and Actionscript. It has many of the features of OpenLayers. FlashDevelop 3 is a free Flash development environment and can be used with the Flex SDK from Adobe.
This article assumes you already have the Flex 3 SDK and FlashDevelop 3 installed and working. See my post from two years ago for help.
Compilation Options
There are two ways OpenScales can be compiled. Firstly the source code can be included with your application code. This approach is good for debugging OpenScales and learning how it works. My understanding of the OpenScales LGPL license is that this will make your application also licensed as LGPL (or a compatible license). However I’m not a lawyer so if that aspect is important to you then you will need to take a closer look.
The second way to compile OpenScales is as a library (SWC file). This library can then be linked with your application to produce the final Flash file.
Compiling OpenScales Into a Library
1. Download and install the ExportSWC plugin for Flash Develop.
2. Create a new Flex 3 project with no package name.
3. Check out OpenScales using Subversion into the folder above the project folder. Note that if you use a different location the paths in the rest of this tutorial will need to be adjusted accordingly. I recommend TortoiseSVN if using Windows.
4. Go to Project -> Properties -> Compiler Options. Click on the Additional Compiler Options field and then the small “…” button.
5. Enter:
-namespace http://openscales.org ..\OpenScales-1.1\src\openscales-fx\src\main\flex\META-INF\manifest.xml
Note the hyphen at the start of the line.
6. Click on the Classpaths tab and add the following Classpaths:
..\OpenScales-1.1\src\openscales-core\src\main\flex
..\OpenScales-1.1\src\openscales-fx\src\main\flex
..\OpenScales-1.1\src\openscales-proj4as\src\main\flex
C:\Program Files\FlexSDK\frameworks\libs
C:\Program Files\FlexSDK\frameworks\locale\en_US
then close the dialog window. Note if you copied the Flex 3 SDK to a different location then choose the correct location when adding the libs and locale classpaths.
7. Download GTween, extract the zip file and copy GTween_xx_xx.swc into the lib folder for the project.
8. In the Project tree view right click on the GTween SWC file and choose “Add To Library”. The name will turn blue.
9. In the Project tree expand “libs” and “locale”, right-click on each SWC file in turn and choose “Add To Library”. The names will turn blue.
10. Click on the Build SWC toolbar button to generate the SWC file.
You may get two warnings for the OverviewMap.mxml file, which causes the build to fail. I think this is a bug in FlashDevelop because warnings shouldn’t cause the build to fail, only errors should. However the warnings can be disabled in the compiler options. I don’t know for sure if the Overview Map control is usable because of this.
The generated SWC file will be in the bin subfolder. In FlashDevelop create a new Flex 3 project and copy the OpenScales SWC file into the lib folder, then add it to the library by right-clicking on the name in the Project tree and choosing “Add To Library”. OpenScales can now be used.
Compiling Application Code With OpenScales Code
1. Create a new Flex 3 project with a suitable package name.
2. Check out OpenScales using Subversion into the folder above the project folder. Note that if you use a different location the paths in the rest of this tutorial will need to be adjusted accordingly. I recommend TortoiseSVN if using Windows.
3. Go to Project -> Properties -> Compiler Options. Click on the Additional Compiler Options field and then the small “…” button.
4. Enter:
-namespace http://openscales.org ..\OpenScales-1.1\src\openscales-fx\src\main\flex\META-INF\manifest.xml
Note the hyphen at the start of the line.
5. Click on the Classpaths tab and add the following Classpaths:
..\OpenScales-1.1\src\openscales-core\src\main\flex
..\OpenScales-1.1\src\openscales-fx\src\main\flex
..\OpenScales-1.1\src\openscales-proj4as\src\main\flex
then close the dialog window.
6. Download GTween, extract the zip file and copy GTween_xx_xx.swc into the lib folder for the project.
7. In the Project tree view right click on the GTween SWC file and choose “Add To Library”. The name will turn blue.
Now you can add OpenScales controls to Main.mxml and build a Flex/ActionScript 3 project.
It is possible to add the GTween source code to the project instead of the SWC if needed.
You may get two warnings for the OverviewMap.mxml file, which causes the build to fail. I think this is a bug in FlashDevelop because warnings shouldn’t cause the build to fail, only errors should. However the warnings can be disabled in the compiler options. I don’t know for sure if the Overview Map control is usable because of this.
For completeness my MXML and ActionScript test code follows. Note that I avoided using MXML to create any controls, instead preferring to use ActionScript. This is just a personal preference.
Example Main.mxml file:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:os="http://openscales.org" layout="horizontal" horizontalAlign="left" backgroundColor="#FFFFFF" backgroundGradientColors="[#FFFFFF, #FFFFFF]" paddingTop="0" paddingLeft="0" paddingRight="0" paddingBottom="0" creationComplete="OSMap.main();"> </mx:Application>
Example OSMap.as file:
package com.britishideas { import mx.controls.*; import mx.core.*; import mx.events.FlexEvent; import flash.events.*; import flash.utils.*; import flash.display.Sprite; import org.openscales.fx.FxMap; import org.openscales.core.Map; import org.openscales.core.layer.osm.Mapnik; import org.openscales.core.handler.mouse.DragHandler; import org.openscales.core.handler.mouse.WheelHandler; import org.openscales.core.control.PanZoomBar; public class OSMap { private static var map:FxMap; private static var mxmlApp:Application; private static var osmap:Map; public function OSMap() { } public static function main():void { mxmlApp = Application(Application.application); map = new FxMap(); map.width = 840; map.height = 840; map.zoom = 10; mxmlApp.addChild(map); map.addEventListener(FlexEvent.CREATION_COMPLETE, MapCreated); } private static function MapCreated(e:FlexEvent):void { osmap = map.map; var MapnikLayer:Mapnik = new Mapnik("Mapnik", true); osmap.addLayer(MapnikLayer); var dragHandler:DragHandler = new DragHandler(osmap, true); var wheelHandler:WheelHandler = new WheelHandler(osmap, true); osmap.zoom = 10; osmap.addControl(new PanZoomBar()); } } }
Print article | This entry was posted by Andy on February 7, 2010 at 10:00 pm, and is filed under Flash, Mapping. Follow any responses to this post through RSS 2.0. Both comments and pings are currently closed. |
Comments are closed.
about 14 years ago
Thanks for this tutorial.
FYI, OpenScales LGPL license allow to your to build any kind of application (open source or proprietary).
about 14 years ago
Good tutorial, very simple and it works !
Thanks a lot !
Slvaman69
about 14 years ago
Hi would it be possible to use your example and to build upon Ordinance Survey OpenSpaces (openlayer based api) and create a layer ontop instead of mapnik? I see openlayers has google, yahoo and other commercial support but I can not find out of the box support for ordinance survey. I have though found a good example is js code of openlayers loading a openspaces vector data set and layer at http://www.macfh.co.uk/JavaJive/ProgScriptWeb/UKOSOpenLayers.html
Hope you can help me out here – willing to learn AS under pressure to help out my local duke of edinburgh students use flash based palm pre to view ord survey maps. I am also considering a visit to a workshop session next Tuesday in Southampton at the ordinance survey offices helping developers with their API.
Cheers,
John
about 14 years ago
OpenLayers is for javascript and OpenScales is for Flash. They are two different things that achieve similar end results. They have different pros and cons. You can sometimes mix data sets, but not code.
So no, I don’t think anything in this posting applies to OpenLayers or versions of OpenLayers, because it is about OpenScales. Good luck with your project though.
about 14 years ago
Hello, I’m facing several troubles starting with openscales, I haven’t found a good “quick start” or tutorial to get me on the move with openscales applications development. Can somebody give me a clue?
thanks