07. februar 2006 - 15:10Der er
19 kommentarer og 1 løsning
Opdater flash film dynamisk
X Hej, Håber at I kan hjælpe mig med at gribe dette korrekt an.
På en skærm vises en webside, med en flash-fil (swf). Flash-filen kan blive opdateret når som helst af en sekretær og man kan derfor ikke planlægge nogen faste opdateringsrutiner på forhånd.
Kan man i det "skjulte" tjekke om filen er opdateret siden den blev hentet sidst? Her tænker jeg på at tjekke hvert 5. min. - Man kunne vel evt. tjekke og sammenligne på filens dato? (Filens navn vil ikke blive ændret!)
Hvis den er blevet opdateret, siden sidste indlæsning, skal den nye flash-fil indlæses og afspilles i stedet for.
Hvis ikke skal siden ikke opdateres, da det vil forstyrre de evt. læsere der kigger på skærmen.
Kan man evt. lave en "master" flash-film, der "kun" skal afspille den "rigtige" flash fil og løbende tjekke om den skal indlæses på ny, for at få de opdaterede oplysninger vist.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Flash kan efter min viden ikke umiddelbart tjekke datoen på en flashfilm, men hvis din sekretær kan uploade en text-fil, hvor dags dato står så kan I jo bruge det i stedet for. Alternativt kan I bruge php eller asp til tjekket om flashfilen er blevet fornyet - hvis I ikke vil lave en textfil med den fornyede dato.
Jeg tror løsningen med en master-flash-fil er metoden. Dog skal I huske at flash skal snydes (så den tror det er en ny swf den henter) når den henter den nye fil (hvis den altså er navngivet med samme navn som den første) - dette kan gøres ved at proppe en variabel i enden når man loader filen - fx: mymc.loadMovie("minflashfil.swf?myvar="+Math.random(1000000));
Eller smartere endnu bruge dags dato+tid til at generere variablen, så er den helt unik - mit eksempel vil gå galt i 1 ud af 1 million gange.
Har du selv evnerne og værktøjerne(kodeforståelsen) til at lave masterfilen?
Der er ingen grund til at checke om filen er ny - bare lad masterflashen hente den separate fil ind fx. hvert 5. minut, hver time eller hvor ofte det nu er nødvendigt.
Det skal fremvises på en LCD-skærm og skulle gerne fungere som en infoskærm.
Der er en person, der sidder og vedligeholder en PowerPoint præsentation. Denne præsentation bliver konverteret til en SWF-fil vha. programmet FlashSpring (www.flashspring.com). Filen bliver gemt på en Server. - Det er denne SWF der skal indlæses i "master-filmen".
Infoskærmen viser flash-filmen i fuldskærm (Embedded på en html side.)
Ulempen ved at indlæse flash-filmen i Master-filmen lige meget om den er opdateret i forhold til den tidligere indlæste, er at de personer der står og læser på infoskærm, vil blive "tvungen/forstyrret" hver 5. min. - selvom der ikke er nogen ændringer i indholdet.
Jeg håber at denne forklaring, kan hjælpe med at forstå udfordringen.
---- Kode ---- dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.GetFile("D:\infoScreen.swf") Dato = f.DateLastModified set f=nothing set fs=nothing ---- Kode ----
Skal variablen "Dato", sendes videre på nogen måde?
Ingen grund til at korrigere i mit eksempel - jeg har valgt dato og tidspunkt modellen i mit eksempel - da dato og tidspunkt altid er 100% unikt, mens random jo godt kan blive det samme tal -og i så fald vil flash undlade at hente den nye fil, da den tror det er den samme som tidligere.
Din variabel 'Dato' skal sendes videre i formen "dato=dindatoogtidspunkt" - altså udskrive det - i php ville jeg sige: echo "dato=".$Dato;
Det er ikke så vigtigt hvilken form datoen har, når blot den unikt skifter udseende i forhold til hvordan den så ud ved den tidligere dato.
Hmm beklager virkelig at jeg sådan har fyldt dit spørgsmål med indlæg og svar som ikke virker.
Jeg troede virkelig godt man kunne sende variabler med i en loadMovie - det kan man nemlig i objectkoden i html - men af en eller anden grund kan man kun loade movies på den 'rene' sti. - hvilket betyder at mit eksempel ikke virker :-(
Den eneste løsning jeg umiddelbart kan komme på nu er at lade den fil der skal hentes skifte navn, når der er ændret i den - men det kræver enten en del af sekretæren som laver filen - eller noget af dig og det uploadscript du så må lave.
Strukturen skulle så være som følger: 1. masterflashfilen kalder scriptfil som sender navnet på flashfilmen tilbage. 2. masterflashfilen sammenligner navnet med et eventuelt tidligere navn på flashfilmen, hvis det nye navn ikke harmonerer med det tidligere, så henter masterflashfilen den nye flashfilm ellers gør den ingenting.
I dit serverscript skal du så lave: 1. et uploadscript som navngiver den uploadede flashfilm udfra dagsdato og tidspunkt(så det bliver unikt) - samt sletter den forrige film 2. en scriptfil som udskriver flashfilmens navn
Jeg har desværre ikke mulighed for at benytte Upload-komponenter eller lign. i drifts-scenariet for denne opgave :( - Der må da være en Flash-løsning til mit problem?
PS: Når jeg afvikler min master-film (efter dit eks.), så loader den indholds-filen godt nok, men den viser et underligt udsnit af indholdet. Ca. 1/4 af indholdet er "stretchet" ud til at fylde hele skærmen.
alexander_j >> Tricket med at sætte en unik query i 'loadMovie' virker vel ikke, fordi det ikke er nødvendigt. Er det ikke netop sådan, at swf'er ikke caches på klienten? Er det ikke sådan, at hvis swf'en er blevet opdateret, så får man automatisk den nye version, næste gang den loades med 'loadMovie'?
wolfgang >> Er det testet, om den nye film bliver loaded med en helt alm. 'loadMovie'?
Jamen, så kan man læse .swf'en på serveren og skrive indholdet ud i et dokument, hvor man sætter HTTP-headers, der modvirker caching - samt én, der fortæller klienten, det er en .swf, der ankommer. Til sidst returneres resultatet til klienten. I PHP ville jeg skrive:
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.