Start en Flash fil på et bestemt Frame count

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

Hej!

Hvis man eksempelvis har en Flash fil ( a la et topbanner) med 12 billeder som vises en efter en og derefter looper og starter forfra, kan man så på en eller anden måde bestemme, at Flash´en skal starte ved billed 1 på side 1, billed 5 på side 2 og billed 9 på side 3?

Jeg gætter på noget med frame count, men er lidt lost. Jeg vil nødig skulle lave 3 Flash filer med samme indhold, men bare forskudt en 1/3 af billed forløbet for hver side.

Preisler

Kommentarer

Se mrstrande's brugerprofil
Indmeldt: 04-02-2010
Indlæg: 14
Er offline

Hej.

Nu er jeg ikke helt med på hvordan dit top-banner fungerer. Det lader til at du kan nøjes med at justerer hvor du befinder dig på tidslinjen. Hvis du gerne vil vide hvor på tidslinjen du er så kan du benytte:

currentFrame

Prøv at giv en lidt mere detaljeret beskrivelse evt.

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

Hej!

Burde have nævnt, at det er en swf fil som køres fra html.

Preisler

Se mrstrande's brugerprofil
Indmeldt: 04-02-2010
Indlæg: 14
Er offline

Hvis ikke swf'en er lavet til input, så kan du ikke uden videre kommunikerer til swf'en og slet ikke gennem html.

Ellers skal hele dynamikken laves i fla. filen.

Hvis du har brug for hjælp med "jobbet" kan du skrive til mig personligt.

Se PeterF's brugerprofil
Indmeldt: 10-08-2007
Indlæg: 78
Er offline

Fra din html side kan du sende parametre til flash filen, når du embedder swf filen i html.

Søg på Google efter FlashVars!

Hvis du bruger AS3 kan du læse dine flashVars sådan:

var mineFlashVars:Object = this.root.loaderInfo.parameters;

Objectet "parameters" indeholder alle flashvars fra html siden.

Hvis du bruger AC_FL_RunContent til at embedde din swf kunne det sådan ud, hvis du fx ville have, at swf filen skal starte på frame 3:

AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
'width', '550',
'height', '400',
'src', 'flashVarsTest',
'quality', 'high',
'pluginspage', 'http://www.adobe.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'flashVarsTest',
'bgcolor', '#ffffff',
'name', 'flashVarsTest',
'menu', 'true',
'allowFullScreen', 'false',
'allowScriptAccess','sameDomain',
'movie', 'flashVarsTest',
'salign', '',
'flashVars','startFrame=3'
); //end AC code

Se mrstrande's brugerprofil
Indmeldt: 04-02-2010
Indlæg: 14
Er offline

Det har du selvfølgelig ret i PeterF. Jeg tænkte det som at koden skulle være html, for så når du ikke langt. Smile

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

@PeterF

Super - det vil jeg prøve.

Preisler

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

Hej

Nu har jeg siddet og "bøvlet" med FlasVars, men kan ikke få det til at virke Sad Det hænger dog nok sammen med at det er 3 år siden at jeg har siddet med Flash sidst Whistling

Er der en sød sjæl, der vil skærer det ud i pap for mig hvordan koden i AS skal se ud?

Testfil her:
Testflash her:

...og som PeterF skriver, så bruger jeg AC_FL_RunContent til at styrer/kører swf filen.

Preisler

Se PeterF's brugerprofil
Indmeldt: 10-08-2007
Indlæg: 78
Er offline

OK.

Jeg vil beskrive hvordan du gør i AS3. Det er anderledes i AS2.
Bagefter skal html filen ændres, så den tilføjer en variabl flash kan bruge, som vi kalder startFrame

I dit link til rar fil, findes Test.fla. Her skal du ændre Publish Settings (SHIFT+CTRL+F12) -> Flash, så det er Action Script 3 i stedet for AS2!

Så skal du oprette et nyt layer i din timeline og eventuelt kalde det AS3.

Ryk alle tweens så det første starter på frame 2.

Du skal skrive to stumper AS3 kode. Nemlig på første og sidste frame.

På den første frame i AS3 layer, kan du skrive følgende kode:

// AS3
 
this.stop();
 
// Vent på at alle billeder (altså hele swf filen) er hentet.
loaderInfo.addEventListener(Event.COMPLETE, completeListener);
 
function completeListener(e:Event) : void
{
  // Fjern denne eventListener. (Den bliver først fjernet, når scriptet er udført!)
  loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
 
  // Test om der er parametre.
  if (this.root.loaderInfo.parameters != null)
  {
    // Hvis der er nogle parametre, så gem dem i et object, der hedder flashVars
    var flashVars:Object = this.root.loaderInfo.parameters;
 
    // Hvis der er en parameter, der hedder startFrame, 
    if (flashVars.startFrame != null)
    {
 
      // Jeg antager at du aldrig giver startFrame en ulovlig værdi. 
      // fx bogstaver, eller tal mindre end 1 og større end sidste frame i timeline
 
      // Flyt afspilningspositionen på timeline.
      gotoAndPlay(flashVars.startFrame);
    }
    else
    {
      // Hvis der IKKE er nogen parameter, der hedder startFrame, 
      // så start ved frame 2.
      gotoAndPlay(2);
    }
  }
  else
  {
    gotoAndPlay(2);
  }
}

På den sidste frame i din timeline på AS3 layer, skal du oprette endnu en blank keyframe og tilføje denne kode:
gotoAndPlay(2);

Publicer herefter flash filen.

HTML filen skal rettes. flashvars skal tilføjes de steder hvor html filen embedder swf filen.

Dvs. i javascriptet og to steder under noScript delen.
I dette eksempel rykkes til frame 345, hvor din eksempel fil viser billede nummer 2.

<SCRIPT LANGUAGE="javascript">
if (AC_FL_RunContent == 0) {
  alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent(
  'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0',
  'width', '634',
  'height', '216',
  'src', 'Test',
  'flashvars','startFrame=345',
  'quality', 'high',
  'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
  'align', 'middle',
  'play', 'true',
  'loop', 'true',
  'scale', 'showall',
  'wmode', 'window',
  'devicefont', 'false',
  'id', 'Test',
  'bgcolor', '#ffffff',
  'name', 'Test',
  'menu', 'false',
  'allowFullScreen', 'false',
  'allowScriptAccess','sameDomain',
  'movie', 'Test',
  'salign', ''
); //end AC code
}
</SCRIPT>
<NOSCRIPT>
  <OBJECT CLASSID="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" CODEBASE="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0" WIDTH="634" HEIGHT="216" ID="Test" ALIGN="middle">
<PARAM NAME="allowScriptAccess" VALUE="sameDomain" />
<PARAM NAME="allowFullScreen" VALUE="false" />
<PARAM NAME="movie" VALUE="Test.swf" />
<PARAM NAME="menu" VALUE="false" />
<PARAM NAME="quality" VALUE="high" />
<PARAM NAME="bgcolor" VALUE="#ffffff" />
<PARAM NAME="flashvars" VALUE="startFrame=345" />	
<EMBED SRC="Test.swf" FLASHVARS="startFrame=345" MENU="false" QUALITY="high" BGCOLOR="#ffffff" WIDTH="634" HEIGHT="216" NAME="Test" ALIGN="middle" allowScriptAccess="sameDomain" allowFullScreen="false" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" />
</OBJECT>
</NOSCRIPT>

Håber det hjælper.

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

Hej PeterF!

Det er jo skåret så meget ud i pap at det er helt pineligt Embarassed

...men det virker perfekt, så jeg takker og bukker! Very Happy

Preisler

Se Preisler's brugerprofil
Indmeldt: 05-08-2007
Indlæg: 16
Er offline

... og her er resultatet.

Tak for hjælpen

Preisler