|
SWiSH Forum Forum użytkowników programów SWiSH |
|
SWiSH Max - baton - klikam a poem to już nie jest baton
tAboon - Wto 26 Kwi, 2005 05:24 Temat postu: baton - klikam a poem to już nie jest baton Jak zrobić aby baton wykonywał raz akcję po kliknieciu, tzn klikam na niego a on mi ładuje swf z zewnątrza a jeśli na niego jeszcze raz klikne aby nie działała ta akcja. Problem polega na tym że ładowany swf po kliknięciu kilkikrotnym jest wywoływany kilka razy a podczas odtwarzania tego swf'a klikam, odtwarza mi go od początku. Usuwanie batona po kliknięciu i pojawianie się go po innej akcji raczej nei wchodzi w gre. Czy am ktoś może jakiś pomysł??
Delinquent - Wto 26 Kwi, 2005 09:31
Najpierw robisz button bez żadnej akcji, kopiujesz go i umieszczasz w tym samym miejscu (dla ułatwienia nazwij je np: 1 i 2). Konwertujesz je do sprita. W pierwszej i drugiej klatce ustawiasz akcję stop.Teraz buttonowi 1 przypisujesz w pierwszej klatce akcję place w drugiej klatce remove. Buttonowi 2 w pierwszej klatce remove a w drugiej place. Buttonowi 1 przypisujesz akcję :
on (press) {
gotoAndPlay(2); //akcja ta spowoduje usunięcie buttona 1
}
oraz akcję która ma wczytać swf.
Button 2 nie posiada żadnych akcji, pojawia się na miejscu buttona 1 i skutecznie go udaje.
P.S. element button 2 nie musi być konwertowany do buttona, wtedy nie bedzie zachowywał się tak jak button.
roland - Wto 26 Kwi, 2005 09:50
Jest jeszcze jedna możliwość.
Tworzysz zmienną i przypisujesz jej wartość 0.
Kliknięcie na buttonie powoduje sprawdzenie, czy zmienna ma wartość 0, jeżeli tak, to wczytuje SWF i przypisuje zmiennej wartość 1. Jeżeli zmienna ma wartość 1 to nie jest wczytywany plik
Delinquent - Wto 26 Kwi, 2005 12:10
Bardzo zaintrygowała mnie odpowiedź Rolanda. W związku z tym mam pytanie. Czy w Twojej książce jest to szerzej wyjaśnione?
tAboon - Wto 26 Kwi, 2005 13:03
Właśnie o coś takiego mi chodziło co podał Roland spróbuje wieczorkiemw domciu, jeśli mi coś nie będzie wychodziło będę zadawał dalsze pytania. Takie rozwiązanie jakie podał Delinquent miałem na myśli ale troche długotrwałe i strasznie zaśmieca leyout.
[ Dodano: Wto 26 Kwi, 2005 18:56 ]
Rolandzie prosze o pomoc, próbowałem stworzyć według tego co napisałeś,a le cosik mi nie wychodzi więc wklejam to co udało mi się zorbić
Kod: | on (press) {
z = 0;
if (z == 0) {
ladowanie_pl.loadMovie("pleyer1.swf");
z += 1;
}
} |
Wiem że jest problem tego typu w tym co udało mi się zrobić iż po kliknięciu jest znów ustawiana zmienna "z" na 0. Co z tym mozna zrobić aby działało.
roland - Sro 27 Kwi, 2005 06:25
Byłeś bardzo blisko tAboon. Tylko, że cały czas zwiększasz zmienną z o 1. A dodatkowo zauważ, że w drugim wierszu przypisujesz pod zmienną z wartość 0, a już w następnym sprawdzasz czy ma ona wartość 0. W takim skrypcie warunek if wykona się zawsze.
Otóż, należy przypisać zmiennej wartość 0 na początku uruchomionej animacji:
Następnie w butonnie, jeżeli wartość zmiennej wynosi 0, to wczytuje SWF i przypisuje zmiejjej wartość 1, w przeciwnym razie plik SWF jest usuwany, a zmienna przyjmuje ponownie wartość 0.
Można by było skrypt nieco uprościć, ale taki jest bardziej przejrzysty.
Poniżej w formie załącznika działająca animacja.
tAboon - Sro 27 Kwi, 2005 08:33
Hehehe wiem już gdzie tkwił problem. Chwilowo jestem zmuszony do nauki Turbo Pascala 7.0 gdzie zmienną deklaruje przed samą instrukcją. Dzięki abrdoz za pomoc.
tAboon - Sro 27 Kwi, 2005 20:36
UFFF. Dzięki Ci bardzo rolandzie za skrypcik, ale po przeanalizowaniu go na spokojnie powracam do tematu.
Skrypcik jest fajny,a le nie o to mi chodziło, tzn chodziło ale nie do końca. Tzn w Twoim skrypcie zmienna była po kliknięciu zmieniana na 1, ale po ponownym kliknieciu robiła mi unloadMovie swf'a i wracała do wartości "0". Gdzie po ponownym klikcieciu na batona ladowało mi znów swf'a i tak w kółko.
Troszeczke przemodelowalem skrypcik i teraz po kliknięciu zmieniana jest wartość na stałe na 1 i nie ładuje mi ponownie swf'a i nie podejmuje żadnej innej akcji. Skrypcik wygląda następująco
Kod: | on (press) {
if (x == 0) {
ladowanie_pl.loadMovie("pleyer1.swf");
x = 1;
y = 0;
z = 0;
a = 0;
}
} |
Widać tutaj jeszcze zmienne y,z,a one są pod kolejnymi trzema batonami, które ładuja inne swf'y. przypisują one wartość "0" dla batona który ewentualnie byłby wciśniety wcześniej a ich zmienna by była "1" zmieniana jest na zero aby można było je załadować.
Dzięki jeszcze raz bardzo za pomoc.
roland - Czw 28 Kwi, 2005 06:26
OK. Po poście nie zawsze dokładnie wiadomo o co chodzi. Najważniejsze, że pozwoliło Ci to na dostosowanie skryptu do własnych potrzeb.
tAboon - Sro 11 Maj, 2005 15:15
Zamykam problem rozwiązany
|
|