PDA

Volledige versie bekijken : Achterhalen positie flashvar properties


PageMaker
%Europe/Berlin %628 %2010, 15:05
Voor het het achterhalen van flashvar properties en hun waarden doe je bijvoorbeeld:
var paramObj:Object = new Object();
paramObj = LoaderInfo( this.root.loaderInfo).parameters;

for( keyStr in paramObj )
{
valStr = String( paramObj[ keyStr ]); // dit kan niet anders
// kun je van keyStr de positie in het array / object achterhalen?
myText.appendText( "\t" " +keyStr + ": \t" + valStr + "\n");
}
Nu blijkt dat het resultaat in een volstrekt onvoorspelbare volgorde wordt opgehaald dan die zoals in het javascript.
Kun je nu op de een of andere manier de index van keyStr achterhalen?
Zoals het nu is, lijkt het erop dat de properties van het flashvar object op een willekeurige volgorde worden opgehaald; maar, daar zal toch op de een of andere manier een ordening achter moeten zitten. De vraag is alleen, welke?
Dan kun je die properties tenminste op een voorspelbare plaats in een array stoppen; of in een ander object, wat net zo mooi zou zijn.

jaspermuts
%Europe/Berlin %644 %2010, 15:28
Je loopt er doorheen: dan zie je toch de volgorde?

var paramObj:Object = new Object();
paramObj = LoaderInfo( this.root.loaderInfo).parameters;
var ind:int = 0;
for( keyStr in paramObj )
{
trace(ind);
valStr = String( paramObj[ keyStr ]); // dit kan niet anders
// kun je van keyStr de positie in het array / object achterhalen?
myText.appendText( "\t" " +keyStr + ": \t" + valStr + "\n");//" <-even een bewuste quote voor de AS-highlighter die wat in de war raakt met ge-escapete quotes :P
ind++;
}
Waarom heb je precies de volgorde nodig, als het goed is weet je welke eigenschappen er aan paramObj gegeven kunnen zijn, want dat bepaal je zelf.
Ik zou er iig vanuit gaan dat je in je Flash bepaalt wat er binnen kan komen, en je javascript er maar aan moet voldoen.
Is paramObj dan zo'n onlogisch object geworden in jouw geval?

Jan
%Europe/Berlin %488 %2010, 11:43
for..in statement

Iterates over the dynamic properties of an object or elements in an array and executes statement for each property or element. Object properties are not kept in any particular order, so properties may appear in a seemingly random order. Fixed properties, such as variables and methods defined in a class, are not enumerated by the for..in statement. To get a list of fixed properties, use the describeType() function, which is in the flash.utils package.

Als je iets index based wil, moet je een array gebruiken. Stuur dus een array naar Flash of iets dat makkelijk omzetbaar is naar een array.
movie.swf?arr=a,b,c
var array:Array = arr.split(',');

Jan

PageMaker
%Europe/Berlin %602 %2010, 14:28
Jan,
Dank voor je reactie.
Ik had in deze post: http://www.flashfocus.nl/forum/showthread.php?t=57587 al eens aangegeven dat ik een probleem ondervind met het overdragen van een array vanuit Javascript naar Flash; ik heb die suggestie nog niet verder onderzocht, maar ga dat nu doen.
Wanneer dat lukt is m'n probleem opgelost; dan maak ik gewoon het array in JS vul het middels een functie met de gewenste waarden en stuur het naar Flash.
En wanneer het helemaal niet wil dan moet het maar met JSON.
Last but not least; ik wil een aantal screen/window parameters die Flash niet kent, vanuit de HTML container middels javascript overdragen naar Flash AS3.
Misschien ben ik wel veel te moeilijk aan het doen.