PDA

Volledige versie bekijken : movieclips op coordinaten uit database plaatsen


Jan van de Laar
%Europe/Berlin %404 %2005, 10:42
Ik heb een kaart waar bevriende reizigers hun positie kunnen plaatsen. Via een webformulier geven ze de coordinaten aan de database door. De coordinaten haal ik op met het volgende php script (gateway.php):

<?
include("database.inc.php");
$connectie = mysql_connect($host, $user, $password)
or die ("Kan geen verbinding opbouwen!");
mysql_select_db($database) or die ("Kan geen database selecteren!");

$query = "SELECT spot_id, spot_name, X_pos, Y_pos FROM Spots ORDER BY spot_id ASC";
$resultaat = mysql_query($query)
or die ("Fout in query:$query. " . mysql_error());

while ( $rij = mysql_fetch_array($resultaat) )
{
$spot_id = $rij["spot_id"];
$spot_name = $rij["spot_name"];
$X_pos = $rij["X_pos"];
$Y_pos = $rij["Y_pos"];
echo"$spot_id $spot_name $X_pos $Y_pos<br>";
}

?>
Middels de echo onderaan het script controleer ik of ze goed worden opgehaald. Dit deel werkt.


In de flashfile heb ik een kaart. In een laag erboven staat een exemplaar van de movieclip spot_mc. Deze moet gedupliceerd worden en geplaatst op de coordinaten die ik via het php-script heb verkregen. In de laag genaamd actions staat het volgende script.

myLoadVariables_lv = new LoadVars();
myLoadVariables_lv.load("gateway.php");
blockArray_array = new Array();
i = "$rij";
for (i=1; i<$resultaat; i++) {
duplicateMovieClip(spot_mc, "spot_mc"+i, i);
blockArray_array[i] = _root["spot_mc"+i];
blockArray_array[i]._x = X_pos;
blockArray_array[i]._y = Y_pos;
}

Ik doe iets fout maar weet niet wat.

bracke
%Europe/Berlin %444 %2005, 11:39
Ik ben niet 100% zeker, maar ik denk dat flash de variabelen uit uw php-file niet kent.

Kan het zijn dat je die variabelen in uw php nog een '&' moet meegeven?


print("&X_pos =$X_pos ");
print("&Y_pos =$Y_pos ");

Nogmaals ik ben niet zeker!

Groetjes!!

Jan van de Laar
%Europe/Berlin %602 %2005, 15:26
Nee, ik denk dat het eerder in het actionscript loopje zit...

Roenes
%Europe/Berlin %884 %2005, 22:14
2 dingen:
- Je LoadVars heeft geen onLoad methode waardoor je niet opvangt wanneer je data binnen is.
- Je echo'ed de vars verkeerd naar flash. Kijk hier (http://www.flashfocus.nl/forum/showthread.php?t=23) maar eens naar :)

Jan van de Laar
%Europe/Berlin %434 %2005, 11:25
Ik heb het voorbeeld bekeken en geprobeerd maar ik begrijp het niet helemaal. Er staan drie velden in het voorbeeld. De inhoud van het bovenste (actionscript)veld heb ik geplakt in het scriptpane. Daarna staat er een veld met de titel In TXT. De inhoud daarvan heb ik geplakt in een nieuw tekstbestand en opgeslagen als lv.txt.
De inhoud van het PHP-veld heb ik opgeslagen als lv.php. Uiteraard heb ik de url's aangepast aan de serveradressen. Als ik de movie test krijg ik in het outputscherm twee keer "undefined".

Jan van de Laar
%Europe/Berlin %883 %2005, 22:11
Ik heb het inmiddels voor elkaar door het ombouwen van een flash adressbook dat op de wesbite van macromedia beschreven wordt. Momenteel staat alles in de main timeline. Het lieft heb ik alles in een movieclip staan. Dan kan ik er straks meer mee. Ik heb alles opnieuw opgebouwd in een movieclip en deze wordt op frame 10 ingeladen. Werken doet het niet meer, waarschijnlijk omdat bepaalde verwijzingen bij het kopieren naar de mc zelf verwijzen.

Dit is de code van de movieclip kaart_mc die in de swf opgeroepen wordt.


function showContent()
{
spotArray_array = new Array();
var i;
content.htmlText = "";

for (i=0; i < this.n; i++) {
content.htmlText += this["spot_name"+i] + this["X_pos"+i] + " " + this["Y_pos"+i] + "<br>";
duplicateMovieclip(spot_mc, "spot_mc"+i,i);
spotArray_array[i] = _root["spot_mc"+i];
spotArray_array[i]._x = this["X_pos"+i];
spotArray_array[i]._y = this["Y_pos"+i];
spotArray_array[i].spot_name_txt = this["spot_name"+i];
}
}
spot_mc._visible = 0;
// Create new load vars object c for data transfer
var c = new LoadVars();
c.onLoad = showContent;

// define content and actions for each tab
for (var i=65; i<=68; i++) {
this["tab"+chr(i)].letter.text = chr(i);
// when this tab is clicked
this["tab"+chr(i)].onRelease = function() {
// can't use chr(i) here -- must use mc name
c.thisLetter = this._name.substr(3,1);
content.htmlText = "Loading data for " + c.thisLetter;
// scope of this function is main timeline so can refer to c directly
c.sendAndLoad("flashmx_dbPassReturn.php",c,"POST");
}
}

stop();

[/as]
De door fla met daarin de movieclip is te downloaden op

www.janvandelaar.nl/flash/container.fla

Het werkende bestand kun je zien op http://www.erih.nl/flash/digikaart.html

Jan van de Laar
%Europe/Berlin %886 %2005, 22:16
Ik heb het inmiddels voor elkaar door het ombouwen van een flash adressbook dat op de wesbite van macromedia beschreven wordt. Momenteel staat alles in de main timeline. Het lieft heb ik alles in een movieclip staan. Dan kan ik er straks meer mee. Ik heb alles opnieuw opgebouwd in een movieclip en deze wordt op frame 10 ingeladen. Werken doet het niet meer, waarschijnlijk omdat bepaalde verwijzingen bij het kopieren naar de mc zelf verwijzen.

Dit is de code van de movieclip kaart_mc die in de swf opgeroepen wordt.



function showContent()
{
spotArray_array = new Array();
var i;
content.htmlText = "";

for (i=0; i < this.n; i++) {
content.htmlText += this["spot_name"+i] + this["X_pos"+i] + " " + this["Y_pos"+i] + "<br>";
duplicateMovieclip(spot_mc, "spot_mc"+i,i);
spotArray_array[i] = _root["spot_mc"+i];
spotArray_array[i]._x = this["X_pos"+i];
spotArray_array[i]._y = this["Y_pos"+i];
spotArray_array[i].spot_name_txt = this["spot_name"+i];
}
}
spot_mc._visible = 0;

// Create new load vars object c for data transfer
var c = new LoadVars();
c.onLoad = showContent;

// define content and actions for each tab
for (var i=65; i<=68; i++) {
this["tab"+chr(i)].letter.text = chr(i);
// when this tab is clicked
this["tab"+chr(i)].onRelease = function() {
// can't use chr(i) here -- must use mc name
c.thisLetter = this._name.substr(3,1);
content.htmlText = "Loading data for " + c.thisLetter;
// scope of this function is main timeline so can refer to c directly
c.sendAndLoad("flashmx_dbPassReturn.php",c,"POST");
}
}

stop();
De fla met daarin de movieclip is te downloaden op

www.janvandelaar.nl/flash/test.fla (wegens aanwezige kaart 1 mB)

Het werkende bestand kun je zien op http://www.erih.nl/flash/digikaart.html