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

SWiSH Max - Zoom sprit'a wzgl. srodka sceny bez wzgl. na jego polozenie?

chyrus - Czw 22 Cze, 2006 20:34
Temat postu: Zoom sprit'a wzgl. srodka sceny bez wzgl. na jego polozenie?
Witajcie.
Dlubie w Swishu juz jakis czas, probuje zrobic interaktywna mape. Mam problem.
Gdy zoomuje (_xsize, _ysize podpiete do batona) sprite'a, to wiadomo, odbywa sie to wzgledem punktu "anchor" ( u mnie lezy on w centrum sprite'a). W zwiazku, ze ma to byc mapa, to uzywam drag do przesuwania mapy i teraz zaczynaja sie schody. Mianowicie, jesli przesune mape (sprite'a z mapa), to zmienia sie polozenie anchora i centrum zoomowani jest gdzies np. poza scena. jednym slowem do bani. Jak zrobic, aby zoom zawsze byl wzgledem srodka sceny bez wzgledu na polozenie (przesuniecie) mapy?

buber - Pią 23 Cze, 2006 08:50

zapodaj plik swi
cya

chyrus - Pią 23 Cze, 2006 10:26

Prosze bardzo, tutaj plik:

http://members.lycos.co.u...test_zoom_1.swi

buber - Sob 24 Cze, 2006 09:47

chyrus niestety zadanie mnie przeroslo :evil: dzisiaj jeszcze powalcze ale widze to w ciemnych barwach;)
chyrus - Sob 24 Cze, 2006 15:09

Zrobilem, juz dziala :|-D Ale analiz matematycznych, kombinacji zapisanych kartek wyszla cala masa !tragedia w efekcie wyszedl malusi wzorek :)
MBabelek - Nie 25 Cze, 2006 09:22

Jak zrobiłeś i działa, to sie podziel z innymi, bo za chwile nowy - inny user będzie szukał rozwiązania i załozy podobny temat.
chyrus - Nie 25 Cze, 2006 10:45

Dziala zoom in, teraz walcze z zoom out. Inne wzory :/
tom3103 - Wto 25 Lip, 2006 16:46

chyrus możesz się podzielić tym co zrobiłeś?
chyrus - Wto 01 Sie, 2006 16:37

No więc tak:

if (mc._xscale == 300) {
mc._x = (mc._x - xscene/2)/2 + mc._x;
mc._y = (mc._y - yscene/2)/2 + mc._y;
}
if (mc._xscale == 400) {
mc._x = (mc._x - xscene/2)/3 + mc._x;
mc._y = (mc._y - yscene/2)/3 + mc._y;
}

i tak dla 500 będzie /4, dla 600 będzie /5 itd.
xscene, yscene są to zmienne zawierające dł. i szer. mojej sceny mc jest moim spritem, którego początkowa skala wynosi 100 (100%) i jego długość i szer. są równe scenie

kum?:)

stefcio - Wto 01 Sie, 2006 21:16

nawet nie podejrzewalem , że mogą być takie opcje jak xscene:))

to moze jest jeszcze xuser i yuser :) )

chyrus - Wto 01 Sie, 2006 23:02

xscene i yscene, to są moje zmienne :>
np:
xscene = 400;
yscene = 300;

Tworzę na początku zmienne, aby nie powtarzać wartości. Zmienię rozmiar sceny i co, wszystko do poprawki by było.

:>

jaqb - Pią 13 Kwi, 2007 10:18

A czy nie lepiej jest użyć:
Stage.width dla x
Stage.height dla y?

I pytanko: jak doszedłeś do tego wzoru? Zmieniłem troche go i tak:


mc._x = (mc._x - Stage.width/2)/((mc._xscale/100) - 1) + mc._x;
mc._y = (mc._y - Stage.height/2)/((mc._yscale/100) - 1) + mc._y;

i wszystko jest okej ale tylko dla skalowania 100, 200, 300... Niestety rozjeżdża się przy innych wartościach np. 150.


Pozdrawiam


Powered by phpBB modified by Przemo © 2003 phpBB Group