SWiSH Forum
Forum użytkowników programów SWiSH

Skrypty do programu SWiSH2 i SWISHmax - [Swish Max 2] Mouse Dragging

Jaszczompek - Wto 08 Gru, 2009 07:07
Temat postu: [Swish Max 2] Mouse Dragging
Witam , przeczytałem na wstępie dział poświęcony skryptom ale nie potrafię sobie z tym poradzić. Jak zbudować skrypt który po najechaniu na kwadracik zacznie go przenosić , a jeśli wyjdę za obszar powiedzmy o 2-3px większy to go puści ?
Efekt znalazłem na pewnej stronce -> http://www.aquatorygroup.ru/flash/


Druga sprawa to idąc w kierunku uzyskania efektu jaki podałem w linku zrobiłem animacje przycisku i miga raz bardziej raz mniej widoczny , ale w momencie gdy najadę na niego akcja przestaje...





edit. Czy mógłby mnie chociarz ktoś nakierować ?

Algorytm:
Jeśli najadę złap za obiekt i przesuwaj z myszką ,
Jeśli przesunę ten obiekt o x+10 to puśc obiekt i umieść go tam gdzie był


Oczywiście to niżej nie działa , ale czy to w dobrą stronę wogóle idę ?
Kod:
onSelfEvent (rollOver)
{
    startDrag(_target, false);
   
    if( this._x == 100)
    {
        stopDrag();
        this.move_x = 100;
        this.move_y = 100;
    }
   
}


[ Dodano: Sro 16 Gru, 2009 09:14 ]
//Odświeżam

Znalazłem na forum że obiekt "spogląda" w kierunku kursora , dodałem efekt znikania... to nie jest efekt w pełni który chciałem uzyskać ale myślę krok po kroczku i coś wyjdzie :P Wypadało by tutaj dorzucić If który sprawdzi - jeżeli myszka zbliży się w okolicę np. 20px to wtedy to zaczyna działać , mogłby ktoś mi pomóc ?

Kod:

onSelfEvent (enterFrame, includingFirstFrame)
{
   
    Xm = _root._xmouse-this._x;
    Ym = _root._ymouse-this._y;
    kat = (Math.atan(Ym/Xm) * 180) / Math.PI;
    kat += (_root._xmouse < this._x) ? 180 : 0;
    _root.Kierunek._rotation = kat;
}

onSelfEvent(enterFrame, includingFirstFrame)
{  _1._alpha = 20;   _2._alpha = 20; }
 
on (rollOver) {alpha = 100; }
on (rollOut)  {alpha = 20;  }

augustym - Pią 18 Gru, 2009 09:12

:oops: m moze pliczek swi do tego przykładu

pozdrawiam

Jaszczompek - Pią 18 Gru, 2009 13:22

Dodałem ale to nie jest to co chce osiągnac :P nie wiem w jakim kierunku isc , nie mam pomysłu a nikt nie chce pomoc póki co...

Wystarczyło by pewnie teraz popracować nad animacją , początkowa alphe na 20 dodać , i jak tu ustawić tego ifa żeby lapał dopiero po zbliżeniu się do obiektu

Szymciosek - Pią 18 Gru, 2009 13:47

Żeby wyłapało że mysz jest 10px od obiektu

Anchor Point ustawiony na center

if (_xmouse <= obj.x + obj.width / 2 + 10){
trace("10px na prawo);
}

Chyba dobrze, robię z pamięci, a obj to jakiś tam kwadrat np.

Jaszczompek - Pią 18 Gru, 2009 18:41

to dodane jest w scripcie sprita Kierunek czyli twój obj to mój Kierunek, czyli w animacji this. zastępujemy

Kod:

onSelfEvent (enterFrame, includingFirstFrame)
{
    if (_xmouse <= this._x + this._y / 2 + 10)
    {  trace("10px na prawo");
        Xm = _root._xmouse-this._x;
        Ym = _root._ymouse-this._y;
        kat = (Math.atan(Ym/Xm) * 180) / Math.PI;
        kat += (_root._xmouse < this._x) ? 180 : 0;
        _root.Kierunek._rotation = kat;
    }
    else{trace("10px na lewo")}
}


dodałem sobie do sprawdzenia czy osiągnie lewo , ale coś nie wychodzi...

bo ten warunek to : Jeżeli myszka osiągnie na osi X wartość x.Kierunku i y.Kierunku to ?

Szymciosek - Pią 18 Gru, 2009 18:51

Skąd Ci się wzięło this._y ?

Ma być WIDTH czyli szerokość

Jaszczompek - Pią 18 Gru, 2009 20:10

Znaczy złe skopiowałem , bo coś sprawdzałem ,

tylko powiedz mi co znaczy te 2+10 ? bo jak mam kwadracik sceny to nie działa tylko po wyjściu z lewej strony , dalej wszystko łapie zatem trzeba zmniejszyć pole działania

Szymciosek - Sob 19 Gru, 2009 08:54

obj.x + obj.width / 2 + 10

oblicza pole działania

od X obiektu (x to jest środek, zależy jak ustawisz)
do połowy szerokości obiektu (width / 2)
i do tego 10px zapasu (+10)


Powered by phpBB modified by Przemo © 2003 phpBB Group