F8 - ukrywanie cantainera

Technologia Flash, czyli animacja na potrzeby stron WWW to świat daleko odbiegły od zwykłego programowania i kodu. Zapytaj o pomoc i podziel się z nami Twoimi problemami z zakresu Flasha.
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

F8 - ukrywanie cantainera

Post autor: hdhkff »

Stworzyłem filmik 2, do którego za pomocą containerMc ładuję filmik 1. Filmik ładuje się. Chcę zrobić tak by po załadowaniu się od razu został ukryty.
Zastosowałem polecenie

Kod: Zaznacz cały

containerMc._visible = false;
Jednak filmik 1 cały czas pozostaje widoczny. Jak ukryć filmik 1 używając visible = false ?
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

Jak ładuesz? Pokaż kod.
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Kod: Zaznacz cały

var containerMc:MovieClip = this.createEmptyMovieClip("containerMc", this.getNextHighestDepth());
var mclListener:Object = new Object();
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
containerMc._x = 0;
containerMc._y = 0; 

image_mcl.loadClip("intro.swf",containerMc);
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

Kod: Zaznacz cały

var containerMc:MovieClip = this.createEmptyMovieClip("containerMc", this.getNextHighestDepth());
containerMc._visible = false;
var mclListener:Object = new Object();
mclListener.onLoadStart = function(e) {
	containerMc._visible = false;
};
mclListener.onLoadInit = function(e) {
	containerMc._visible = false;
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
containerMc._x = 0;
containerMc._y = 0;

image_mcl.loadClip("intro.swf",containerMc);
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Domyślam się o co chodzi w konstrukcji tego kodu. Po ukończeniu całego projektu zapoznam się z dokładnie z tym co następuję po czym i jakie znaczenie ma każde z poleceń zawarte w użytych przeze mnie skryptach. Marku, Twój kod oczywiście działa poprawnie, wczytany filmik został ukryty jednak w tle cały czas słyszę muzykę. Wnioskuję z tego, że po cichu następują także procesy graficzne, co może stanowić problem po załadowaniu większej ilości filmików. Muszę znaleźć sposób na to by ukryty film siedział cicho w stanie uśpienia do momentu odpowiedniego wywołania go odpowiednim kodem. Istnieje sposób jakieś polecenie typu stop(all things in movie) i play(all things in movie) ? :)
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

Oczywiście zachodzą i procesy graficzne. Najlepszym rozwiązaniem jest dać we wczytywanym pliku pierwsza klatkę pustą, i dać w niej stop(); po załadowaniu, kiedy jest taka potrzeba dać play();
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Dobry pomysł, w zasadzie rozwiązuje większość moich problemów z ładowaniem filmików. Nie wiem tylko jak odnieść się z akcji w preloaderze do drugiej klatki wczytanego filmiku. Jakaś sugestia ?
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Po sporej filtracji całego flash forum znalazłem post ( http://forum.webinside.pl/viewtopic.php ... hlight=swf ), którego autor posiadał podobny problem do opisanego wyżej przeze mnie. Znalazłem pewną ciekawą funkcję o nazwie foo . Pomyślałem trochę nad sensem stosowania tego rodzaju polecenia. Zrozumiałem z tego, że aby móc sterować filmikiem zewnętrznym z poziomu filmiku głównego, należy stworzyć coś w rodzaju pozwolenia na ingerencję w zawartość filmiku zewnętrznego, co w gruncie rzeczy wydaje się być zrozumiałym zabezpieczeniem. Jak rozumiem w tym właśnie celu, w tym przypadku stosuje się funkcję foo.
Wstawiłem więc:

Kod: Zaznacz cały

function foo() {
   trace(1);
} 
w pierwszą klatkę filmiku zewnętrznego.

Teraz w filmiku głównym należało by stworzyć kod odnoszący się do funkcji foo tak, by w filmiku zewnętrznym nastąpił skok do klatki nr 2, znajdującej się na głównej listwie czasowej. Zaczęły się moje schody. Poproszę o nakierowanie mnie co robię źle. Kod w filmiku głównym:

Kod: Zaznacz cały

var containerMc:MovieClip = this.createEmptyMovieClip("containerMc", this.getNextHighestDepth());
containerMc._visible = false;
var mclListener:Object = new Object();
mclListener.onLoadStart = function(e) {
   containerMc._visible = false;
};
mclListener.onLoadInit = function(e) {
	 target_mc.foo(); 
   containerMc._visible = false;
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
containerMc._x = 0;
containerMc._y = 0;

image_mcl.loadClip("intro.swf",containerMc);
containerMc.target_mc.foo (gotoAndPlay (2)); // <--- zabawne nie :)
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

foo to nie jest jakaś tam specjalna funkcja to tylko nazwa funkcji równie dobrze mogłaby brzmieć kapelusz :)

Kod: Zaznacz cały

mclListener.onLoadInit = function(e) {
	e.gotoAndPlay(2);
};
Gdybyś przejrzał w FAQ o MovieClipLoader byłoby to oczywiste.
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Chylę nisko kapelusz i oznajmiam, że funkcja działa :)
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Wewnątrz filmiku 1 ( wewnątrz jednego z mc ) zamieściłem kod funkcji iend:

Kod: Zaznacz cały

function iend() {
   trace(1);
} 
Wewnątrz filmiku 2 w pierwszej klatce głównej listwy czasowej zamieściłem kod:

Kod: Zaznacz cały

function os() {
   trace(1);
} 
Teraz chcę z Filmiku 3 wykonać następujące sterowanie:
Filmik 3 ładuję filmik 1 , w momencie gdy w filmiku 1 dojdzie do klatki opisanej funkcją iend załaduje się filmik 2 i za pomocą funkcji os przeskoczy na drugą klatkę tego filmiku.

Moje próby kończą się porażką, odnoszę wrażenie, że błądzę gdzieś gdzie nie powinienem.

Kod: Zaznacz cały

var containerMc:MovieClip = this.createEmptyMovieClip("containerMc", this.getNextHighestDepth());
var mclListener:Object = new Object();

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
containerMc._x = 0;
containerMc._y = 0;

image_mcl.loadClip("filmik1.swf",containerMc);

// tu zaczynają się moje próby

mclListener.onLoadInit = function(iend) { 
   iend.function(os);
os.gotoAndPlay (2);
};
}
  
   // teraz filmik2
 
 var containerMc:MovieClip = this.createEmptyMovieClip("containerMc2", this.getNextHighestDepth());
var mclListener:Object = new Object();

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
containerMc2._x = 0;
containerMc2._y = 0;

image_mcl.loadClip("opowiesc filmik2.swf",containerMc2);
Jak to uporządkować by spełniało swoją funkcję ?
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

Ja bym zrobił coś w tym stylu, że we wczytującym pliku dał jakiś MC, który w onEnterFrame wykrywałby czy wczytywany plik doszedł do danej klatki i wtedy wywoływać funkcję.
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Szperam i szperam i niestety nie mam pojęcia jak to zrobić.
hdhkff
Nowy
Nowy
Posty: 101
Rejestracja: pt sty 04, 2008 10:52 pm

Re: F8 - ukrywanie cantainera

Post autor: hdhkff »

Bardzo proszę o pomoc w kwestii tego filmiku ładującego pozostałe filmiki, bo już mam poblokowany umysł od tego projektu.
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: F8 - ukrywanie cantainera

Post autor: Marek_bf »

No dobrze, uproszczony przykład kolejkowania: Klik
ODPOWIEDZ