Archive for December, 2009

CafeGirl Revamp in Flash!

December 14th, 2009

I am delighted to announce that the Cafegirl.org website has been revamped in Flash! This was a project that I took on for my ARTS 255: Dynamic Interface Design class. Drawing heavily from my practice with ActionScript 3 and my new understanding of XML,  I designed and implemented a sleek and attractive interface supporting portfolios and image galleries. Check it out under the “Art Portfolio” section. Enjoy!

DavisTUI: Progress Report 5

December 12th, 2009

While running the newest version of our prototype, I ran into some unexpected difficulties. Whenever I touched a Word object to see the associated artwork thumbnails, the application would halt with an Operation Exception. After some investigation, I realized that the thumbnail images in each grid were previously assigned as logical children of the grid generated from previous contact with the same Word object.

I had designed the Word class to generate, remove, and regenerate a grid for each contact up and contact down event on a Word object. I couldn’t find a simple way to logically disconnect the thumbnail images from each grid after each Contact Up.

I later realized that the getImage() function in our Art class simply returned the image instance variable generated with the Art object. So, I revised the getImage() function to return a new Image object generated from the thumbnail image file.

The new method:

public Image getImage()
{
Image image = new Image();
String path = "Resources\\" + imgFile;
image.Source = new BitmapImage(new Uri(path, UriKind.Relative));
return image;
}

Afterwards, I:

  • Continued to finesse the look and feel of the grids populated form the Word objects,
  • Removed canned data and got the surface to display working results for my parsing of the Artworks.xml file,
  • Wrote event handlers that would display the associated for the “Movement” and “Medium” tags,
  • Got screen to display working results for tag event handlers from my parsing of my Collections.xml file.

I still had some problems to solve regarding each token’s tag event handlers. Previously, when a “Movement” or “Medium” token was placed on the surface, all of the items were cleared from the screen, including any Art and Panel objects that were generated. In the intended version of our application, only the Word objects populated on the native screen would be replaced by the Word objects associated with “Movement” or “Medium”.

The solution was a RemoveWord() function that removed each Word object’s ScatterViewItem from the main ScatterView, which was kept track of in a List structure of ScatterViewItems.

private void RemoveWords()
{
foreach (ScatterViewItem svi in sviList) {scatter.Items.Remove(svi);}
}

Given the high volume of programming that had to be done in 3 weeks, Lia and I can both agree that this project provided a valuable opportunity to practice our programming logic and modularize the problems at hand. Although we often worked on separate tasks, we found it necessary to communicate with each other about our programming problems and put our minds together to solve them.

Our desire to enhance the way people see and interact with the world, aided by our tenacity to make it happen, has allowed us to produce this final functional prototype of DavisTUI:

DavisTUI: Progress Report 4

December 8th, 2009

Towards improved information architecture by redefining the hierarchy of our classes, I moved the generation of each Word object’s ScatterViewItem and associated event handlers from the Surface Window1 class to the Word class. Further, for our input and output functions, I created two XML files containing input data for dynamically generating Word and Art objects on the Scatter View:

  • Collections.xml, which contains the words to be displayed on the screen as well as the ID’s of the artwork associated with each word, and
  • Artwork.xml, which contains the ID and tombstone information (i.e. metadata) for each artwork.

I wrote methods to parse the XML files and got the application to display dynamic results from Collections.xml.

At the cost of a GUI-like appearance, we are temporarily using TextFields and Buttons to test our I/O functions.

At the cost of a GUI-like appearance, we are temporarily using TextFields and Buttons to test our I/O functions.

After this work session, I met up with Lia to touch base and resolve some other issues we had with the event handlers for Panel objects, which receives and displays user responses to the artwork. Comparing her event handlers for populating ScatterViewItems to mine, we found no syntax errors and no difference in our logic. Still, her event handlers were not functioning as expected.

We later discovered that the solution was simply to open the Surface Simulator application before debugging on Microsoft Visual C#. This was an unfortunate oversight that cost us about an hour of time. It is our firm belief that this frustration could have been avoided had Microsoft designed Visual C# with better application of user experience principles.

After the fact, Lia and I worked briefly to create the tag event handlers for the “Movements” (previous referred to as “Time Periods”) token.