Forum webmasterów
http://webinside.pl/forum/

jak ograniczyć random movement
http://webinside.pl/forum/viewtopic.php?f=6&t=18869
Strona 1 z 1

Autor:  szpak111 [ Śr lip 14, 2010 10:53 pm ]
Tytuł:  jak ograniczyć random movement

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

Autor:  Marek_bf [ Cz lip 15, 2010 9:38 am ]
Tytuł:  Re: jak ograniczyć random movement

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);

Autor:  szpak111 [ Cz lip 15, 2010 4:55 pm ]
Tytuł:  Re: jak ograniczyć random movement

wow, powalony jestem;) wielkie dzięki, efekt idealny, sam bym na to nie wpadł.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/
Not able to open ./cache/data_global.php