Solved

In ActionScript 3, how do I use a combo box to get images from a XML file?

Posted on 2008-06-12
10
887 Views
Last Modified: 2013-11-11
Hello!

I am using a combo box to extract text and images from an XML file. I have the text part of the script working, but I've been unable to get the images to successfully come to stage. Any assistance is greatly appreciated.


//import controls
import flash.net.*;
import fl.controls.ComboBox;
 
//var declarations
var xmlData:XML;
var classDataLoader:URLLoader = new URLLoader();
var classreqDataLoader:URLLoader = new URLLoader();
 
//loading xml data
classDataLoader.load(new URLRequest("classes.xml"));
classDataLoader.addEventListener(Event.COMPLETE,loadCompleteClass);
 
//function extracting data from xml
function loadCompleteClass(event:Event):void 
{
	xmlData = new XML(classDataLoader.data);
	for (var i in xmlData.crclass) 
	{
		cbClasses.addItem({label:xmlData.crclass.name[i]});
		}
	}
 
//EventListeners for combo box
cbClasses.addEventListener(Event.CHANGE, showReq);
 
//function populating text area
function showReq(event:Event):void 
{
	var itemSelected:Number = cbClasses.selectedIndex;
	taReq.text = xmlData..requirement[itemSelected];
	}
 
/*XML code:
<classes>
 
	<crclass>
		<name>Class 5</name>
		<requirement>Bouffant Caps, Hoods, Beard Cover, Face Mask, Coveralls, Gloves, Shoe Covers, Booties</requirement>
		<figure>file = "class5.png" width = "144" height = "415"</figure>
	</crclass>
	
	<crclass>
		<name>Class 6</name>
		<requirement>Bouffant Caps, Hoods, Beard Cover, Face Mask, Coveralls, Gloves, Shoe Covers, Booties</requirement>
		<figure>file = "class6.png" width = "144" height = "415"</figure>
	</crclass>
	
	<crclass>
		<name>Class 7 (Cleanroom)</name>
		<requirement>Bouffant Caps, Hoods, Beard Cover, Face Mask, Coveralls, Gloves, Shoe Covers, Booties</requirement>
		<figure>file = "class7cr.png" width = "144" height = "415"</figure>
	</crclass>
	
	<crclass>
		<name>Class 7 (Benches)</name>
		<requirement>Bouffant Caps or Hoods, Beard Cover, Face Mask, Smock, Gloves</requirement>
		<figure>file = "class7bn.png" width = "144" height = "415"</figure>
	</crclass>
	
	<crclass>
		<name>Class 7 (Vestibules)</name>
		<requirement>Bouffant Caps or Hoods, Beard Cover or Face Mask, Smock, Gloves</requirement>
		<figure>file = "class7vs.png" width = "144" height = "415"</figure>
	</crclass>
	
	<crclass>
		<name>Class 8</name>
		<requirement>Bouffant Caps, Beard Cover, Smock</requirement>
		<figure>file = "class8.png" width = "144" height = "415"</figure>
	</crclass>
	
</classes>
*/

Open in new window

0
Comment
Question by:ColdSpringProductions
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
10 Comments
 
LVL 5

Expert Comment

by:cwickens
ID: 21772111
code looks ok.

 I would say that you should make sure that the SWF, XML and images are all in the same directory since that is how you are calling it...
0
 

Author Comment

by:ColdSpringProductions
ID: 21772815
Well, the problem I'm having is that I can populate the text area okay, but I can't seem to figure out how to call the .pngs to the stage when a selection is made in the combo box. That's where I've been beating out my brains for the past two weeks.
0
 
LVL 5

Expert Comment

by:cwickens
ID: 21772916
ok, it doesn't look like you are loading the images at all. I was just looking at the directory structure, since I always screw myself up with that...  sorry about that.  But just to be safe, double check yours!  Anyhow, try this.

Add a movieclip to the stage, give it an instance name of mySquare

add this to the showReq function:
loadMovie(xmlData..figure[itemSelected], mySquare);

so it looks like this:

function showReq(event:Event):void
{
        var itemSelected:Number = cbClasses.selectedIndex;
        taReq.text = xmlData..requirement[itemSelected];
        loadMovie(xmlData..figure[itemSelected], mySquare);
        }

That should be close.  Let me know if it works
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:ColdSpringProductions
ID: 21773083
Okay, I got two errors:
1046: Type was not found or was not a compile-time constant: mySquare
1180: Call to a possibly undefined method loadMovie
0
 

Author Comment

by:ColdSpringProductions
ID: 21773391
I changed the properties on mySquare in that I deselected the Export for ActionScript option in Linkage.

Now I'm left with the 1180 error.
0
 
LVL 5

Expert Comment

by:cwickens
ID: 21773438
my appologies,  loadMovie() is for AS2.  You need the loader() class.  

I will see if I can sort out the function and post it a bit later, I am walking out the door to a meeting and will be back on later.
0
 

Author Comment

by:ColdSpringProductions
ID: 21814065
Any luck on finding how to use the loader() class for this case?
0
 
LVL 5

Accepted Solution

by:
cwickens earned 500 total points
ID: 21814273
wow, I dropped the ball big time here, sorry about that.  Since you are using images that are all the same size, create a movieclip that is H=415 and W=144.  Then change the <figure> tags from this:
<figure>file = "class5.png" width = "144" height = "415"</figure>
to this:
<figure>class5.png</figure>

//Create loader instance.
var my_ldr:Loader = new Loader();

//add this to your showReq function:

function showReq(event:Event):void
{
        var itemSelected:Number = cbClasses.selectedIndex;
        taReq.text = xmlData..requirement[itemSelected];
        my_ldr.load(xmlData..figure[itemSelected]); //<-- add this line
        }


Let me know if that helps...if it doesn't, can you upload your fla, xml and images (you will need to change the file extension of the FLA to .TXT or .XLS or something in order to post it) and I will see what I can do.

sorry it took so long to get back to you,
c
0
 

Author Comment

by:ColdSpringProductions
ID: 21826764
No worries--I'll give it a try tomorrow.
0

Featured Post

Is Your DevOps Pipeline Leaking?

Is your CI/CD pipeline a hodge-podge of randomly connected tools? You’ve likely got a tool to fix one problem & then a different tool to fix another, resulting in a cluster of tools with overlapping functionality. Learn how to optimize your pipeline with Gartner's recommendations

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Adding Namespace to the second node of the xml 16 82
XSLT Display Label Name 1 41
ASP and Extracting XML 7 44
XML loaded in a form with dropdown 6 51
I have been doing hardcore actionscripting for some time; and needless to say I have faced a lot of problems in just understanding others' code rather than understanding what the code executes. A programmer's life can become hell when there are a lo…
The Confluence of Individual Knowledge and the Collective Intelligence At this writing (summer 2013) the term API (http://dictionary.reference.com/browse/API?s=t) has made its way into the popular lexicon of the English language.  A few years ago, …
The goal of the tutorial is to teach the user how to use the auto adjust feature and what the different options do. When your video is not working right you can choose the auto adjust feature to help choose your settings.
The goal of the tutorial is to teach the user what frame rate is, how to control it and what effect it has on the video.

732 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question