Toon posts:

[FLASH 8] aansturing van een ingeladen swf

Pagina: 1
Acties:

Verwijderd

Topicstarter
Loop tegen een probleem aan waar ik niet uitkom!

Een swf die ingeladen is in de _root heeft level 3 gekregen. In die swf (laten we die swf3 noemen) laad ik een andere swf in, die level 2 krijgt (swf2). Nu wil ik vanuit swf3, swf2 die ik ingeladen heb middels LoadMovie("name.swf", 2);, aansturen. Nu werkt onderstaande code wel vanuit swf3 richting swf2:

_level2.Soundbasic = new Sound(myMusicMc);
_level2.Soundbasic.loadSound("mp3/1.mp3", true);
_level2.Soundbasic.setVolume(20);

Maar onderstaande code niet:

_level2.gotoAndPlay(21);

Zet ik die code op een button in swf2 gaat het wel goed. Waar kan dat aan liggen? Heeft dat met timing te maken? Wie heeft er een idee? Ik tast volledig in het duister!

  • Murphy
  • Registratie: November 2000
  • Laatst online: 23-03 16:20

Murphy

(2B||!2B)?

Timing indeed. Je kunt direct na een loadMovie (of een moviecliploader, of een attachmovie) geen methods aanspreken, wel properties veranderen. Dus een loadmovie + daarna een functie aanspreken van de geladen movie is er niet bij! En aangezien gotoAndPlay() ook een functie is...

Je kunt dit oplossen door je code in een onLoad() te zetten, of je code in frame 1 van de in te laden movie, óf een paar frames vertraging in te bouwen voordat je je code uitvoert.

Verwijderd

Topicstarter
Ik krijg weinig response op het geheel wanneer ik gebruik maak van onderstaande code

LoadMovie("file.swf",2);

onLoad = function()
{
_level2.gotoAndPlay(21);
}

Daarnaast werd in principe mijn code al een paar frames later aangesproken.

[edit]

Of moet de onload functie in de file.swf? Maar dan haal ik niet het gewenste resultaat omdat ik daar de besturing niet in wil hebben....

[ Voor 27% gewijzigd door Verwijderd op 18-01-2006 16:33 ]


  • sanderb
  • Registratie: November 2000
  • Laatst online: 20:24
als je de MovieClipLoader gebruikt ipv loadmovie heb je meer controle en inzicht in het proces.

onLoadInit = function([target_mc:MovieClip]) {}
Invoked when the actions on the first frame of the loaded clip have been executed.

onLoadInit wordt dus uitgevoerd nadat alle acties op frame 1 in je swf zijn uitgevoerd. Dit houdt in dat dan functies in dat frame beschikbaar zijn...ook custom functies dus.

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


Verwijderd

Topicstarter
Heb nu onderstaande structuur.
code:
1
2
3
4
5
           swf1
            |
       ----------------
       |              |
     swf3            swf2


Direct aan het begin worden de twee swfjes ingeladen op resp level 3 en 2, eerst ga ik communiceren binnen swf3; dat geeft geen probleem. Dan wil ik vanuit swf3 naar swf2 praten, dat gaat tot op zekere hoogte: eerder genoemde functies doen ut niet!

Ik zie het niet zo zitten om de oplossing van sanderb te implementeren, dan moet ik volgens mij best veel aanpassen.

  • Murphy
  • Registratie: November 2000
  • Laatst online: 23-03 16:20

Murphy

(2B||!2B)?

Valt best mee en is toch echt veel beter ....
code:
1
2
3
4
5
6
7
8
9
10
11
LuisterEens.onLoadComplete = function(doel) {
    trace(doel+" is er!");
};
LuisterEens.onLoadInit = function(doel) {
    doel.doeEensWatMan();
    // hier kun je dus functies aanspreken in de geladen MC...
};
loadertje = new MovieClipLoader();
LuisterEens = new Object();
loadertje.addListener(mclListener);
loadertje.loadClip("2.swf", 2);
Pagina: 1