PDA

Volledige versie bekijken : variabele naam van string + getal


underkoffer
%Europe/Berlin %948 %2005, 23:45
Ik zou in flash steeds een variabele naam willen maken die bestaat uit een string+een getal van een tellertje.

In php gaat dit als volgt:
for($i=0;$i<$waarde;$i++){
$terug = "$file_array[$i]";
echo "&pict".$i."=$terug&";
}
Met dit stukje stuur ik de eerste keer de eerste waarde uit de array naar flash met de variabele naam pict1, dan de 2de waarde uit de array met de variabele naam pict2,...

in flash vang ik dit dan op met
pic1= this.pict1;
pic2= this.pict2;
pic3 =this.pict3;Met 3 variabele valt dit nog mee, maar als er dit nu bv 100 zijn,...
Kan ik in flash dus die variabelenamen samenstellen zoals in php??? En hoe?

Jordy
%Europe/Berlin %951 %2005, 23:49
for (i=0; i<100; ++i) {
this["pic"+i] = this["pict"+i];
}

edit:

Lol, ik kwam erachter dat mijn versie toch niet goed was, na t verbeteren zag ik de versie van chic0 8D

chic0
%Europe/Berlin %951 %2005, 23:50
for(i=0;i<aantal;i++){
this["pic"+i] = this["pict"+i]
}

Het lijkt er dus erg op :)
Kan je overigens iets duidelijker zijn wat betreft de variabele namen, en hoe je array heet en zo?

underkoffer
%Europe/Berlin %321 %2005, 08:43
A, sorry voor de onduidelijke uitleg.
Maar die array heb ik php gebruikt en was dus geen probleem.
Eigenlijk wou ik gewoon een array van php naar flash overbrengen. (Heb gevonden dat dat via xml ging, maar daar snapte ik dus de kl.. van :S )

Nu heb ik dit eigenlijk op de volgende manier gedaan:
<?php
$dir = "images/";
$file_array = array();

$filesfound = opendir($dir);

while ($file = readdir($filesfound)) {
if ($file != "." && $file != "..") {
array_push($file_array, $file);
}
}
closedir($filesfound);

//tel gegevens in array en geef door aan flash
$waarde.= count ($file_array);
echo "&waardedoor=$waarde&";

//Neem foto 1, stuur pict1 door naar flash, neem foto 2, stuur pict2 door...
for($i=0;$i<$waarde;$i++){
$terug = "$file_array[$i]";
echo "&pict".$i."=$terug&";
}
?>

en in flash:
var fotoArray:Array = new Array();

// init LoadVars Object
lv = new LoadVars();

// define onLoad Callback
lv.onLoad = onLoadCallBack;

// send and load variables
lv.sendAndLoad("http://members.lycos.nl/underkoffie/leesdir.php?" + new Date(), lv, "POST");

// onLoad Callback
function onLoadCallBack(succes)
{
// if succes
if(succes)
{
test= this.waardedoor;

for(i=0;i<test;i++){
fotoArray.push(this["pict"+i]);
trace(fotoArray);
}

}
else
{
}
}
Dus nu zie je ook waarvoor ik dit stukje code nodig had.

Maar als ik nu het stukje van jou gebruik:
this["pic"+i] = this["pict"+i]
en pic1 zou bijvoorbeeld een textvak zijn, dan komt er niets in.
als ik pic1=this["pict"+i] gebruik werkt dit wel.

Maar ja, hetgeen ik eigenlijk nodig had werkt dus, bedankt hiervoor.

Roenes
%Europe/Berlin %573 %2005, 14:45
komt doordat je dan this["pic" + i] doet. In een onLoad van een LoadVars object verwijst this naar het loadvars object. Hierin zal die geen pic1 vinden als textveld en werkt het dus niet. Je kunt even _root["pic" + i] = ...... proberen. Dat zou dan wel moeten werken mits pic1 op de _root staat :)

underkoffer
%Europe/Berlin %927 %2005, 23:15
Dat werkt dus wel.
Weet je misschien ook hoe ik iets kan doen met de waardes van fotoArray buiten de accolades van function onLoadCallBack(succes){
...
}
Als ik hier binnen de accolades trace(fotoArray); doe dan krijg ik alle gegevens uit de array, doe ik dit buiten de accolades dan krijg ik dit niet.
Heb dit dus ook al geprobeert met de _root. maar dit helpt ook niet.

theFlashWizard
%Europe/Berlin %145 %2005, 04:30
check de flash help is op onLoad, want dan wordt die functie geactiveerd. en wat kom je dat tegen.. dat die functie pas afgespeeld wordt wanneer alles geladen is. doe je het dus buiten die functie is het nog niet geladen..