14. maj 2004 - 13:38Der er
56 kommentarer og 1 løsning
klik på en knap og vis en swf.fil i en anden celle
Hold da op hvor er det godt at eksperten kører igen -py ha. Jeg skal nemlig lave en hjemmeside hvor menuerne består af to .swf-filer. de skal sættes ind på en html side. Jeg kan (på grund af layoutet) ikke lave det som en enkelt flashfil (da de to menuer ikke skal sidde ved siden af hinanden) så jeg skal lave det som to filer der kan loade hinanden. Hvordan gør man det? Altså på "menu1.swf" skal der være en mouse over (eller klik) der gør at menu2.swf bliver vist og loaded. i en anden celle. ?? jeg skal være færdig med det så hvis der er en sød sjæl der har tid til at hjælpe mig...?
fordi jeg ikke ved om det er flash eller javascript. Jeg lukker det andet nu. Jeg har læst dit link. Jeg forstår det ikke helt. Er det ikke hvis det foregår internt i flash? og ikke så meget hvis det er to swf filer i et html dokument?
Hvis du har to swf'er i en html kan du kommunikere mellem de to med localConnection - som du ser i linket, så kan du fx skrive en besked i en flash-fil, og en anden skriver den så ud. På samme måde kan du klikke på noget i én flash fil, hvorved der sker noget i en anden...
jamen det skal jo ikke være i den eksisterende swf... men i en anden celle (den eksisterende skal stadig være der) det er et menupunkt "menu" når man holder musen over den skal der komme en undermenu - der er en anden swf fil. -der ligger i en anden celle. gir det mening. Hvis layouted var anderledes kunne det jo løses i en enkelt flash fil - men det er ikke rigtig til. (med mindre man kan gøre en swf transparant...
jeg kan godt få den skjult, men jeg kan ikke få den til at komme frem igen. Jeg har prøvet at sætte javascriptet ind i en div omkring flash-objectet. Jeg har desuden prøvet at lægge det ind i flash som "getURL" - jeg kan ikke få den til det. Hvad kan være problemet?
function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"'"); }
var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"'"); }
Hvad betyder void(0) ? Jeg har lige sat det ind - det virker heller ikke.
Kan du se på koden om jeg har lavet L... i det? Hvorfor skrev den "block" da jeg satte getURL("java script:document.getElementById('menu').style.display='"+show+"'"); ind i flash-filen? jeg er virkelig glad hvis det kommer til at virker - og glad for at du "igen" sætter din tålmodighed på spil for at hjælpe mig. ;o)
var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"';void(0)"); }
Og på knappen :
on(release){ showHide(); }
void(0) eller return false indsættes for at blive på siden.
kan man gøre sådan, at når man klikker på hovedmenuen igen så forsvinder den flashfil der kom frem da man klikkede før? klik - kommer frem klik - forsvinder igen
kan man ikke skrive at hvis "menu" er synlig, skal den skjules ved onClick - og hvis den er skjult skal den vises ved onClick (ja - jeg gætter bare...) ;o)
var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"'"); }
som javascript - Det skal være en action i flash.
Altså :
indsæt følgende som action i den frame hvor du har dine knapper :
var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"';void(0);"); }
Hvis du bruger denne funktion i javascript i din html og kalder den fra flash, burde det virke - den skjuler menuen hvis den er synlig - og viser den hvis den er skjult...
<script language="JavaScript" type="text/javascript"> function showHide(){ var element = document.getElementById("menu"); element.style.display = (element.style.display == "none") ? "block" : "none"; } </script>
hm.. nu virker det slet ikke. Heller ikke at "menu" skal komme frem når jeg klikker. Jeg har ellers sat javascriptet ind i html og getURL("java script:showHide();void(0)"); ind på den knap der skal udløse det.
nicolajdu---> jeg ville nok helst have det som actions i flash, for det skal lægges ind i typo3(cms) og det er lettere hvis javascriptet er actions i flash. Men lige nu er der ikke noget af det der virker..
Hvor i scriptet kan man se at den både skjuler og viser "menu" ? element.style.display = (element.style.display == "none") ? "block" : "none"; (det betyder den skal vise den ik?)
Mener du at én knap viser og en anden knap skjuler? Jeg ville gerne have at en knap både viste og skjulte...
Kommentar: nikolajdu 17/05-2004 13:06:36 Jeg ser lige at du har indsat var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"'"); } som javascript - Det skal være en action i flash. Altså : indsæt følgende som action i den frame hvor du har dine knapper : var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"';void(0);"); } og så på knapperne : on(release){ showHide(); }
ja---- jeg havde vist lavet noget rod selv.. for nu virker det præcis som du sagde... skjul, vis... perfekt. Nicolajdu - læg et svar inden jeg finder på flere spørgsmål... ;o)
og 1000 tak for hjælpen (at du ikke droppede at hjælpe mig halvvejs er en gåde...men tak!)
øhhh.... nicolajdu... jeg har et spørgsmål til........ hvis jeg godt kunne tænke mig at den skjulte fil bliver loaded (eller går tilbage og starter ved frame 1) hver gang den bliver vist... altså hver eneste gang man klikker på hovedmenuen ville jeg gerne have at "menu" toner frem i stedet for at bare blive vist med det samme. Jeg troede jeg liiiiige kunne lave det selv ;o) og skrev det i funktionen: var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"';void(0);"); gotoAndPlay(1);
} men det virkede ikke... Flash filen kører vel så snart html siden den er placeret på bliver vist (loaded)? og så kan man måske ikke få den til at starte forfra igen? Jeg ved godt jeg strammer den da du har svaret - men mens vi venter på pyromanen... :o)
jeg har lavet effekten som et movieclip, der ligger i det øverste lag. Skal jeg skrive sætte clip.gotoAndPlay(1); ind der hvor jeg har skrevet gotoAndPlay(1); ? Alså til sidst i fuktionen showHide der ligger i framen? eller eller ... ?
Nu har jeg lavet en swf fil og importeret den til library - med navnet clip jeg har lagt den i sit eget lag i den første frame (og sat en stop action) Så har jeg skrevet clip.gotoAndPlay(1);
var s = "block"; function showHide(){ show = (s == "block")? s = "none" : s = "block"; getURL("java script:document.getElementById('menu').style.display='"+show+"';void(0);"); --->>>> clip.gotoAndPlay(1); }
Jeg skal måske slet ikke lægge "clip" i et lag? det virker ikke... nu står det bare og fader ind og ud hele tiden - ret forvirrende! ;o)
Jeg har af mystiske årsager ikke fået mails fra exp's mailrobot, så har ikke kunnet følge med i alle spørgsmål. Det er helt fint at nikolaj får pointene... :)
Hey - det har jeg også oplevet for nylig. ;o( mærkeligt.
nå men LUK.
Synes godt om
Ny brugerNybegynder
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.