Odpowiedz na ten temat
Pokaż wyniki od 1 do 3 z 3

  1. Dołączył
    Nov 2010
    Skąd
    Kielce, PL
    Postów
    5

    Cytuj | #1

    Siemanko

    Nie przedłużając Otóż w mojej gierko/aplikacji stworzonej za pomocą tutoriali miało chodzić żeby kulka miała reagować na akcelerometr i raguje, ale kulka porusza się tylko po jednym torze, od górnego prawego narożnika do lewego dolnego. Oto kod:

    Kod:
    import flash.sensors.Accelerometer;
    import flash.events.AccelerometerEvent;
    import flash.events.Event;
    
    var acc:Accelerometer = new Accelerometer();
    acc.addEventListener(AccelerometerEvent.UPDATE, update);
    
    var tx:int = 0;
    var ty:int = 0;
    
    function update(e:AccelerometerEvent):void
    {
    	tx = e.accelerationX * 100;
    	ty = e.accelerationY * 100;
    }
    
    this.addEventListener(Event.ENTER_FRAME, loop);
    function loop(e:Event):void
    {
    	ball.x += ((ball.x + tx) - ball.x) * 0.3;
    	ball.y += ((ball.y - tx) - ball.y) * 0.3;
    }
    Co zrobić żeby kulka chodziła po całym ekranie?
    I jeszcze jedno, co zrobić aby kuka nie miała dostępu wychodzenia poza ekran? Czyli takie bandy blokujące.
    Dodam że to Flash więc chodzi o Action Script 3.0.

    Pozdrawiam


  2. Avatar Krzema
    Dołączył
    Jul 2008
    Skąd
    Gdańsk, PL
    Postów
    181

    Cytuj | #2

    Co do pierwszego problemu: mam nadzieję, że to tylko ta literówka:

    Kod:
    ball.y += ((ball.y - ty) - ball.y) * 0.3;
    A ograniczenia możesz zrobić np. tak:

    Kod:
    function loop(e:Event):void
    {
    	ball.x += ((ball.x + tx) - ball.x) * 0.3;
    	ball.y += ((ball.y - ty) - ball.y) * 0.3;
    	ball.x = Math.min(Math.max(radius, ball.x), [szerokosc_ekranu]-radius);
    	ball.y = Math.min(Math.max(radius, ball.y), [wysokosc_ekranu]-radius);
    }
    Tak na szybko napisane, bez sprawdzania więc i pewności czy zadziała Zakładam, że zmienna radius zawiera promień piłki. Jak chcesz to możesz na początek usunąć w ogóle wystąpienia radiusa (czyli zamiast niego wstawić 0).
    Daj znać czy i jak działa

    @edit
    Kod:
    ball.x += ((ball.x + tx) - ball.x) * 0.3;
    Zauważ, że "ball.x" się skraca. Więc powyższe przypisane jest równoznaczne z
    Kod:
    ball.x += tx*0.3;
    Poza tym to jest tak średnio poprawne liczenie pozycji. Akcelerometr zwraca Ci przyspieszenie [m/s^2], a nie prędkość. Pomyśl nad tym sam, przypomnij sobie ruch jednostajnie przyspieszony Jak będziesz miał z tym problem to napisz, pokombinujemy dalej. Mówiąc krótko: może i jakoś to tam działa, ale jak na moje nie jest to zgodne z prawami fizyki
    Ostatnio edytowane przez Krzema ; 19.12.2010 o 17:20


  3. Dołączył
    Nov 2010
    Skąd
    Kielce, PL
    Postów
    5

    Cytuj | #3

    Kod:
    ball.y += ((ball.y - ty) - ball.y) * 0.3;
    Dzięki Wszystko działa bez zarzutu Kulka śmiga po całym ekranie i bandy też działają.

    Jeśli możesz podeślij mi na Priv jakiś szybszy kontakt do Ciebie

    Zna ktoś jakieś tutoriale do Flasha CS5 pomocne przy budowaniu Aplikacji iOS?

    Pozdrawiam

    Adam.
    Ostatnio edytowane przez K8Triton ; 20.12.2010 o 16:21

Odpowiedz na ten temat