webForumDet fria alternativet

SWF-fil med loadMovie

Flash

6 svar · 393 visningar · startad av Ritte

Medlem sedan juni 20067 inlägg
Frågan#1

Jag kör Macromedias Captivate för att göra ett demo av ett program.
Denna demo (SWF-fil) vill jag spela upp i en annan Flash (vi kallar den "huvud Flash").
När demo filmen är klar vill att man kommer till ett kontaktformulär.

Försökte först att exportera Captivate filen in till Flash 8 Pro och lyckades nästan... vissa objekt följer inte med... så jag la ner det.

Då gjorde jag en SWF-fil i Captivate som jag sedan laddade in i "huvud Flashen" med hjälp av loadMovie... kanon! ...men sen kommer problemet:
Hur kan jag känna av att demo filmen är klar så att jag då kan visa kontaktformuläret???

Finns det event som gör att MovieClip objektet kan skicka en instruktion när SWF-filen kört klart? Det vore i så fall bra eftersom längden på demo filmen kan variera.

Eller finns det något smartare sätt att lösa det hela? Har jag tänkt fel?

//Ritte

Medlem sedan juni 2000974 inlägg
#2

Kan du inte sätta ett kommando på sista framen som skickar dig vidare till kontaktformuläret?

Medlem sedan juni 20067 inlägg
#3

Eftersom filmen laddas dynamiskt med loadMovie så har jag ingen Timeline för objektet. SWF-filen som jag laddar är skapat med Captivate så den kan jag inte påverka.
Jag sett att det finns två probertys för MovieClip objektet, totalframes och currentframe som kanske kan vara användbara.
Men jag måste få en triggning på något sätt att filmen är klar, att currentframe = totalframes typ... men hur?

Eller vet någon om man med Action Script kan ta fram sista Frame för ett MovieClip man skapat i runtime och sätta kod i det, framet?

Medlem sedan maj 2003750 inlägg
#4

När filmen laddat klart så placera ett onEnterFrame event som känner av ifall filmens _currentframe är lika med dess _totalframes property.

/Mirandir

Medlem sedan juni 20067 inlägg
#5

Tack mirandir, men jag får det inte att fungera.

När jag kör följande kod så får jag "0 / 1" och inget mer.
test.swf innehåller 60 frames.

this.createEmptyMovieClip("my_mc", 0);

my_mc.onEnterFrame = function () {
trace (my_mc._currentframe + " / " + my_mc._totalframes);
}

my_mc.loadMovie("test.swf");

Medlem sedan maj 2003750 inlägg
#6

Jo som jag skrev så måste filmen ha laddat klart först, eller åtminstone börjat att ladda första bildrutan innan du kan lägga på onEnterFrame eventet. Annars kommer det att raderas eller bara visa "fel".

Något i denna stilen alltså:

this.createEmptyMovieClip("my_mc", 0);
this.createEmptyMovieClip("preloader_mc", 1);

preloader_mc.onEnterFrame = function () {
   if(my_mc._totalframes > 1)
   {
      my_mc.onEnterFrame = function()
      {
         trace(this._currentframe + " / " + this._totalframes);
      }
   }
}

my_mc.loadMovie("test.swf");

/Mirandir

Medlem sedan juni 20067 inlägg
#7

OK. Tack så mycket!

Nu fungerar det... nästan. När jag laddar en SWF-fil som är skapad i Flash så fungerar det men när jag laddar en SWF-fil skapad av Captivate så visas bara en del av filmen.

Skumt... om jag inte deklarerar my_mc.onEnterFrame så fungerar det, det hjälper inte att bara kommentera bort trace raden. Om jag kommenterar bort kod (se nedan) så visas filmen bra.

preloader_mc.onEnterFrame = function () {
if(my_mc._totalframes > 1)
{
/*
my_mc.onEnterFrame = function()
{
trace(this._currentframe + " / " + this._totalframes);
}
*/
}
}

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)