Hi,
zuersteinmal lass mal das '&' hinter der Variable weg, das macht oft nur Ärger.
Dann würde ich dir empfehlen einen Prototype zu basteln und das ganze über setColor(); anzusprechen.
Dein Skript könnte dann so aussehen, das die Farbwerte aus der Datenbank als globale Variablen definiert werden. Der Vorteil ist, das du diese dann überall erreichen kannst.
Ich würde daher folgendes Script empfehlen:
(Swatches ist dann die Maximale Anzahl der Farben, die ausgelesen werden.)
PHP:
//Actionscript 1.0
this.onEnterFrame
{
MovieClip.prototype.setColor = function(colour)
{
newColor = new Color(this);
newColor.setRGB(colour);
};
var loader = new LoadVars()
loader.load("colours.php");
loader.onLoad=function(success)
{
if(success)
{
for (i=0; i<this.swatches; i++)
{
_global["colour_"+i]=this["colour_"+i]
}
}
}
}
Das PHP Script dazu sieht dann zb so aus:
PHP:
<?php
require_once('config.inc.php');
$db_tab='colours';
$i='0';
$read=mysql_query("select rgb_hexcode_8bit from $db_tab order by id",$handler);
while($a=mysql_fetch_array($read))
{
$result.='&colour_'.$i.'='.$a['rgb_hexcode_8bit'];
$i++;
}
$result.='&swatches='.$i;
echo $result;
?>
Danach kannst du dann die Farben jederzeit mit dem Befehl setzen.
PHP:
//Actionscript 1.0
on(release)
{
_root.pfad.setColor("_global.colour_"+i);
}
Für die 3. Farbe wäre das dann zb.
PHP:
//Actionscript 1.0
on(release)
{
_root.pfad.setColor(_global.colour_2);
}
Für die erste…
PHP:
//Actionscript 1.0
on(release)
{
_root.pfad.setColor(_global.colour_0);
}
Für die 1203ste…
PHP:
//Actionscript 1.0
on(release)
{
_root.pfad.setColor(_global.colour_1202);
}
Um auf den Fehler in deinem Script einzugehen… du hast vergessen, das die Daten doch ersteinmal da sein müssen bevor du diese dann in den konstruierten setRGB(); Befehl setzen kannst. Daher klappt ja auch ein statischer Wert. PHP Dateien lädt man in Flash am besten mit dem loadVars() Objekt und nutzt für die Aktion die onLoad Methode, die sichergeht, das erst die Daten vorliegen, bevor Aktionen ausgeführt werden.
Liebe Grüße
Yves