Avatar billede Kim Neesgaard Seniormester
12. april 2005 - 10:05 Der er 16 kommentarer og
1 løsning

Visning af en .swf-fil i en placeholder

Man kan få vist en brugerkontrol (.ascx) i en placeholder med fx denne kode:

rightSide.controls.add(LoadControl("Start.ascx"))

Hvis man gerne vil vise en .swf-fil i 'rightSide', hvad skriver man så?
Avatar billede burningice Nybegynder
12. april 2005 - 17:16 #1
du skriver

                <object style="float:right;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="200" height="340" id="Kalenderlys" align="middle">
                    <param name="allowScriptAccess" value="sameDomain" />

                    <param name="movie" value="calendarlight.aspx" />
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <embed src="calendarlight.aspx?date=05-12-04" quality="high" bgcolor="#ffffff" width="200" height="340" name="Kalenderlys" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
                </object>
Avatar billede burningice Nybegynder
12. april 2005 - 17:19 #2
evt. kan du være lidt smart og kapsle det ind i en classe, kommer lige med et eksempel
Avatar billede Kim Neesgaard Seniormester
12. april 2005 - 17:52 #3
Skal den ikke referere til navnet på placeholderen?
Avatar billede burningice Nybegynder
12. april 2005 - 17:56 #4
using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MPAConsult.ToolBox.Web.UI.WebControls
{
    /// <summary>
    /// Summary description for FlashObject.
    /// </summary>
    public class FlashObject : System.Web.UI.WebControls.WebControl
    {
        private string name;
        public string Name
        {
            set { this.name = value; }
        }

        private string scriptAccess = "sameDomain";
        public string ScriptAccess
        {
            set { this.scriptAccess = value; }
        }

        private string quality = "high";
        public string Quality
        {
            set { this.quality = value; }
        }

        private string movie;
        public string Movie
        {
            set { this.movie = value; }
        }
       
        public FlashObject()
        {           
        }

        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            writer.WriteFullBeginTag("object");
           
            foreach (string v in Style.Keys)
                writer.WriteStyleAttribute(v, Style[v]);
           
            writer.WriteAttribute("classid", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000");
            writer.WriteAttribute("codebase", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0");
            writer.WriteAttribute("id", this.ClientID);

            writer.WriteBeginTag("param");
            writer.WriteAttribute("allowScriptAccess", this.scriptAccess);
            writer.WriteEndTag("param");

            writer.WriteBeginTag("param");
            writer.WriteAttribute("movie", this.movie);
            writer.WriteEndTag("param");

            writer.WriteBeginTag("param");
            writer.WriteAttribute("quality", this.quality);
            writer.WriteEndTag("param");

            writer.WriteBeginTag("param");
            writer.WriteAttribute("bgcolor", this.BackColor.ToString());
            writer.WriteEndTag("param");

            writer.WriteBeginTag("embed");
            writer.WriteAttribute("src", this.movie);
            writer.WriteAttribute("quality", this.quality);
            writer.WriteAttribute("bgcolor", this.BackColor.ToString());
            writer.WriteAttribute("width", this.Width.Value.ToString());
            writer.WriteAttribute("height", this.Height.Value.ToString());
            writer.WriteAttribute("name", this.name);
            writer.WriteAttribute("allowScriptAccess", this.scriptAccess);
            writer.WriteAttribute("type", "application/x-shockwave-flash");
            writer.WriteAttribute("pluginspace", "http://www.macromedia.com/go/getflashplayer");
            writer.WriteEndTag("embed");

            writer.WriteEndTag("object");
        }
    }
}


MPAConsult.ToolBox.Web.UI.WebControls.FlashObject f = new MPAConsult.ToolBox.Web.UI.WebControls.FlashObject();

            f.Name = "Hej hej";
            f.Movie = "whe.swf";
            f.Quality = "low";
            f.BackColor = System.Drawing.Color.Red;

            this.Controls.Add(f);
Avatar billede Kim Neesgaard Seniormester
21. april 2005 - 19:24 #5
Undskyld den lange tid før afprøvning!!

Jeg har forsøgt at konvertere koden til vb, men jeg får meldingen:

An error occured while processing your code: -- line 2 col 7: "(" expected

Jeg kan slet ikke C#, så kan du se, hvad der er galt?
Avatar billede burningice Nybegynder
21. april 2005 - 20:55 #6
det er lidt svært når jeg ikke kan se din kode, men har du prøvet en c# -> vb.net coonverter?

http://authors.aspalliance.com/aldotnet/examples/translate.aspx
Avatar billede Kim Neesgaard Seniormester
21. april 2005 - 23:11 #7
Jeg brugte http://www.developerfusion.com/utilities/convertcsharptovb.aspx, men din henvisning oversætter uden fejlmelding, så jeg går videre med det!
Avatar billede Kim Neesgaard Seniormester
02. maj 2005 - 22:08 #8
Nu har jeg lagt den øverste del af koden i en fil (VisFlash.vb i App_Code) og den nederste i en .apsx.vb og den ser sådan ud:

Imports MPAConsult.ToolBox.Web.UI.WebControls.FlashObject
Partial Class _Default

    Inherits System.Web.UI.Page

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim f As New MPAConsult.ToolBox.Web.UI.WebControls.FlashObject()
        f.Name = "Hej hej"
        f.Movie = "my_intro.swf"
        f.Quality = "low"
        f.BackColor = System.Drawing.Color.Red
        PlaceHolder1.Controls.Add(f)
    End Sub
End Class

Placeholder1 er sat på .aspx formularen.

Når jeg kører den, så får jeg fejlen:

BC30260: 'Name' is already declared as 'Private Dim name As String' in this class.
for linien
Line 14:        Public WriteOnly Property Name() As String

Kan du se, hved der er galt?
Avatar billede burningice Nybegynder
02. maj 2005 - 23:43 #9
:) det er fordi at den kode jeg har skrevet er i c# som er casesensetive, det er vb.net ikke.

Så du bør omdøbe alle private fields til _<navnet>. F.eks:

Dim _name As String
Dim _scriptAccess As String = "sameDomain"

osv.
Avatar billede Kim Neesgaard Seniormester
03. maj 2005 - 21:57 #10
Ok - det har jeg rettet. Nu spiller den lyden til flashfilen, men hvor filmen skulle være, skriver den:

classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="ctl02"

?
Avatar billede burningice Nybegynder
03. maj 2005 - 22:41 #11
tja... så må du rette det lidt til. Koden jeg kom med var mere et proof of concept, da det ikke er noget jeg selv har benyttet mig af. Men hvis du ved hvordan det første resultat skal se ud, er det forholdsvis nemt at rette Render-metoden til så den renderer det rigtige html.
Avatar billede Kim Neesgaard Seniormester
08. maj 2005 - 10:40 #12
Jeg har efter bedste evne forsøgt at rette til og hvis jeg ser på koden til afvikling af en flashfil i almindeligt ASP (har fået kodestumpen af en anden), så virker det som om denne indeholder en 'play' kommando:

<object classid="clsid:D27CDBE-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" height="625" width="1000">
        <param name="movie" value="<% = ValgAfFlash() %>.swf">
        <param name="quality" value="best">
        <param name="play" value="true">
        <embed height="625" pluginspage="http://www.macromedia.com/go/getflashplayer" src="<% = ValgAfFlash() %>.swf" type="application/x-shockwave-flash" width="1000" quality="best" play="true">
    </object>

Kan det være det, der mangler i din kode?
Avatar billede burningice Nybegynder
08. maj 2005 - 17:50 #13
det kan det sagtens være... i så fald skal du bare tilføje dette

            writer.WriteBeginTag("param");
            writer.WriteAttribute("play", "true");
            writer.WriteEndTag("param");
Avatar billede Kim Neesgaard Seniormester
08. maj 2005 - 19:15 #14
Desværre var det ikke det!
Avatar billede burningice Nybegynder
08. maj 2005 - 19:43 #15
men hvordan ser hele det renderede kode ud fra asp.net. Du kan prøve at sammenligne linje for linje med det du skrev i 08/05-2005 10:40:23, og se om der er nogen fejl
Avatar billede Kim Neesgaard Seniormester
12. oktober 2005 - 13:37 #16
Jeg fik aldrig rigtig det her til at virke, men en farbar vej er at bruge de 'gamle' ASP linier:

<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" height="635" width="1000" classid="clsid:D27CDBE-AE6D-11cf-96B8-444553540000">
        <param name="movie" value="<% = ValgAfFlash() %>.swf" />
        <param name="quality" value="best" />
        <param name="play" value="true" />
        <embed height="635" pluginspage="http://www.macromedia.com/go/getflashplayer" src="<% =
        ValgAfFlash() %>.swf" type="application/x-shockwave-flash" width="1000" quality="best" play="true"> </embed>
        </object>

og så oprette ValgAfFlash() som en funktion i kodedelen, hvor navnet på flashfilen angives/findes. Det er nok ikke god ASP.NET stil, men det virker.
Avatar billede Kim Neesgaard Seniormester
19. december 2010 - 16:56 #17
Jeg lukker grundet alder.
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