I helped Sensory Minds to build an interactive multi-touch and tangible media installation for a Werkschau of students from the Hochschule Pforzheim. Graduates are represented by objects that are provided with a fiducial on the underside and a picture of the work on the upper side. As soon as the object is added to the table, pictures of the student’s projects will be loaded and circularly arranged around the object. Those pictures can be browsed via multi-touch. If a user taps on a project picture all pictures to this project will be loaded and will be arranged on a second circle around the project images. Read the rest of this entry »
This video demonstrates the fundamental multi-touch functions of Vispol. The demonstrated functions contain the creation and modification of persons and objects and connections. Additionally, examples for the application of the layout functions in Vispol are being introduced.
As part of my Master’s thesis with the title ‘Conception, Realization and Evaluation of Multi-Touch Interfaces for Interactive Visualizations’ there has been the goal to create an interactive visualization that can be used via multi-touch. Finally, this visualization should be evaluated, which means it should be thoroughly tested and there should be some results in numbers.
This multi-touch visualization should be different from the common multi-touch use cases scaling/rotating images and zooming in maps. Additionally, this visualization should have a dedicated use and should not just be a prototype that demoes basic multi-touch capabilities.
Today I had the problem that i needed to create a Flex element by hand and apply to it a width of 100%.
This goes as easy with MXML as this <mx:VBox id="wrapperBox"><mx:UIComponent width="100%" height="100%" id="elementXYZ"></mx:VBox>
But you cannot code this to achieve the adding programatically with Actionscript: var elementXYZ:UIComponent = new UIComponent();
elementXYZ.width = "100%";
elementXYZ.height = "100%";
wrapperBox.addChild(elementXYZ);
Instead, you have to use this: var elementXYZ:UIComponent = new UIComponent();
elementXYZ.percentWidth = 100;
elementXYZ.percentHeight = 100;
wrapperBox.addChild(elementXYZ);
I use my code in both an Adobe Flex and in an Adobe Air application. As I want to use the native menus of Adobe Air I want to prevent that my self-built menu is being added to the Air application. Thus, I need to figure out if the code is running in a Flex or in an Air application. I do this by using the following structure:
var airApp:Boolean = false;
try{
if(NativeApplication.nativeApplication) airApp = true;
}catch(error:Error){}
if(!airApp){
addChild(generalMenuSprite);
}
To be able to use it you need to generate your own Google Maps Api key. Use this explanation on how to tweak the code and choose the appropriate URL for your API key in order to prevent the red DEBUG strings (you can still see those strings on the screen in the image on the top of this post):
Put your own Google Maps API key in the variable map.key in the class GoogleMapsPureAS. Use the qualified name of your computer in the URL e.g.
http://johannes.local/googleMapsMultitouch
and not
http://localhost/googleMapsMultitouch
to get rid of the red DEBUG strings on the screen. Additionally, opening the SWF file in the Flash Player is not possible if you don’t want to see the DEBUG string. Open it in your browser under the appropriate URL where your Google Maps API key has been registered for.
If you have got more questions just ask them in the comments.
Update: You need the Google Maps for Flash API that you can download here. You have to include the swc file from the folder lib of the uncompressed sdk.zip file either in your Flash GUI or put it into the libs folder of your Flex Builder project.
Update 2: Please beware that executing Google Maps on a local computer or in the intranet seems to be not committed according to Google’s license agreements (see comments).