PDA

Volledige versie bekijken : variable werkt niet?


scorpes
%Europe/Berlin %784 %2005, 19:50
Hoi Flashers,
Ik ben bezig om een slideshow aan plaatjes te maken, die zich in een loop naar rechts blijven bewegen. Alleen dan wil ik dat het aantal plaatjes variable blijft. Dit heb ik gemaakt doormiddel van een php scriptje die het aantal plaatjes in een map teld en dat doorstuurd naar flash.
Maar heb een probleempje dat de variable die van de php komt op 1 of andere manier niet goed wilt werken, terwijl flash hem wel goed ontvangt als ik hem trace? En als ik hem zonder de php test, dus als ik de variable zelf een waarde geef dan werkt het wel goed? Heeft iemand hier een oplossing voor?

Hier is de flash code:
slide = new LoadVars();
slide.onLoad = Fillvalues;
slide.load("http://localhost/slideTest/countDir.php", slide, "POST");
function Fillvalues() {
blaat = eval("slide.aantal");
//blaat = 7; //<-- Dit is om zonder php te testen (dit werkt wel)
trace("Aantal plaatjes: "+blaat);
slide1.onEnterFrame = function() {
this._x += 2;
if (this._x == ((blaat*92)-144)) {
this._x = -((92*blaat)+144);
}
};
duplicateMovieClip("slide1", "slide2", 0);
slide2._x = -((92*blaat)+144);
slide2.onEnterFrame = function() {
this._x += 2;
if (this._x == ((blaat*92)-144)) {
this._x = -((92*blaat)+144);
}
};
}


En dit is de php code die het aantal bestanden in een map telt:
<?php
$count = 0;
$dir = "slide";
if (is_dir($dir))
{
if ($dh = opendir($dir))
{
while (($filename = readdir($dh)) !== false)
{
if (($filename != ".") && ($filename != ".."))
{
$count ++;
}
}
closedir($dh);
}
}
echo "&aantal=".$count;

?>

Het volledige voorbeeld zit in de bijlage

Roenes
%Europe/Berlin %787 %2005, 19:53
Heel vluchtig gekeken: Dit veranderen
blaat = eval("slide.aantal");naar dit:
blaat = Number(slide.aantal);Werkt dit? :)

scorpes
%Europe/Berlin %946 %2005, 23:43
hmm ik krijg nu als ik hem trace: NaN? Maar hij werkt niet.
ik begrijp er niets van waarom het niet werkt :(

arshad
%Europe/Berlin %957 %2005, 23:59
wat gebeurt er eigenlijk als je ipv de php code alleen dit doet:
<?

echo "&aantal=7";

?>

als dit dan ook niet werkt is een mogelijke oplossing:
vervang
blaat = eval("slide.aantal");

door
blaat = _root.aantal;
of probeer ook zonder de _root.

Misschien helpt dat...

Roenes
%Europe/Berlin %977 %2005, 00:28
_root is hier helemaal niet nodig aangezien aantal helemaal niet in de root binnenkomt :)

Maar je krijgt NaN van mij regel? Das erg vreemd! Verander je echo regel eens naar dit:
echo "&aantal=".$count."&";Als dit ook niet werkt test ik later even met je bestanden hier. :)

scorpes
%Europe/Berlin %496 %2005, 12:54
echo "&aantal=".$count."&";
Jaaa nadat ik dit verbeterd had, werkt het!! :D
Bedankt allemaal!
Nog even een kort vraagje, die movieclip die gedupliceerd wordt,, kan ik die ook op dezelfde hoogte (layer) krijgen als de orginele movieclip, want hij komt steeds boven de border uit.

Roenes
%Europe/Berlin %524 %2005, 13:34
Dat is een depth probleem. Je mc die je aanmaakt via duplicateMovieClip heeft een hogere depth als je border schijnbaar. Dit is heel makkelijk om te draaien met swapDepths(). Kijk daarvoor even in de flashhelp :)

scorpes
%Europe/Berlin %886 %2005, 22:16
Hmm heb swapdepth gebruikt en het werkt op zich goed, alleen heb ik een nieuwe probleem.
Ik ben erachter gekomen dat removeMovieClip(); niet meer werkt als je swapdepth hebt gebruikt... heb je daar een oplossing voor?

Roenes
%Europe/Berlin %995 %2005, 00:54
terugswappen :) Als je een met AS gecreëerde mc swapt met een mc die handmatig op de stage is gezet dan krijgt de AS mc een depth kleiner dan 0 (een mingetal dus). Volgens mij kan swapdepths alleen werken met depth > 0. Dus ff je mc weer swappen naar een geldige depth en dan verwijderen.

Het kan ook zijn dat de depth juist groter is als 0 bij de swap. Kweet niet meer hoe dat precies zat :)