Volledige versie bekijken : LoadVars en Number() returnt toch NaN
crucq
%Europe/Berlin %430 %2005, 11:20
Dag,
Ik heb het forum afgestruind maar toch helaas niets gevonden voor mijn probleem.
Na het inladen van een variabele met loadVars vanaf een phpbestand kan ik het niet converteren naar een getal om ermee te rekenen:
----------------------------------------------------------------
getinfo.php
<?
.........
echo "timestamp=".$row['lastlogin'];
?>
----------------------------------------------------------------
in mijn flashbestand staat op frame 1:
panelData = new LoadVars();
panelData.load("getinfo.php?Refresh=" add random(999999));
panelData.onLoad = function (success) {
if (success) {
gotoAndstop(5);
} else {
stop();
}
}
stop();
----------------------------------------------------------------
op frame 5 staat een movieclip met daarop:
onClipEvent(load){
ts = Number(_root.panelData.timestamp);
}
onClipEvent(enterFrame){
ts++;
info = ts; //info is een dynamic text-field in de clip
}
In het info-veld wordt bij een publiceren "NaN" gezet. Het lijkt erop dat flash wel de string goed ontvangt, want zonder Number() en de ++ actie wordt het juiste getal gewoon getoond.
Heeft iemand enig idee wat ik fout doe? Ik hoop dat je me kunt helpen.
Iniedergeval Bedankt
Pieter
theFlashWizard
%Europe/Berlin %553 %2005, 14:16
hoe heb je dat ontdekt? een trace in die onClipEvent(load)?
Dauntless
%Europe/Berlin %555 %2005, 14:19
En het is beter om geen AS op movieclips / buttons te zetten maar alles op frames :).
crucq
%Europe/Berlin %620 %2005, 15:54
Bedankt voor jullie reactie.
Klopt, een trace in de onLoad gaf inderdaad NaN terug, maar ook in het dynamisch tekstvlakje genaamd "info"
Ik vind het juist handig om met Movieclips variabelen bij te houden, zoals het bijhouden en outputten van de tijd, maar wordt het hierdoor trager of minder overzichtelijk, Dauntless?
Alvast bedankt weer
Dauntless
%Europe/Berlin %623 %2005, 15:58
Minder overzichtelijk :).
Maar je kan gerust variabelen opslaan in movieclips en zo... Maar nie top die manier.
mijnMovieClip.eenVar = "Haai";
op een frame ipv
onClipEvent(load){
this.eenVar = "Haai";
}
Het is korter en overzichtelijker :). AS op frames vind je snel terug, als het op mc's staat vind je die véél moeilijker terug. Zo worden er bv 'controlers mc's' gemaakt die verschrikkelijk klein zijn omdat er gewoon wat AS op geplaatst moet worden. Als iemand anders dan die .fla krijgt moet hij toch wel wat gaan zoeken eer hij al het AS vindt. Als alle AS dus op 1 frame op 1 layer (liefst bovenste frame van je movie) staat, vind iedereen die direct terug :).
crucq
%Europe/Berlin %656 %2005, 16:44
ok, cool, bedankt voor de tip. het werkt inderdaad goed!
het converteren naar een getal werkt echter nog steeds niet. Hebben jullie enig idee waar het aan kan liggen?
ik heb mijn script gesimplificeerd voor het testen naar:
panelData = new LoadVars();
panelData.load("getinfo.php?Refresh=" add random(999999));
panelData.onLoad = function (success) {
if (success) {
trace("voor:" add panelData.timestamp add " Na:" add Number(panelData.timestamp));
}
}
de php is onveranderd gebleven.
de trace retourneert:
----------------
voor:1125065406
Na:NaN
----------------
Ik hoop 't
stop();
crucq
%Europe/Berlin %681 %2005, 17:20
ik heb iets gevonden dat werkt, maar het lijkt me duivels, mag dit??
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="500" HEIGHT="110">
<PARAM NAME=movie VALUE="panel/panel.swf?timestamp=<? echo $paneltime; ?>">
<PARAM NAME=menu VALUE=false> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#000000>
<EMBED src="panel/panel.swf?timestamp=<? echo $paneltime; ?>" menu=false quality=high WIDTH="500" HEIGHT="110" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
gaat dus om > <? echo $paneltime; ?>" waarmee een get-var wordt meegegeven aan de swf.
Dauntless
%Europe/Berlin %072 %2005, 02:45
ik heb iets gevonden dat werkt, maar het lijkt me duivels, mag dit??
Natuurlijk mag dat :). Dat is zelfs heel handig. Als je bv een menu hebt dat na een refresh hetzelfde moet zijn als hoe hij ervoor was... Dan moet je wel zo iets gebruiken :). (Of met flashcookies werken, maar dat lijkt me wat 'te veel van het goede' ).
Alleen... Het zou natuurlijk ook op die andere manier moeten lukken...
Ik zie dat je php dit doet:
echo "timestamp=".$row['lastlogin'];
Dat moet normaal wel : echo "×tamp=".$row['lastlogin']."&"; zijn...
En je gebruikt 'add' wat verouderd is :) Gebruik gewoone een + :).
Als je dit doet:
trace(typeof(panelData.timestamp));//krijg je dan String?
mateo)
%Europe/Berlin %077 %2005, 02:51
hij geeft NaN terug omdat er nog een spatie achter het getal staat. je moet het getal nog even 'trimmen', dan werkt het. en wat die 'duivelse vondst' betreft: ja dat mag. het is nog iets netter om het met flashvars te doen. dus in de embed het attribuut flashvars="<?=$paneldata?>" toevoegen en als param <param name="flashvars" value="<?=$paneldata?>.
crucq
%Europe/Berlin %754 %2005, 19:06
Great! het werkt, bedankt voor de tips!
Hoe lang je wel niet bezig kan zijn met iets kleins.....
Ik dacht trouwens dat add juist nieuwer was... maar dus niet.
Goed weekend
Hoi!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.