Avatar billede m_187 Nybegynder
29. marts 2004 - 14:59 Der er 33 kommentarer og
1 løsning

Indhold fra ekstern fil skal bruges flere steder

Hej

Jeg hare lavet en flashfilm hvor jeg henter noget tekst ind fra en ekstern fil, samt jeg bruger et eksternt stylesheet. Det gør jeg i den første frame...
Nu er min film bygget sådan op at jeg skal have hentet mere ind fra den samme fil senere i timelinen, men jeg vil gerne undgå at skulle hente den eksterne fil ind igen, så serven bliver belastet mindst muligt.

Hvordan gør jeg?

Min kode ser sådan ud lige nu:

// ------------ CSS ------------

var FlashCSS = new TextField.StyleSheet();
var StyleURL = "Style/FlashStyle.css";
FlashCSS.load(StyleURL);

FlashCSS.onLoad = function(success) {
    if (success) {
        _root.MainMov.cat1.styleSheet = FlashCSS;
        _root.MainMov.cat2.styleSheet = FlashCSS;
        _root.MainMov.cat3.styleSheet = FlashCSS;
        _root.MainMov.cat4.styleSheet = FlashCSS;
        _root.MainMov.cat5.styleSheet = FlashCSS;
        _root.MainMov.sub1.styleSheet = FlashCSS;
        _root.MainMov.sub2.styleSheet = FlashCSS;
        _root.MainMov.sub3.styleSheet = FlashCSS;
        _root.MainMov.sub4.styleSheet = FlashCSS;
        _root.MainMov.sub5.styleSheet = FlashCSS;
    }
};


// ------------ Data fra ASP ------------

System.useCodepage = true;

minLoadVars = new LoadVars();
minLoadVars.load("FlashContentScript.asp");
minLoadVars.onLoad = function()
    {
    _root.MainMov.cat1.htmlText = this.Cat1;
    _root.MainMov.cat2.htmlText = this.Cat2;
    _root.MainMov.cat3.htmlText = this.Cat3;
    _root.MainMov.cat4.htmlText = this.Cat4;
    _root.MainMov.cat5.htmlText = this.Cat5;
    _root.MainMov.sub1.htmlText = this.sub1;
    _root.MainMov.sub2.htmlText = this.Sub2;
    _root.MainMov.sub3.htmlText = this.Sub3;
    _root.MainMov.sub4.htmlText = this.Sub4;
    _root.MainMov.sub5.htmlText = this.Sub5;
    }
Avatar billede barklund Nybegynder
29. marts 2004 - 15:05 #1
Det er jo bare variabler, dem kan du flytte rundt som du har lyst til. Hvis et andet tekstfelt skal have samme stylesheet og tekst som fx. cat3:

my_textfield.htmlText = _root.MainMov.cat3.htmlText;
my_textfield.stylesheet = _root.MainMov.cat3.stylesheet;

Mere skal der ikke til ;)
Avatar billede m_187 Nybegynder
29. marts 2004 - 15:13 #2
Tak for svar...
Men der sgu et eller andet her...
Jeg kan godt få cat1-5 til at virke, men sub1-5 virker ikke...
cat1-5 er placeret i et moveclip på scenen, og står i første frame (i moveclippet). sub1-5 er i samme moveclip, men i frames: 5, 10, 15, 20 og 25.

Tåger jeg eller hvad?
Avatar billede m_187 Nybegynder
29. marts 2004 - 15:13 #3
et eller andet galt, mener jeg
Avatar billede barklund Nybegynder
29. marts 2004 - 22:07 #4
Hvis du sætter en variabel som:

_root.MainMov.sub1.htmlText = this.sub1;

Og sub1 ikke er på scenen på dette tidspunkt, så vil variabel tildelingen "fejle", da den ikke kan finde objektet. Men du har jo også alle dine variabler liggende inde i minLoadVars objektet, og kan hente dem herfra med:

_root.MainMov.sub1.htmlText = minLoadVars.sub1;

Og du kan ligeledes til hver en tid sætte stylesheet som:

_root.MainMov.sub1.stylesheet = FlashCSS;

// Morten Barklund
Avatar billede m_187 Nybegynder
30. marts 2004 - 08:53 #5
Okay, nu sker der noget... Jeg får "undefined" i tekstfeltet...
Men det undrer mig nu lidt nu når jeg kan hente de andre (cat1-5) ud - for så er stien jo rigtig...

Skal der ikke stå mere i ActionScriptet end _root.MainMov.sub1.htmlText = minLoadVars.sub1; for at hente skidtet ud?
Avatar billede barklund Nybegynder
30. marts 2004 - 10:21 #6
Det kommer an på, hvor minLoadVars ligger henne i forhold til dit andet script. Hvis det er på samme tidslinje, så er ovenstående nok. Hvis det er på forskellige tidslinjer skal det have en absolut eller relativ sti for minLoadVars.
Avatar billede m_187 Nybegynder
30. marts 2004 - 10:42 #7
Nej, de er på en anden tidslinie...
Men hvor siger du jeg skal sætte en sti på minLoadVars? Der hvor jeg loader den eksterne fil eller hvad?

Du skal nok lige få lidt flere point... hehe
Avatar billede barklund Nybegynder
30. marts 2004 - 10:52 #8
Du skal have en Flash-sti til dit objekt. Ligesom du har skrevet _root.MainMov som stien til dit tekstfelt, så skal du skrive _root.WhatEver (den rigtige sti) som stien til dit loadVars objekt.
Avatar billede m_187 Nybegynder
30. marts 2004 - 13:27 #9
LoadVars objektet ligger i root..

Altså noget i retningen af _root.MainMov.sub1.htmlText = _root.minLoadVars.sub1; ?

Men hvad skal sub1 efter minLoadVars til for?
Avatar billede barklund Nybegynder
30. marts 2004 - 14:08 #10
Ja, det er korrekt...

Du skriver jo selv:

_root.MainMov.sub1.htmlText = this.sub1;

Dette gør du inden fra loadvars objektet, og det gør du, da sub1 er en egenskab på dette objekt. Den kan man også hente udefra ved at tilgå objektet som minLoadVars.sub1
Avatar billede m_187 Nybegynder
30. marts 2004 - 14:47 #11
Okay... Jeg syntes jeg har prøvet alt muligt nu, men det er vist ikke lige min uge...

På scenen har jeg koden:

var FlashCSS = new TextField.StyleSheet();
var StyleURL = "Style/FlashStyle.css";
FlashCSS.load(StyleURL);

FlashCSS.onLoad = function(success) {
    if (success) {
        _root.MainMov.cat1.styleSheet = FlashCSS;
        _root.MainMov.cat2.styleSheet = FlashCSS;
        _root.MainMov.cat3.styleSheet = FlashCSS;
        _root.MainMov.cat4.styleSheet = FlashCSS;
        _root.MainMov.cat5.styleSheet = FlashCSS;

        _root.MainMov.sub1.styleSheet = FlashCSS;
        _root.MainMov.sub2.styleSheet = FlashCSS;
        _root.MainMov.sub3.styleSheet = FlashCSS;
        _root.MainMov.sub4.styleSheet = FlashCSS;
        _root.MainMov.sub5.styleSheet = FlashCSS;
    }
};

System.useCodepage = true;

minLoadVars = new LoadVars();
minLoadVars.load("FlashContentScript.asp");
minLoadVars.onLoad = function()
    {
      _root.MainMov.cat1.htmlText = this.Cat1;
    _root.MainMov.cat2.htmlText = this.Cat2;
    _root.MainMov.cat3.htmlText = this.Cat3;
    _root.MainMov.cat4.htmlText = this.Cat4;
    _root.MainMov.cat5.htmlText = this.Cat5;

    _root.MainMov.sub1.htmlText = this.sub1;
    _root.MainMov.sub2.htmlText = this.Sub2;
    _root.MainMov.sub3.htmlText = this.Sub3;
    _root.MainMov.sub4.htmlText = this.Sub4;
    _root.MainMov.sub5.htmlText = this.Sub5;
    }
____________________________________________________________

På scenen ligger der et movieclip (MainMov) som har cat1-5 i frame 1 - Det virker.
I frame 5, 10 15 osv har jeg en sub1-5 - så har jeg følgende kode i frame 5:

_root.MainMov.sub1.stylesheet = FlashCSS;
_root.MainMov.sub1.htmlText = _root.minLoadVars.cat1;

____________________________________________________________

Hvad skal jeg ændre for at få det til at virke?
Avatar billede m_187 Nybegynder
30. marts 2004 - 14:48 #12
Der skal selvfølgelig stå _root.minLoadVars.sub1; tilsidst... Prøvede bare lige noget...
Avatar billede barklund Nybegynder
30. marts 2004 - 15:25 #13
Prøv lige i din frame 5 at skrive:

trace(sub1);
trace(_root.minLoadVars);

Og fortæl mig hvad der kommer i outputvindue - eller tester du kun i browseren?
Avatar billede m_187 Nybegynder
30. marts 2004 - 15:34 #14
Output:

Target not found: Target="undefined" Base="_level0"
Error opening URL "file:///X|/Projects/Tele%2DPunkt/Web/TPNetworks/TPWeb/Flash/Style/FlashStyle.css"
Error opening URL "file:///X|/Projects/Tele%2DPunkt/Web/TPNetworks/TPWeb/Flash/FlashContentScript.asp"

De 2 filer den siger den ikke kan finde passer ikke. Jeg ved ikke lige hvorfor den gør det, men det er nok noget med at min swf-fil bliver eksported til en anden mappe end den hvor .fla-filen ligger i.
Avatar billede barklund Nybegynder
30. marts 2004 - 15:40 #15
Så åbn din swf fil i den rigtige mappe ind i flash via File->Open og prøv igen.
Avatar billede m_187 Nybegynder
30. marts 2004 - 15:44 #16
Target not found: Target="undefined" Base="_level0"
Avatar billede barklund Nybegynder
30. marts 2004 - 15:47 #17
Hva fatan betyder den fejl? Jeg tror det er en with eller en tellTarget, der fejler - har du nogle af dem i din kode?
Avatar billede m_187 Nybegynder
30. marts 2004 - 15:51 #18
Arh ja... en vammel preloader... Men har det indflydelse på det andet?
Avatar billede barklund Nybegynder
30. marts 2004 - 15:54 #19
Nø, men prøvede du at hoppe til frame 5 og se, om der kom noget i outputvinduet? Det er jo det, der er det interessante :)

Og din preloader havde altså en fejl, derfor kommer dette i vinduet...
Avatar billede m_187 Nybegynder
30. marts 2004 - 15:57 #20
NÅr jeg kommer til frame 5 står der:

_level0.MainMov.sub1
%22%0D%0A=&%22%0D%0A%09Response%2EWrite%20%22Sub12=Dette%20er%20Sub12&%22%0D%0A%09Response%2EWrite%20%22Sub11=Dette%20er%20Sub11&%22%0D%0A%09Response%2EWrite%20%22Sub10=Dette%20er%20Sub10&%22%0D%0A%09Response%2EWrite%20%22Sub9=Dette%20er%20Sub9&%22%0D%0A%09Response%2EWrite%20%22Sub8=Dett..................... osv osv osv osv...
Avatar billede m_187 Nybegynder
31. marts 2004 - 12:04 #21
Men jeg gætter på at den siger det fordi den ikke kan læse asp-filen, da koden jo ikke bliver "oversat" af IIS, når man bare publisher inde i Flash.....
Avatar billede barklund Nybegynder
31. marts 2004 - 12:14 #22
Tja, så skriv i frame 5 (kun dette):

sub1.text = (typeof _root.minLoadVars)+"\n"+_root.minLoadVars.sub1+" ("+(typeof _root.minLoadVars.sub1)+")";

Og fortæl mig hvad der kommer til at stå i tekstfeltet, når du tester i browser
Avatar billede m_187 Nybegynder
31. marts 2004 - 12:23 #23
object
undefined (undefined)
Avatar billede barklund Nybegynder
31. marts 2004 - 12:57 #24
Er du sikker på, at din asp side rent faktisk outputter en sub1? For det tror jeg faktisk ikke, at den gør :)

Hvad er det helt præcis output af din asp, hvis du kører den direkte i browser og vælger "vis kilde"
Avatar billede m_187 Nybegynder
31. marts 2004 - 13:06 #25
Hmm... Det ser rigtigt nok ud. Selv når jeg skriver sådan her:

<% Response.Write "Sub1=Dette er Sub1&" %>

Det giver: Sub1=Dette er Sub1&

Det er vel som det skal være?
Avatar billede m_187 Nybegynder
31. marts 2004 - 13:11 #26
Jeg kan oploade .fla og .asp filerne til en side, eller sende dem til en email, hvis du gider tage et kig?
Der er selvfølgelig point at hente.
Avatar billede barklund Nybegynder
31. marts 2004 - 13:19 #27
Hvis du har skrevet Sub1, så er det absolut ikke det samme som sub1 - flash 7 er case sensitive, altså har forskel på store og små bogstaver...
Avatar billede m_187 Nybegynder
31. marts 2004 - 13:33 #28
Det var da utroligt! Så virker pisset :)

Lige en sidste ting...
Stylesheet'et træder ikke i kraft på tekstfeltet...
Jeg gætter på det det er sti'en der er galt med, men nu har jeg gjort det samme som med asp'en...

I frame 5:

_root.MainMov.sub1.stylesheet = _root.FlashCSS.Sub1;
_root.MainMov.sub1.htmlText = _root.minLoadVars.Sub1;

Skal det angives på en aden måde når det er en stylesheet eller huh?
Avatar billede barklund Nybegynder
31. marts 2004 - 13:52 #29
_root.MainMov.sub1.stylesheet = _root.FlashCSS;
_root.MainMov.sub1.htmlText = _root.minLoadVars.Sub1;
Avatar billede barklund Nybegynder
31. marts 2004 - 13:52 #30
Du har jo kun et stylesheet og ikke et specifikt for hvert tekstfelt :)

Og tark for points forresten.
Avatar billede m_187 Nybegynder
31. marts 2004 - 14:06 #31
Det er skam mig der takker.

Men jeg jublede vist for tidligt... Det CSS virker ikke på sub1 :(
Avatar billede barklund Nybegynder
31. marts 2004 - 14:10 #32
Det kommer jo helt an på, hvordan din HTML og CSS ser ud.
Avatar billede m_187 Nybegynder
31. marts 2004 - 14:13 #33
Det var sgu et stort "S" i styleSheet der manglede.
NU kører det! :)

Mange tak for hjælpen - du har været meget hjælpsom og tålmodig!
Avatar billede barklund Nybegynder
31. marts 2004 - 17:08 #34
S'lidt :)
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