Avatar billede hojou Nybegynder
30. januar 2001 - 17:09 Der er 13 kommentarer og
2 løsninger

Sende besked fra HTML(javascript) til Flash

Jeg har en HTML side med et flash objekt på og jeg vil kunne sende data mellem javascripts på HTML siden og selve flash applikationen.

Det er relativt nemt at sende data mellem flash og en server (f.eks. en ASP side) med XML objektet (XML.sendAndLoad) og ligeledes med loadVariables. Problemet med disse to metoder er, at der sendes data mellem clienten (HTML+Flash) siden og Serveren(i dette tilfælde en ASP side). Jeg kan ikke bruge disse to løsninger da der skal sendes en request over nettet og det er for langsomt til min løsning.

Mere spændende bliver det når man ser på fscommand(command,args) - den sender data til HTML siden (til et javascript/vbscript) og det er lige det jeg skal bruge, bortset fra at det kun sender fra flash til html. Mit 100 point spørgsmål går på hvordan sender jeg data tilbage fra HTML til min flash tingest?

Hvordan får jeg data fra min HTML side til min flash movie? Der skal sendes client->client, ikke gennem en server. F.eks. vil jeg kunne ændre en variabel i min flash movie via et javascript.

Løsningen skal kunne virke i IE og hvis der ikke er andre løsninger end at lave sin flash til en ActiveX koponent så kan jeg også bruge den løsning. Det skal lige siges at jeg har læst \"Flash 5 Integration with Internet Explorer 5.5\" på Macromedias site uden at blive meget klogere - jeg kunne ikke gennemskue om/hvordan man kan bruge behaivours til opgaven.

Hojou
Avatar billede nikolajdu Nybegynder
30. januar 2001 - 19:04 #1
Jeg finder noget til dig, når jeg kommer hjem. Anyway, skal du være opmærksom på at FScommands ikke virker i Netscape 6.0, kun kun til 4.7 (var det ikke den sidste??)

Smid lige din mail adresse så jeg kan sende dig en fil....

/Nikolaj
Avatar billede hojou Nybegynder
31. januar 2001 - 00:50 #2
Det skal bare virke til IE og jeg har fået fscommand til at virke, nu er det bare den anden vej jeg mangler :)

min email er hojou@hotmail.com
Avatar billede nikolajdu Nybegynder
31. januar 2001 - 02:05 #3
Kunne ikke finde den fil jeg havde lavet, men den var anyway en videreudvikling af det her script...

<HTML>
<HEAD>
<TITLE>FS Commands Template</TITLE>
</HEAD>
<SCRIPT LANGUAGE=JavaScript>
<!--
//
// Function to get the correct object reference based on browser type.
//
function whichObj(objName) {
    if(navigator.appName==\"Netscape\") {
        return document[objName]
    } else {
        return window[objName]
    }
}
//
//Show properties:  Call this to show all the properties of an object
//
function ShowProp() {
    var str;
    str = \"<h3>Property list</h3>\";
    for (qq in document.YOURMOVIE) {
        str += qq + \" = \" + document.YOURMOVIE[qq] + \"<br>\";
    }
    document.write(str);
}
//
// Handle all the the FSCommand messages in a FutureSplash movie
//
function YOURMOVIE_DoFSCommand(command, args) {
    //
    // Place your code here...
    //
    if(command == \"BUTTONCOMMAND\") {
        alert(\"Found BUTTONCOMMAND with argument \"+args);
    }
    // Example of a Zoom
    if(command == \"ZOOM\") {
        // Zoom arguments are in percent i.e.
        // 50 = 50% or 2X
        // This will be set by your Flash movie
        whichObj(\'YOURMOVIE\').Zoom(args);
    }
}
//
// Hook for Internet Explorer
//
    line  = \'<SCRIPT LANGUAGE=VBScript\\> \\n\';
    line += \'on error resume next \\n\';
    line += \'Sub YOURMOVIE_FSCommand(ByVal command, ByVal args)\\n\';
    line += \'  call YOURMOVIE_DoFSCommand(command, args)\\n\';
    line += \'end sub\\n\';
    line += \'</SCRIPT\\> \\n\';
    document.write(line);
//-->
</SCRIPT>

<BODY bgcolor=\"#FFFFFF\">

<OBJECT
    classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
    codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0\"
    ID=YOURMOVIE
    WIDTH=200
    HEIGHT=200>
    <PARAM NAME=movie VALUE=\"YOURMOVIE.swf\">
      <PARAM NAME=quality VALUE=high>
      <PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED
    SRC=\"YOURMOVIE.swf\"
    NAME=YOURMOVIE
    swLiveConnect=TRUE
    WIDTH=200
    HEIGHT=200
    QUALITY=high
    BGCOLOR=#FFFFFF
    TYPE=\"application/x-shockwave-flash\"
    PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\">
</EMBED>
</OBJECT>
<h3>Example of Document Based FS Commands</h3>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Zoom(50);\">2x</a>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Zoom(0);\">1x</a>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Pan(20,0,1);\">Pan Left</a>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Pan(0,20,1);\">Pan Up</a>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Pan(-20,0,1);\">Pan Right</a>
<a  href=# onClick=\"whichObj(\'YOURMOVIE\').Pan(0,-20,1);\">Pan Down</a>

</BODY>
</HTML>


Nu kender du metoden. Nu skal du så bare bytte \"YOURMOVIE\" Med swf-navnet på den fil du vil kalde...

/Nikolaj
Avatar billede hojou Nybegynder
31. januar 2001 - 10:40 #4
Hrm. Så langt kom jeg også. Der kan kaldes et script i HTML med fscommand i flash. Der kan også ændres på simple properties som Zoom og Pan.

ShowProp viser alle synlige properties på movien, som iøvrigt er ens for alle flash-movies (jeg havde også lavet en tilsvarende for at undersøge om der mine variable var deri, men forgæves).

Jeg står stadig og mangler en måde at tilgå mine egne variable i min flash-movie fra HTML-siden gennem javascript. Hvis jeg har et dynamic textfield der hedder funtxt i min flash-movie så kan jeg ikke tilgå den med whichObj(\'YOURMOVIE\').funtxt - den ses jo heller ikke i ShowProp()... ShowProp viser dog ikke alle metoder da Både Zoom og Pan virker uden at de kan ses i ShowProp.

Jeg prøver lige igen :) Hvordan ændrer jeg en variabel eller kalder en metode jeg har lavet i min flash-movie gennem et javascript i HTML?

Iøvrigt tak for svaret Nikolaj selvom det ikke løste mit problem. Jeg ved ikke om jeg var for uklar i det første spørgsmål, men det er vigtigt at jeg kan ændre en variabel eller kalde en metode i flash som jeg selv har lavet - ikke bare tilgå de åbne variable der er knyttet alle flash-movies. (ved mindre man kan udnytte dem til at løse opgaven)

Per
Avatar billede hojou Nybegynder
31. januar 2001 - 10:41 #5
Hehe der roede jeg rundt i det igen. Jeg skal kunne tilgå mine egne variable/metoder - men hvis man kan gøre det dennem de åbne metoder/variable så er det jo også en løsning, jeg har bare ikke kunne finde ud af det.
Avatar billede nikolajdu Nybegynder
31. januar 2001 - 16:21 #6
Jeg VED man kan. Prøver lige at finde ud af det...
Avatar billede nikolajdu Nybegynder
31. januar 2001 - 16:25 #7
Der findes altså andre muligheder end at sætte Zoom, rotate og Pan....
Avatar billede hojou Nybegynder
06. februar 2001 - 10:13 #8
Jeg mangler stadig en løsning *snøft* har sat prisen 100 point op.
Avatar billede diktator Nybegynder
08. februar 2001 - 09:59 #9
hojou  :: Prøv at se her:
http://diktator.dk/diktator/zamples/fscommand

Der er brugt JavaScript og VBScript. Læg mærke til hvordan jeg kalder en frame i min Flash, ved Onclick i HTML’en.

Det virker desværre ikke i Netscape, og ej heller på min Mac :(

Men hvis du kan bruge kan jeg zippe det hele til dig.

/D!ktator.dk
Avatar billede hojou Nybegynder
08. februar 2001 - 10:41 #10
Hej Diktator

Mange tak for eksemplet. Jeg kan se at du kan ændre frame i din flash applikation ved et meget nemt kald :) Da jeg så det, slog jeg migselv hårdt i panden (doh!) for jeg troede jeg havde prøvet det.

Det viser sig at jeg også har prøvet det, men har bare ikke kunne få det til at virke - nu er dette jo et eksempel på at sende sin flash applikation til en anden frame, og det jeg skal bruge er, at ændre indholdet af en egen variabel i min flash applikation.

Hvordan gør jeg det? Jeg har prøvet lidt forskelligt. (min flash-applikation hedder thepanel og et dynamic text field hedder funtxt)

document.thepanel.funtxt = \"woop\";
Dette giver ingen fejl, men jeg kan ikke se teksten i min flash ting ændre sig.

jeg har så oprettet en funtion som tager en streng parameter og derefter sætter mit text field. (kaldte den SendTxt).
document.thepanel.SendTxt(\"woop\");
Dette giver en fejl (Objektet understøtter ikke denne funktion eller metode).

Er det kun muligt at tilgå enkelte metoder som Zoom, Rotate, Pan, GotoFrame, eller kan jeg tilgå en af mig defineret variabel eller metode?

Please! Hvis jeg ikke gør mig forståelig så sender jeg gerne en flash fla fil med HTML kode så i kan se. Jeg er meget ny i Flash så jeg har ikke helt styr på hvilke scope de forskellige funktioner og variable har, men ud over det synes actionscript meget nemt og ret lig javascript som jeg er fortrolig med.
Avatar billede diktator Nybegynder
08. februar 2001 - 10:59 #11
Jeg tror helt bestemt at du skal bruge:
document.thepanel.funtxt = \"woop\";
Men jeg tror, at den loades i roden, så du skal nok samle den op i din mainTimeline, og eklære den som en ny variable, f.eks:

LoadFuntxt = funtxt

Hvis det ikke virker skal du måske lave et loop, der hele tiden søger efter variablen. Feks.

2) frame:
if (funtxt eq \"\") {
    gotoAndPlay (1);
}


En anden løsning kunne være:
document.thepanel.loadVariablesNum (\"?funtxt=Woop\", 1);

Jeg har ikke prøvet noget af det endnu, men det er da et forsøg værd :-)

Avatar billede hojou Nybegynder
08. februar 2001 - 11:03 #12
Ok tak - jeg forsøger lige. Er det ikke muligt at kalde en metode istedet, jeg kom netop til at tænke på at det var jo rart at flash-tingen var klar over at der var sendt data fra HTML siden - som du selv skriver kan man jo lave en loop som så checker - det er en ok løsning - ville bare lige høre om det ikke kunne lade sig gøre at kalde en funktion/metode istedet?

Vender lige tilbage om lidt :)
Avatar billede nikolajdu Nybegynder
08. februar 2001 - 12:09 #13
Hvad mener du når du skriver \"kalde en funktion/metode\"? Kan du ikke præcisere præcis, hvad det er du vil have kaldet til.

gotoFrame er trods alt fin - Du kan jo så indsætte din funktion i 2. frame og så kalde den med gotoFrame.
Avatar billede hojou Nybegynder
08. februar 2001 - 12:29 #14
Jeg vil have en parameter med over til min flash applikation. HTML siden skal fortælle flash nogle informationer den har modtaget.

Jeg har fundet en løsning nu, takket være dig (også nikolajdu :) da jeg søgte på de metoder i har foreslået. Zoom, Pan osv. samt ikke mindst GotoFrame som var i diktators eksempel.

http://www.macromedia.com/support/flash/ søgte jeg på \"Flash Methods\" og der fandt jeg SetVariable(variableName, value). Den kan sætte værdier på mine flash variable. Med et par kald til denne efterfulgt af din GotoFrame kan jeg simulere et metode kald med parametre :)

Mange tak for hjælpen, uden havde jeg stadig siddet fast (diktators loadVariablesNum virkede ikke til dette, men ideen er den samme som SetVariable). Jeg havde opgivet at bruge document.thepanel..... idet jeg troede det var mere vankeligt :)

Anyways nu er jeg ikke så kendt her, men er det fair hvis i får halvdelen af point\'ne hver, i så fald så bliver du nødt til lige at lave et svar nikolaidu da jeg afviste dine svar tidligere :)

Hojou
Avatar billede nikolajdu Nybegynder
08. februar 2001 - 12:36 #15
oki - Til lykke anyway..
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