• › Witaj Gościu
  • Jesteś niezalogowany (
  • Zaloguj 
  •  lub  

Logo


Strefa czasowa: UTC + 1




Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
 Tytuł: jak ograniczyć random movement
PostNapisane: Śr lip 14, 2010 10:53 pm 
Offline
Nowy
Nowy

Dołączył(a): Pn gru 17, 2007 11:43 am
Posty: 87
Witam! Mam prosty kod, który powoduje płynne przemieszczanie się elementu:
Kod:
onClipEvent(load){
    xDir=1;
    yDir=1;
}
onClipEvent(enterFrame){
    _x+=xDir;
    _y+=yDir;
    if (random(10) == 0){
        xDir*=-1;
    }
    if (random(10) == 0){
        yDir*=-1;
    }
   }

Nie mam jednak kontroli nad jego położeniem, a chciałbym zeby poruszał się np max 10px w lewo/prawo/góra/dół. Kombinowałem cos z dodpisaniem warunku jesli x większy od ... to wróć do początkowego połozenia, ale wówczas element skacze i nei wygląda to ciekawie, bez sensu wtedy random. Czy ktos moglby mi podpowiedziec jak tu ograniczyc pole ruchu?
z góry dzięki
i pozdro


Góra
 Zobacz profil  
 
 Tytuł: Re: jak ograniczyć random movement
PostNapisane: Cz lip 15, 2010 9:38 am 
Offline
Administrator
Avatar użytkownika

Dołączył(a): Cz lut 24, 2005 2:14 am
Posty: 4419
Ja użył bym Tween

Kod:
import mx.transitions.Tween;
import mx.transitions.easing.*;
import flash.geom.Point;
// minimalna i maksymalna prędkość
var SPEED_MIN:Number = 20;
var SPEED_MAX:Number = 40;
// określenie pol,a po którym bedzie poryszał się MC
// 0x - 100x, 0y - 200y
var POINT1:Point = new Point(0, 0);
var POINT2:Point = new Point(100, 200);
// funkcja inicjująca animację
function tweening(targetMc:MovieClip):Void {
   var myTweenX:Tween = new Tween(targetMc, "_x", None.easeNone, POINT1.x, Math.random()* POINT2.x, speerRadnom(), false);
   var myTweenY:Tween = new Tween(targetMc, "_y", None.easeNone, POINT1.y, Math.random()* POINT2.y, speerRadnom(), false);
   myTweenX.onMotionFinished = tweenContinueX
   myTweenY.onMotionFinished = tweenContinueY
}
// powtarzanie animacji w osi X
function tweenContinueX(tween:Tween):Void {
   tween.continueTo(Math.random()*POINT2.x, speerRadnom());
}
// powtarzanie animacji w osi Y
function tweenContinueY(tween:Tween):Void {
   tween.continueTo(Math.random()*POINT2.y, speerRadnom());
}
// funkcja losująca szybkość animacji
function speerRadnom():Number{
   return SPEED_MIN + Math.floor(Math.random() * (SPEED_MAX - SPEED_MIN))
}
// wywołanie animacji dla MC i nazwie instancji mojMc
tweening(mojMc, POINT1, POINT2, SPEED);

_________________
Dlaczego nie otrzymałeś odpowiedzi. .:. Komercyjnie - FLASH


Góra
 Zobacz profil  
 
 Tytuł: Re: jak ograniczyć random movement
PostNapisane: Cz lip 15, 2010 4:55 pm 
Offline
Nowy
Nowy

Dołączył(a): Pn gru 17, 2007 11:43 am
Posty: 87
wow, powalony jestem;) wielkie dzięki, efekt idealny, sam bym na to nie wpadł.


Góra
 Zobacz profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów

Szukaj:
Skocz do:  
cron

Polecamy












Powered by phpBB
Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL
Not able to open ./cache/data_global.php