Avatar billede TiHs Nybegynder
22. november 2004 - 22:51 Der er 29 kommentarer og
1 løsning

få et tekstfelt til at opdatere løbende i en bestemt frame

brug for hjælp igen :o)

jeg har et dynamisk tekstfelt jeg gerne vil have til at opdatere løbende ...
Kan jeg ikke på en let måde få framen til at reloade efter x antal sekunder ?? ....
Avatar billede pyroman Nybegynder
22. november 2004 - 23:15 #1
Kan du ikke bare opdatere hele tiden?:

this.onEnterFrame = function(){
  mitTekstFelt.text = variabel;
}


Ellers kan du lave en funktion, der så kaldes efter et givents antal millisekunder:

function opdater(){
  mitTekstFelt.text = variabel;
  updateAfterEvent();
}
var taeller = setInterval(opdater, 1000);


ændr 1000 til eget tal - tid i millisekunder...
Avatar billede TiHs Nybegynder
22. november 2004 - 23:24 #2
Jeg har ca 10 frames i denne scene ....
I frame 10 har jeg så mit tekstfelt og jeg har også en action layer hvor jeg
selvfølgelig har lavet en Stop();
Kan jeg så godt i samme frame lave som du skriver det her ?
Min variabel hedder GuestBook ... altså tekstfeltet ...
Den skal altså opdater frame 10 så den henter evt. nye beskeder ....

troede måske det var en eventListener jeg skulle lave på en måde ...
Avatar billede pyroman Nybegynder
23. november 2004 - 00:18 #3
Ja - du kan godt bruge den sidste metode til det...
Avatar billede TiHs Nybegynder
23. november 2004 - 07:15 #4
Skal det være på selve den frame hvori jeg har mit TextFiels ?? ..
Og helt præcis ... hvordan skriver jeg så min event når jeg gerne vil have den til at opdatere hver halve minut f.eks. ? ... jeg har ikke lavet en eventlistener før ...
Avatar billede pyroman Nybegynder
23. november 2004 - 10:14 #5
Der er ikke nogle eventlistenere her... du smider bare koden ind i det frame hvr du har dit tekstfield, og ændrer tallet tusind til den tid du ønsker:

function opdater(){
  mitTekstFelt.text = variabel;
  updateAfterEvent();
}
var taeller = setInterval(opdater, 1000); //Denne sørger for at kalde funktionen igen og igen


opgaven med at lave et halvt minut om til millisekunder lader jeg stå til dig - sådan lidt hjernegymnastik ;)
Avatar billede TiHs Nybegynder
23. november 2004 - 18:51 #6
Jeg har nu prøvet med ovenstående i den frame mit tekstfield ....
Det virker ikke ... den opdaterer ikke noget ....
Den kode du har skrevet, virker den i MX 2004 ? ... eller er der forskel i det ?
Skal jeg evt. ændre mitTekstFelt til den variabel som jeg har givet mit tekstfield .. altså til GuestBook ??
Avatar billede pyroman Nybegynder
23. november 2004 - 19:56 #7
Prøb at ændre til følgende:

function opdater(){
  trace("der er opdateret");
  mitTekstFelt.text = variabel;
  updateAfterEvent();
}
var taeller = setInterval(opdater, 1000); //Denne sørger for at kalde funktionen igen og igen

Får du ikke tracet "Der er opdateret" hvert sekund?
Avatar billede TiHs Nybegynder
23. november 2004 - 21:27 #8
jo det gør jeg egentlig ... hmmmm ....
betyder det så at det skulle virke ?
Avatar billede TiHs Nybegynder
23. november 2004 - 21:40 #9
Den opdater ikke selv ... kun når jeg trykker på "næste 10" eller "forrige 10" i listen over beskeder ... jeg vil gerne have at den opdater automatisk så snart der er en der indlægger en besked ... altså så jeg kan sidde her på min egen pc og se at "nu der skrevet igen" uden at skulle opdater framen ved at trykke frem og tilbage i filmen ...
Avatar billede TiHs Nybegynder
23. november 2004 - 21:48 #10
how ... har glemt at fortælle det forresten er php der styrer denne form for gæstebog ... kan det være min php-fil der skal kigges på før den opdater ? ... eller kan jeg bare lave en ny form for getText så den selv kigger efter teksten på min server ?
Avatar billede pyroman Nybegynder
23. november 2004 - 21:53 #11
ok - jamen, du har jo kun fortalt at du ville opdatere et tektfelt med tekst - jeg ved jo ikke hvor teksten kommer fra... Du skulle måske lige have sagt at du henter den fra en extern kilde, og at det er denne du vil opdatere...
Så skal du bare ændre 'opdater' funktionen, så den henter dataene på ny igen:


var taeller;
var mineVars = new LoadVars();
mineVars.onLoad = function(ok){
  if(ok){
    trace("variabler er hentet: variabel = "+this.variabel"); //Skriver lidt spass til tjek
    mitTekstFelt.text = this.variabel;
    updateAfterEvent();
  }else trace("kunne ikke hente variabler"); //Lidt mere spass til tjek...
}
function opdater(){
  trace("Der opdateres - variabler hentes");
  mineVars.load("mitScript.php");
}
taeller = setInterval(opdater, 30000);


Denne henter variablen "variabel" fra scriptet "mitScript.php" og viser indholdet af denne i "mitTekstFelt" hvert 30. sekund...
Avatar billede TiHs Nybegynder
23. november 2004 - 22:09 #12
hehe ... ja sorry ...

Jeg får følgende fejl i test:

**Error** Scene=Scene 5, layer=TextField, frame=10:Line 5: String literal was not properly terminated
        trace("variabler er hentet: variabel = "+this.variabel"); //Skriver lidt spass til tjek

**Error** Scene=Scene 5, layer=TextField, frame=10:Line 6: ')' or ',' expected
        mitTekstFelt.text = this.variabel;

Total ActionScript Errors: 2     Reported Errors: 2

Jeg går ud fra at det eneste jeg egentlig skal ændre er "mitScript.php" til
hvad min php fil hedder...
Avatar billede pyroman Nybegynder
23. november 2004 - 22:22 #13
jaja lidt parkinson har vi vel alle - kunne ikke ramme de rigtige knapper...

var taeller;
var mineVars = new LoadVars();
mineVars.onLoad = function(ok){
  if(ok){
    trace("variabler er hentet: variabel = "+this.variabel); //Skriver lidt spass til tjek
    mitTekstFelt.text = this.variabel;
    updateAfterEvent();
  }else trace("kunne ikke hente variabler"); //Lidt mere spass til tjek...
}
function opdater(){
  trace("Der opdateres - variabler hentes");
  mineVars.load("mitScript.php");
}
taeller = setInterval(opdater, 30000);


Det eneste du så skal gøre er at ændre "mitScript.php" - og så hedder din variabel fra php nok heller ikke bare "variabel" - men det kan du nok selv rode lidt med...
Avatar billede TiHs Nybegynder
24. november 2004 - 19:13 #14
Min variabel, altså tekstfeltet hedder GuestBook ... hvor er det så lige jeg skal ændre det ... ??
Avatar billede pyroman Nybegynder
24. november 2004 - 19:22 #15
Hmm jeg kan regne ud at du bruger en gammel form for at loade data ind i flashen, din kode ser sikkert sådan her ud:

loadVariables("guestbook.php"); ??

Det er en lidt forældet måde - den virker fint, men for at få mere kontrol over programmet, har man fra flash player 6 et specielt objekt der kan tage sig at henting af variabler: LoadVars
Du bør hvis du bruger Flash MX eller MX2004 bruge dette når du hanter data fra fx en php fil.

Din PHP udskriver en variabel, det kunne fx se sådan her ud:

GuestBook=Her er en masse tekst der udgør indholdet


Flash henter så denne ind og gemmer den i en variabel med navnet "GuestBook" i LoadVars-objektet. Når alt er hentet viser flashen det så i tekstfeltet, som du giver et INSTANCE navn, fx "guestbook_text".


Altså - dit tekstfelt skal have et instancenavn - ikke en variabel. Og resten af din kode skal nok opdateres lidt, ved mindre du vil holde fast i flash 5 koden...
Avatar billede TiHs Nybegynder
24. november 2004 - 19:37 #16
jeg kalder den egentlig sådan her:

loadVariablesNum ("GuestBook.php?NumLow="+NumLow+"&NumHigh="+NumHigh+"&R="+random(999), 0);
Avatar billede TiHs Nybegynder
24. november 2004 - 19:45 #17
jeg må lige efter dette istedet for at på linien under her at skrive Stop; kunne få den til at blive ved med at "loadVariablesNum ... ???
Avatar billede TiHs Nybegynder
24. november 2004 - 19:46 #18
og ja ... laver det i FlashMXprofessionel 2004
Avatar billede pyroman Nybegynder
24. november 2004 - 19:47 #19
Ja netop...

Brug denne i stedet:


var updateInterval;
var NumLow, NumHigh;
var GuestBookVars = new LoadVars();

GuestBookVars.onLoad = function(ok){
  if(ok){
    GuestBookText.text = this.GuestBook;
    updateAfterEvent();
  }
}
function update(){
  GuestBookVars.NumLow = NumLow;
  GuestBookVars.NumHigh = NumHigh;
  GuestBookVars.R = Math.random();
  GuestBookVars.SendAndload("guestbook.php", GuestBookVars, "GET");
}
updateInterval = setInterval(update, 30000);


Hvor dit tekstfelt har instancenavnet "GuestBookText", og dit script hedder "guestbook.php"

Når du vil opdatere indholdet skriver du bare: update(); Men den gør det også automatisk hvert halve minut...

Og så er det en smart og up-to-date kode ;)
Avatar billede TiHs Nybegynder
24. november 2004 - 19:55 #20
Altså skrive ovenstående istedet for:

NumLow = 0;
NumHigh = 10;
loadVariablesNum ("GuestBook.php?NumLow="+NumLow+"&NumHigh="+NumHigh+"&R="+random(999), 0);
stop;

.... vil den så stadig kunne finde ud af at køre min GuestBook.php .. også med NumLow og NumHigh ? ...

og ja ... fangede godt at jeg skal give mit tekstfelt instancenavn GuestBookText..
Avatar billede pyroman Nybegynder
24. november 2004 - 20:00 #21
ja næsten - behold bare din stop(), og erstat var NumLow, NumHigh med:

var NumLow = 0;
var NumHigh = 10;

så burde det stadig virke..

Hvis du vil skifte side - altså vise noget andet en fra 0-10 skriver du bare:

NumLow = 10; //eller et andet tal
NumHigh = 20;
Avatar billede TiHs Nybegynder
24. november 2004 - 20:03 #22
Det er fordi jeg maks vil vise 10 indlæg ad gangen at jeg har den ... så kan man bladre fremad i bogen ... men prøver lige ... så hører du ....
Avatar billede TiHs Nybegynder
24. november 2004 - 20:30 #23
Den kan sku ikke finde ud af det ... den vil kun loade indhold med ovenstående når jeg trykke på mine knapper "næste 10" og så tilbage "forrige 10" ...
Avatar billede pyroman Nybegynder
24. november 2004 - 20:39 #24
prøv at skrive dette med småt S:

GuestBookVars.sendAndload("guestbook.php", GuestBookVars, "GET");

så virker det nok en smule bedre... det burde det i hvert fald ;)
Avatar billede TiHs Nybegynder
24. november 2004 - 20:47 #25
Det går heller ikke ...
Kan det være fordi jeg ikke har fjernet variablen på mit TekstField ?? .. hedder jo stadig GuestBook som var:
Avatar billede pyroman Nybegynder
24. november 2004 - 21:13 #26
Det burde sådan set ikke gøre nogen forskel...

Prøv at udskrive lidt af hvert:


var updateInterval;
var NumLow = 0;
var NumHigh = 10;

var GuestBookVars = new LoadVars();
GuestBookVars.onLoad = function(ok){
  if(ok){
    trace("Har hentet data fra php");
    GuestBookText.text = this.GuestBook;
    updateAfterEvent();
  }
}
function update(){
  trace("opdaterer");
  GuestBookVars.NumLow = NumLow;
  GuestBookVars.NumHigh = NumHigh;
  GuestBookVars.R = Math.round(Math.random()*999);
  GuestBookVars.SendAndload("guestbook.php", GuestBookVars, "GET");
}
updateInterval = setInterval(update, 30000);
update();


Nu burde du gerne få noget i output-vinduet..
Avatar billede TiHs Nybegynder
24. november 2004 - 21:57 #27
Det vil den sku stadig ikke....
Får du noget ud af følgende php-fil som jeg bruger:

*********************************************************
<?php
// If you are using an old version of php, remove the next set of lines.
// or use $HTTP_POST_VARS["..."] instead.
$Submit     = $_POST["Submit"];
$Name         = $_POST["Name"];
$Email         = $_POST["Email"];
$Website     = $_POST["Website"];
$Comments     = $_POST["Comments"];
$NumLow     = $_REQUEST["NumLow"];
$NumHigh     = $_REQUEST["NumHigh"];

// Replace special characters - you can remove the next 5 lines if wanted.

// Remove slashes.
$Name         = stripslashes($Name);
$Email         = stripslashes($Email);
$Website     = stripslashes($Website);
$Comments     = stripslashes($Comments);

// ###################################################################################
// ########## Reading and Writing the new data to the GuestBook Database #############

if ($Submit == "Yes") {
// Next line tells the script which Text file to open.
    $filename     = "GuestBook.txt";

// Opens up the file declared above for reading

    $fp         = fopen( $filename,"r");
    $OldData     = fread($fp, 80000);
    fclose( $fp );

// Gets the current Date of when the entry was submitted
    $Today         = (date ("l dS of F Y ( h:i:s A )",time()));

// Puts the recently added data into html format that can be read into the Flash Movie.
// You can change this up and add additional html formating to this area.  For a complete listing of all html tags
// you can use in flash - visit: http://www.macromedia.com/support/flash/ts/documents/htmltext.htm

    $Input = "Name: <b>$Name</b><br>Email: <b><u><a href=\"mailto:$Email\">$Email</a></u></b><br>Website: <b><u><a href=\"http://$Website\" target=\"_blank\">$Website</a></u></b><br>Comments: <b>$Comments</b><br><i><font size=\"-1\">Date: $Today</font><br><br>.:::.";

/* This Line adds the '&GuestBook=' part to the front of the data that is stored in the text file.  This is important because without this the Flash movie would not be able to assign the variable 'GuestBook' to the value that is located in this text file  */

    $New = "$Input$OldData";

// Opens and writes the file.

    $fp = fopen( $filename,"w");
    if(!$fp) die("&GuestBook=cannot write $filename ......&");
    fwrite($fp, $New, 800000);
    fclose( $fp );
}

// ###################################################################################
// ######### Formatting and Printing the Data from the Guestbook to the Flash Movie ##



// Next line tells the script which Text file to open.
    $filename = "GuestBook.txt";

// Opens up the file declared above for reading

    $fp     = fopen( $filename,"r");
    $Data     = fread($fp, 800000);
    fclose( $fp );

// Splits the Old data into an array anytime it finds the pattern .:::.
    $DataArray = split (".:::.", $Data);

// Counts the Number of entries in the GuestBook
    $NumEntries = count($DataArray) - 1;

    print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
    for ($n = $NumLow; $n < $NumHigh; $n++) {
    print $DataArray[$n];
        if (!$DataArray[$n]) {
            Print "<br><br><b>No More entries</b>";
        exit;
        }
    }
?>
Avatar billede TiHs Nybegynder
24. november 2004 - 21:59 #28
Den viser dog at den opdater når jeg tester i selve flashMX men der sker stadig ikke noget når det er lagt ud på serveren ... pånær jeg trykker på næste og forrige
Avatar billede TiHs Nybegynder
27. november 2004 - 01:13 #29
Har istedet lavet en opdater knap .... :o)
Kom med et svar så du kan få dine point pyro
Avatar billede TiHs Nybegynder
02. december 2004 - 17:44 #30
lukket ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester