Groups | Blog | Home
all groups > flash actionscript > november 2005 >

flash actionscript : rerun part of a function


broken45
11/28/2005 10:24:39 PM
I am building a zoomable flash map that populates a map dynamically by
attaching houses(movieclips), using xml. I am then attaching small info bubbles
to the houses with the initial visiblility of the bubble to false, then when
you mouseover a house it toggles the visibility. I am attaching a certain
bubble to the house based on the house's x and y corrdinates. What I need to do
reattach the bubbles when you are zoomed in. So I somehow need to rerun the
part of the function that attaches the bubbles to the houses but am lost on
what to do. I basically need to rerun the section from the comment //MASTER
COMM POPS to just before ' masterHouse.onRollOver = function'
Any help would be appreciated. Thanks.
Here is the code:


#include "lmc_tween.as"

// CREATE XML OBJECT
var myXML:XML = new XML();
// SET ATTRIBUTES
myXML.ignoreWhite = true;
myXML.onLoad = parseXML;
// LOAD XML FROM FILE
myXML.load("xml/sample_new.xml");

function parseXML(valid:Boolean):Void {

if(valid) {

// GET MAP IMAGE
var mapImage = this.firstChild.attributes.map;
//mapLoader.mapContain.attachMovie("houstonMap", "houstonMap", 1);

// QUADRANTS ARRAY
var quadrants:Array = new Array();

// GET QUAD COUNT
var qCount:Number = this.firstChild.childNodes.length;

// LOOP THROUGH QUADRANTS 1-4
for(var q:Number = 0; q < qCount; q++) {
quadrants[q] = this.firstChild.childNodes[q].attributes.name;

//trace("Quad: #" + q + " " + quadrants[q]);

// MASTER PLAN COMMUNITIES

var mX:Array = new Array();
var mY:Array = new Array();
var mName:Array = new Array();
var mId:Array = new Array();
var mNumber:Array = new Array();
var mDesc:Array = new Array();

// GET MPCOM COUNT
var mCount:Number =
this.firstChild.childNodes[q].childNodes[0].childNodes.length;

// LOOP THROUGH MASTER PLANNED COMMUNITIES
for(var m:Number = 0; m < mCount; m++) {

var mPath =
this.firstChild.childNodes[q].childNodes[0].childNodes[m];

// MASTER COMMUNITY VALUES
mX[m] = mPath.attributes.x;
mY[m] = mPath.attributes.y;
mName[m] = mPath.childNodes[0].firstChild.nodeValue;
mId[m] = mPath.childNodes[1].firstChild.nodeValue;
mNumber[m] = mPath.childNodes[2].firstChild.nodeValue;
mDesc[m] = mPath.childNodes[3].firstChild.nodeValue;

// CREATE MASTERPLAN CONTAINER
var masterHouse:MovieClip =
_root.housesHolder.multiHolder.attachMovie("multicom_house", ["multicom" + m +
q], _root.housesHolder.multiHolder.getNextHighestDepth(), {_x:mX[m], _y:mY[m]});

//MASTER COMM POPS
if( (masterHouse._x < 200) && (masterHouse._y > 200) )
masterHouse.attachMovie("multiPop1", "multiPop1", 1, {_x:30, _y:-225} );
masterHouse.multiPop1._visible = false;
if( (masterHouse._x > 200) && (masterHouse._y > 200) )
masterHouse.attachMovie("multiPop2", "multiPop1", 1, {_x:30, _y:-225} );
masterHouse.multiPop1._visible = false;
if( (masterHouse._x > 200) && (masterHouse._y < 200) )
masterHouse.attachMovie("multiPop3", "multiPop1", 1, {_x:-200, _y:20} );
masterHouse.multiPop1._visible = false;
if( (masterHouse._x < 200) && (masterHouse._y < 200) )
masterHouse.attachMovie("multiPop4", "multiPop1", 1, {_x:30, _y:20} );
masterHouse.multiPop1._visible = false;

masterHouse.multiPop1.mName.text = mName[m];

// SUB COMMUNITIES

var sName:Array = new Array();
var sBrand:Array = new Array();
var sId:Array = new Array();
var sPrice:Array = new Array();
var sDesc:Array = new Array();

// GET SUBCOMMUNITY COUNT
var sCount:Number =
this.firstChild.childNodes[q].childNodes[0].childNodes[m].childNodes[4].childNod
es.length;

for(var s:Number = 0; s < sCount; s++) {

var info:XMLNode =
this.firstChild.childNodes[q].childNodes[0].childNodes[m].childNodes[4].childNod
es[s].childNodes;

// SUBCOMMUNITY VALUES
sName[s] = info[0].childNodes[0].nodeValue;
sBrand[s] = info[1].childNodes[0].nodeValue;
sId[s] = info[2].childNodes[0].nodeValue;
sPrice[s] = info[3].childNodes[0].nodeValue;
sDesc[s] = info[4].childNodes[0].nodeValue;


masterHouse.multiPop1.subAttach.attachMovie("subinfo",
"subinfo" + s, s + m );
var subHouse:MovieClip =
masterHouse.multiPop1.subAttach["subinfo" + s];


subHouse._x = 0;
subHouse._y += (30 * (s + 1));

subHouse.subName.text = sName[s];
subHouse.subPrice.text = sPrice[s];
subHouse.subNumber.text = sId[s];

if(sBrand[s] == "Meritage Homes")
subHouse.subHouseHolder.attachMovie("meritageHouseSub", "meritageHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Monterey Homes")
subHouse.subHouseHolder.attachMovie("montereyHouseSub", "montereyHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Legacy Homes")
subHouse.subHouseHolder.attachMovie("legacyHouseSub", "legacyHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Texas Big Homes")
subHouse.subHouseHolder.attachMovie("texasbigHouseSub", "texasbigHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());


masterHouse.onRollOver = function() {
_root.mglass_cur._visible = false;
this.swapDepths(this._parent.getNextHighestDepth());

this._parent.swapDepths(this._parent._parent.getNextHighestDepth());
this.multiPop1._visible = true;
}

broken45
11/29/2005 12:13:38 AM
NSurveyor
11/29/2005 12:16:37 AM
broken45
11/29/2005 12:23:14 AM
NSurveyor
11/29/2005 1:05:08 AM
Try this function... I wasn't sure which attachMovie calls you still want to
use...

function masterCommPops() {
// GET MAP IMAGE
var mapImage = myXML.firstChild.attributes.map;
//mapLoader.mapContain.attachMovie("houstonMap", "houstonMap", 1);
// QUADRANTS ARRAY
var quadrants:Array = new Array();
// GET QUAD COUNT
var qCount:Number = myXML.firstChild.childNodes.length;
// LOOP THROUGH QUADRANTS 1-4
for (var q:Number = 0; q<qCount; q++) {
quadrants[q] = myXML.firstChild.childNodes[q].attributes.name;
//trace("Quad: #" + q + " " + quadrants[q]);
// MASTER PLAN COMMUNITIES
var mX:Array = new Array();
var mY:Array = new Array();
var mName:Array = new Array();
var mId:Array = new Array();
var mNumber:Array = new Array();
var mDesc:Array = new Array();
// GET MPCOM COUNT
var mCount:Number =
myXML.firstChild.childNodes[q].childNodes[0].childNodes.length;
// LOOP THROUGH MASTER PLANNED COMMUNITIES
for (var m:Number = 0; m<mCount; m++) {
var mPath = myXML.firstChild.childNodes[q].childNodes[0].childNodes[m];
// MASTER COMMUNITY VALUES
mX[m] = mPath.attributes.x;
mY[m] = mPath.attributes.y;
mName[m] = mPath.childNodes[0].firstChild.nodeValue;
mId[m] = mPath.childNodes[1].firstChild.nodeValue;
mNumber[m] = mPath.childNodes[2].firstChild.nodeValue;
mDesc[m] = mPath.childNodes[3].firstChild.nodeValue;
// CREATE MASTERPLAN CONTAINER
var masterHouse:MovieClip = _root.housesHolder.multiHolder["multicom"+m+q];
//MASTER COMM POPS
if ((masterHouse._x<200) && (masterHouse._y>200)) {
masterHouse.attachMovie("multiPop1", "multiPop1", 1, {_x:30, _y:-225});
}
masterHouse.multiPop1._visible = false;
if ((masterHouse._x>200) && (masterHouse._y>200)) {
masterHouse.attachMovie("multiPop2", "multiPop1", 1, {_x:30, _y:-225});
}
masterHouse.multiPop1._visible = false;
if ((masterHouse._x>200) && (masterHouse._y<200)) {
masterHouse.attachMovie("multiPop3", "multiPop1", 1, {_x:-200, _y:20});
}
masterHouse.multiPop1._visible = false;
if ((masterHouse._x<200) && (masterHouse._y<200)) {
masterHouse.attachMovie("multiPop4", "multiPop1", 1, {_x:30, _y:20});
}
masterHouse.multiPop1._visible = false;
masterHouse.multiPop1.mName.text = mName[m];
// SUB COMMUNITIES
var sName:Array = new Array();
var sBrand:Array = new Array();
var sId:Array = new Array();
var sPrice:Array = new Array();
var sDesc:Array = new Array();
// GET SUBCOMMUNITY COUNT
var sCount:Number =
myXML.firstChild.childNodes[q].childNodes[0].childNodes[m].childNodes[4].childNo
des.length;
for (var s:Number = 0; s<sCount; s++) {
var info:XMLNode =
myXML.firstChild.childNodes[q].childNodes[0].childNodes[m].childNodes[4].childNo
des[s].childNodes;
// SUBCOMMUNITY VALUES
sName[s] = info[0].childNodes[0].nodeValue;
sBrand[s] = info[1].childNodes[0].nodeValue;
sId[s] = info[2].childNodes[0].nodeValue;
sPrice[s] = info[3].childNodes[0].nodeValue;
sDesc[s] = info[4].childNodes[0].nodeValue;
masterHouse.multiPop1.subAttach.attachMovie("subinfo", "subinfo"+s, s+m);
var subHouse:MovieClip = masterHouse.multiPop1.subAttach["subinfo"+s];
subHouse._x = 0;
subHouse._y += (30*(s+1));
subHouse.subName.text = sName[s];
subHouse.subPrice.text = sPrice[s];
subHouse.subNumber.text = sId[s];
if(sBrand[s] == "Meritage Homes")
subHouse.subHouseHolder.attachMovie("meritageHouseSub", "meritageHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Monterey Homes")
subHouse.subHouseHolder.attachMovie("montereyHouseSub", "montereyHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Legacy Homes")
subHouse.subHouseHolder.attachMovie("legacyHouseSub", "legacyHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
if(sBrand[s] == "Texas Big Homes")
subHouse.subHouseHolder.attachMovie("texasbigHouseSub", "texasbigHouseSub" + s,
subHouse1.subHouseHolder.getNextHighestDepth());
}
}
}
}
AddThis Social Bookmark Button