Łukasz Wilk Web Developer
Temat: Problem ze skalowaniem
WitamTworzę aplikację, która wymaga użycia oraz skalowania dokumentów PDF oraz własnych komponentów. Niestety natrafiłem na duży problem. Okrojona wersja layoutu wygląda następująco:
Zielony obszar będzie zajęty przez kontener z wertykalnym scrolem. Jako "tło" wykorzystam kilka PDF'ów zamkniętych w SWF'y, które będą rozmieszczone jeden pod drugim. Zawartość tego kontenera powinna się skalować na podstawie szerokości, która cały czas powinna zajmować 100% zielonego obszaru. Skalowanie musi zachować proporcje. Jak na razie udało mi się jedynie uzyskać efekt skalowania PDF'ów na evencie onResize:
protected function handleResize(event:ResizeEvent):void
{
try
{
img1.height = group1.width * 830 / 550;
img2.height = group2.width * 830 / 550;
group2.y = group1.height;
}
catch (e:Error) {}
}
830 to bazowa wysokość, a 550 szerokość PDF'a.
Kod opisujący skalowany obszar:
<s:Scroller id="scroller"
top="0" bottom="0" left="0" right="0">
<s:Group id="panel"
x="0" y="0"
width="100%" height="100%">
<s:Group id="group1"
x="0" y="0"
width="100%" height="100%">
<mx:SWFLoader id="img1"
source="assets/test36.swf"
width="100%"/>
<s:TextInput id="testInput1"
x="345" y="130"
width="201" height="23"
text="LALALALA"/>
</s:Group>
<s:Group id="group2"
x="0" y="830"
width="100%" height="100%">
<mx:SWFLoader id="img2"
source="assets/test36.swf"
width="100%"/>
<s:TextInput id="testInput2"
x="345" y="130"
width="201" height="23"
text="LALALALA"/>
</s:Group>
</s:Group>
</s:Scroller>
Używając tego podejścia mogę skalować PDF'y oraz zachować ich proporcje, ale nie wydaje mi się, że jest to najbardziej optymalna droga. Jakkolwiek ta część skaluje się dobrze to problem zaczyna się w momencie, gdy chcę ten sam efekt (przeskalowanie oraz ustawienie pozycji) uzyskać na TextInputach (później zamienione na moje własne komponenty). Próbowałem wykorzystać:
- StageScaleMode.SHOW_ALL
- resizeMode="scale"
- własne funkcje przeliczające, ale uderzenie w wydajność było ogromne
- i jeszcze parę rozwiązań znalezionych w internecie
jednak nic nie dało oczekiwanego rezultatu. Efekt jaki chcę uzyskać udało mi się zobaczyć kiedy zamknąłem kontrolki TextInput w SWF'ie razem z dokumentem PDF - tutaj przykład: http://lukaszwilk.com/download/expected_result.swf. Teraz chcę uzyskać to samo we Flexie.
Mam nadzieję, że któryś z użytkowników forum będzie w stanie mnie naprowadzić na właściwą drogę.