Strona 1 z 2

cała strona we flashu

: wt lut 21, 2006 4:53 pm
autor: MuNieK
Witam.
Na początku chciałbym od razu zaznaczyć, że próbowałem szukać tego na forum ale nie wiedziałem nawet jakich słów kluczowych użyć. Interesuje mnie zorbienie strony jako jeden komponent flasha. A to wiąże sie z menu we flashu... Menu już sobie potrafie sam zrobić, tylko ze zwykle uzywalem tabelek htmla i iframe do której te przyciski sie odnosily. Jednak nie wiem co mam zrobić żeby po kliknieciu w jeden z przycisków w pewnym określonym obszarze mojej flashowej strony zmieniła by się treść czy animacja. Czy istnieje możliwość by ktoś mi to wytłumaczył, czy jest to bardzo złożona sprawa wymagająca długiej nauki action scriptów?

pozdrawiam
Muniek

Re: cała strona we flashu

: wt lut 21, 2006 4:59 pm
autor: Marek_bf
To, co ma się wykonać po kliknieciu na przycisk określa się w uchwycie zdarzenia onPress lub onRelease.

Kod: Zaznacz cały

nazwaButtona.onRelease = function() {
	// zrób to czy tamto
};
Co ma się stać tego nie wie nikt oprósz twórcy aplikacji, moja rada:

Zapoznaj się w metodami pracy i narzędziami Flasha i zacznij poznawać ActionScript, żeby robić ciekawe strony nie trzeba wcale znać w 100% AS, należy znać jego solidne podstawy tak samo jak podstawy zasad rządzących w środowisku Flash.

Re: cała strona we flashu

: wt lut 21, 2006 5:21 pm
autor: MuNieK

Kod: Zaznacz cały

nazwaButtona.onRelease = function() {
   // zrób to czy tamto
};
dzięki :)

myśle że można by było wstawić skrypt by załadował ten czy tamten clip w określonym miejscu... może mógłbym cię poprosić byś mi napisał jak ten konkretny skrypt mógłby wyglądać? Lub może jakis tutorial o tym przypadku gdzies mogłbym znalezc?

Re: cała strona we flashu

: wt lut 21, 2006 5:48 pm
autor: Marek_bf
Ma początku polecam Ci wersję prostszą, umieść MovieClipu w poszczególnych klatkach na scenie głównej i przechodź do tych klatek za pomocą:

Kod: Zaznacz cały

nazwaButtona.onRelease = function() {
	gotoAndStop("numer klatki");
}; 

Re: cała strona we flashu

: wt lut 21, 2006 6:03 pm
autor: MuNieK
wow! :D no tak! czemu na to nie wpadłem :lol:
dzięki wielkie!
:-D :-D :-D

pozdrawiam

Re: cała strona we flashu

: czw lut 23, 2006 5:53 pm
autor: Roberto
Mam problem dotyczący właśnie całej strony wykonanej we flashu. Uczyłem się na podstawie darmowego szablonu z jakiegoś templatemonster czy coś w tym stylu.

Strona zrobiona jest na takiej zasadzie, że jest główny swf do którego, poprzez przyciski menu, wczytywane są w odpowiednim miejscu inne swf-y (coś jak podstrony). Na stronie głównej - powiedzmy na samym środku - umieszczone są dwa przyciski menu. Po kliknięciu na przycisk wczytuje się podstrona (czyli jakiś inny swf) który zjamuje część powierzchni głównego swf-a w tym również wspomniane przyciski.
Tak więc klikam na przycisk, otwiera się na środku nowe okienko ze swoim tłem, itp., na nim jest jakiś tam tekst, jeżdże sobie przypadkiem myszką po tym tekście i widzę że kursor w niektórych miejscach zmienia ikonkę tak jakby najeżdżał na jakiś przycisk. Okazuje się, że kursor widzi te przyciski które są pod okienkiem które się właśnie otworzyło. Nie dość że je widzi to czywiście na nie reaguje.

Jak się tego mankamentu pozbyć, czyli jak zrobić aby otwarcie nowego swf-a/okienka fizycznie przykrywało powierzchnię głównego pliku i żeby kursor nie reagował wtedy na to co jest na stronie głównej ?

Re: cała strona we flashu

: czw lut 23, 2006 7:00 pm
autor: Marek_bf
Dodać na końcu akcji zawartej w przyciskach akcje, która je wyłączy:

Kod: Zaznacz cały

 nazwaPrzycisku.enabled = false;
Ponownie włączyć je można:

Kod: Zaznacz cały

 nazwaPrzycisku.enabled = true;

Re: cała strona we flashu

: sob mar 04, 2006 5:24 am
autor: MuNieK
Witam ponownie :)

Wszystko już ładnie działa ale interesuje mnie jeszcze jedna sprawa. Chciałbym żeby się te działy ładnie przemieniały jeden w drugi i wymyśłiłem sobie że każdy dział będzie miał swoje zakończenie po przyciśnięciu któregokolwiek z przycisków zanim załaduje się kolejny dział.
Troche zamotałem ale ściślej to chodzi mi o to byś mógł mi powiedzieć czy jest możliwość by po naciśnięciu w button działo by się "play" i po kilku sekundach automatycznie przechodził do konkretnej klatki? Jest coś tkaiego jak "wait 3 seconds"? :)

p.s.
mam flash 2004 mx i musiałem ten kod troche zmodyfikować i w tym momencie wygląda tak:

Kod: Zaznacz cały

on(release) {gotoAndStop (10); }

Re: cała strona we flashu

: ndz mar 05, 2006 9:58 am
autor: MuNieK
Może napisze dlaczego nie może to działać tym sposobem do któego doszliśmy wczesniej...
Oto screenshot wycinka mojej strony na którym cała akcja ma się toczyć :)
Obrazek

Plan jest taki iż po naciśnieciu któregoś z przycisków strona się przewraca i na nastepnej stronie jest ten właśnie dział do którego dany przycisk sie odnosi.
Lecz problem tkwi w tym że gdy ktoś będąc np. w dziale "Misja" przejdzie do "Widok3d" to animacja nagle zmieni się że zamiast kartka z "misją" to znika kartka z działem "Wizja"... Więc wyglądało by to tylko jak należy gdyby osoba przechodziła z działu do działu po kolei, a wiadomo iż nie zawsze tak bedzie.
Więc wymyśliłem iż każdy z działów będzie miał 10 klatek:
w pierwszej będzie klip z otwieraniem się tego działu, a 9 kolejnych z pustą stroną która będzie przykrywać ten dział (zakończeniem). Więc efekt przy przechodzeniu do innych działów będzie taki iż najpierw nachodzi pusta kartka a potem kartka z innym działem w który się kliknęło.
A do tego potrzebuje właśnie skryptu który logicznie miałby wyglądać w ten sposób:


on release - play
wait 3 seconds
go to and stop "pierwsza klatka wybranego działu"

i potrzebuje by ktoś kto zna się na skryptach zamieniłby ten mój plan na działający actionscript.

pozdrawiam

Re: cała strona we flashu

: ndz mar 05, 2006 3:26 pm
autor: Marek_bf
Musisz pokombinować ze sterowaniem animacji (gotoAndStop, gotoAndStop) poprzez buttony czy też poprzez pozycję, w których animacja się znajduje.
Samo wykonywanie jakiejś akcji po określonym czasie można zrobić np. tak:

Kod: Zaznacz cały

 var intervalID = setInterval(function () {
	clearInterval(intervalID);
	gotoAndStop("klatka");
}, 3000); 

Re: cała strona we flashu

: ndz mar 05, 2006 4:43 pm
autor: MuNieK
dziękuje ci bardzo :) dodałem do tego play i już jest super :)
Jeszcze raz wielkie dzięki.

pozdrawiam

Re: cała strona we flashu

: wt mar 14, 2006 2:50 pm
autor: Roberto
Powracam z nowym problemem. Wszystko co poniżej opiszę dotyczy tego przykładu:

http://roberto.easyisp.pl/test.fla


Problemy są następujące:

1. Po kliknięciu na dowolną pozycję menu powinna się otwierać odpowiadająca mu animacja. W tej chwili jednak jest tak, że ładowanie się animacji uzależnione jest od kolejności warstw i jak kliknę Historię to ona się otworzy, potem klikam Kontakt i on też się otwiera, ale kiedy znowu kliknę historię to jej otwarcia nie widać gdyż otwiera się pod Kontaktem.
UnloadMovie tutaj nie zdaje egzaminu gdyż jeśli w kodzie przycisku np. Historia dam funkcję unloadującą animację Kontakt to potem po kliknięciu na Kontakt nic się nie dzieje (co chyba logiczne skoro zrobiłem kontakt_mc.UnloadMovie).
Próbowałem też dać gotoAndPlay i wskaząć odpowiednią klatkę animującą zamykanie się danego movie clipa no ale nie dam przecież w każdym przycisku kodu do odpowiednich klatek trzech pozostałych animacji :) Szukałem więc czegoś uniwersalnego co umieszczone w jednej linijce kodu odładowałoby dowolny uprzednio pokazany movie clip. Bez rezultatu.

Pytanie brzmi więc: co zrobić aby klikając na poszczególne buttony zamykały/odładowały się uprzednio otwarte/załadowane movie clipy , tudzież w jakiś inny sposób zapobiec temu że w tej chwili ich widoczność zależy od kolejności warstw w których są umieszczone.

2. Jak widać, pod buttonem Oferta umieszczony jest dodatkowy movie clip na którym (o czym później) będą linki. Problem widoczny jest od razu: otóż pojawiający się movie clip znika jak tylko myszka zjedzie z właściwego buttona, a ja przecież chcę jeszcze na tym nowym prostokącie wybrać sobie jakieś pozycje z mojego menu.

Czyli pytanie proste: jak powstrzymać ten prostokącik przed zamykaniem się, aż do czasu wyboru jakiegoś linka który na nim będzie umieszczony, lub do czasu aż myszka zjedzie z tego prostokącika (a nie tylko z buttona).

3. Sprawa wspomnianych linków które będą umieszczone na wspomnianym prostokąciku wysuwającym się po kliknięciu na Ofertę. Klikając na dowolną pozycję owego menu powinna stać się następjąca rzecz: ów prostokącik się zamyka, a na tej głównej powierzchni strony otwiera się odpowiedni movie clip.
Choć wydaje mi się, że rozwiązanie tego rpoblemu nasunie się samo po rozwiązaniu problemu pierwszego gdyż pewnie będzie opierało się na tych samych zasadach.


Grzebałem wszędzie gdzie się da, zawaliłem sobie głowę różnymi informacjami, a na kompie zaroiło mi się od takich testowych plików *.fla w których próbowałem te problemy rozwiązać, ale wciąż z czymś mam problem więc nie chcę już walczyć z tym sam :-D

Re: cała strona we flashu

: śr mar 15, 2006 1:57 pm
autor: Marek_bf
1. http://livedocs.macromedia.com/flash/mx ... 01556.html
2. http://forum.webinside.pl/viewtopic.php?t=8684
3. Po zamknięciu prostokącika, wywołaj odpowiednią akcję (w jego ostatniej klatce)

Re: cała strona we flashu

: czw mar 16, 2006 11:18 am
autor: Roberto
Co do problemu pierwszego rozwiązanie swapDepths jakoś nie bardzo mi wychodzi.

Przyciski nazywają się kontakt_but, historia_but, glowna_but, a odpowiadające im movie clipy które się przez nie otwierają mają "mc" zamiast "but".

I teraz zaproponowane rozwiązanie próbowałem zastosować tak:

w warstwie akcje:

Kod: Zaznacz cały

kontakt_but.onRelease = function() {
   kontakt_mc.swapDepths(historia_mc);
   kontakt_mc.swapDepths(glowna_mc);
};
historia_but.onRelease = function() {
   historia_mc.swapDepths(kontakt_mc);
   historia_mc.swapDepths(glowna_mc);
};
glowna_but.onRelease = function() {
   glowna_mc.swapDepths(historia_mc);
   glowna_mc.swapDepths(kontakt_mc);
};
w danym buttonie:

Kod: Zaznacz cały

on (release) {
	glowna_mc.gotoAndPlay(2);
	function() {
		this.swapDepths(10);
	}
}
lub ewentualnie

Kod: Zaznacz cały

on (release) {
	glowna_mc.gotoAndPlay(2);
	function() {
		glowna_mc.swapDepths(kontakt_mc);
	}
}
I żadne z nich nie działa, czyli robie źle.

Re: cała strona we flashu

: czw mar 16, 2006 10:28 pm
autor: Marek_bf
Co pokaże taki skrypt?:

Kod: Zaznacz cały

 kontakt_but.onRelease = function() { 
  trace( kontakt_mc._name );
};