Strona 1 z 1

"Efektowne menu" inaczej...

: ndz maja 08, 2005 3:29 pm
autor: Arczello
Witam.

Chciałem sobie przerobić plik z tutoriala:
http://www.webinside.pl/flash/tutoriale/72
...tak aby prostokąt poruszał się względem osi Y. Zamieniłem więc "x" na "y".

Jednak działa to nieco dziwnie. Prostokąt porusza się nieznacznie, gdy kursor jest w górnej części (obróconego oczywiście o 90 stopni) menu.

Wie ktoś dlaczego?

Re: "Efektowne menu" inaczej...

: ndz maja 08, 2005 4:26 pm
autor: Marek_bf
Zmieniłeś też _xmouse na _ymouse?
I zmień nazwę zmiennej mx na jakąś inna, bo jest ona słowem zarezerwowanym i może powodować konflikty we flash-playerze 7

Re: "Efektowne menu" inaczej...

: ndz maja 08, 2005 7:36 pm
autor: Arczello
Wszystko wyglądało tak:

Kod: Zaznacz cały

onClipEvent (enterFrame) {
	//w każdej klatce
	if (_root.pasek.hitTest(_root._ymouse, _root._ymouse, true)) {
		//jeśli kursor jest na pasku menu
		//ustaw zmienną pozycji y kursora

		my = _root._ymouse;
	}
	//predkosc jest równa odległości między pozycją y kursora,
	//a pozycją y ramki podzieloną przez 5
	//zmiennej d przypisujemy tę wartość
	d = (my-this._y)/5;
	//dodajemy prędkość...
	this._y += d;
} 
Właściwie to mam nieco zmienioną postać kodu:

Kod: Zaznacz cały

onClipEvent ( load ) { 
   poczy = this._y; 
} 
onClipEvent (enterFrame) { 
   //w każdej klatce 
   if (_root.pasek.hitTest(_root._ymouse, _root._ymouse, true)) { 
      //jeśli kursor jest na pasku menu 
      //ustaw zmienną pozycji y kursora 
      my = _root._ymouse; 
   } else { 
      my = poczy; 
   } 
   //predkosc jest równa odległości między pozycją y kursora, 
   //a pozycją y ramki podzieloną przez 5 
   //zmiennej d przypisujemy tę wartość 
   d = (my-this._y)/5; 
   //dodajemy prędkość... 
   this._y += d; 
} 
tak by prostokąt wracał do y=0 ale w obydwu przypadkach kod nie działa jak należy...

Re: "Efektowne menu" inaczej...

: pn maja 09, 2005 4:38 pm
autor: Marek_bf

Kod: Zaznacz cały

onClipEvent (load) {
	var poczy = this._y, speed = 1, my, d;
}
onClipEvent (enterFrame) {
	if (_root.pasek.hitTest(_root._xmouse, _root._ymouse, true)) {
		my = _root._ymouse;
		d = (my - this._y) / 5;
		this._y += d;
	} else {
		this._y -= speed;
	}
}

Re: "Efektowne menu" inaczej...

: pn maja 09, 2005 5:31 pm
autor: Arczello
No fajnie, tylko prostokącik nie wraca do początkowej pozycji. Leci wyyyysoko, nie wiem czy nie do nieskończoności :)

Próbowałem przypisać zamiast this._y -= speed; coś innego będącego odwołaniem do tej właśnie początkowej pozycji. this._y = 0; sprawia, że prostokąt natychmiastowo (po opuszczeniu przez kursor paska menu) znajduje się w y=0 filmu.
A jak zrobić by wracał sobie z jakąś tam prędkością do pozycji, w której był na początku albo do początku paska?

Re: "Efektowne menu" inaczej...

: pn maja 09, 2005 5:41 pm
autor: Marek_bf
Zapomniałem o sprawdzaniu jednego warunku:

Kod: Zaznacz cały

onClipEvent (load) { 
   var poczy = this._y, speed = 1, my, d; 
}
onClipEvent (enterFrame) {
	if (_root.pasek.hitTest(_root._xmouse, _root._ymouse, true)) {
		my = _root._ymouse;
		d = (my - this._y) / 5;
		this._y += d;
	}
	if (!_root.pasek.hitTest(_root._xmouse, _root._ymouse, true)) {
		if (this._y >= poczy) {
			this._y -= speed;
		}
	}
}
Szybkość ustawiasz w zmiennej speed

Re: "Efektowne menu" inaczej...

: pn maja 09, 2005 6:16 pm
autor: Arczello
Dzięki serdeczne.

Pozdrowienia.