Ustawiam wybrany element w: Składnik listy z Actionscript, działa, ale Lista nie przewija do wybranego elementu - trzeba przewijać za pomocą paska przewijania lub myszy. Czy można automatycznie przewinąć do wybranego elementu? Dzięki !Przewiń do wybranej pozycji w elemencie Flex 4 Spark List
Odpowiedz
spróbować metody ensureIndexIsVisible(index:int):voids:List
.
Flex-3 istnieje metoda scrollToIndex
i stąd można zadzwonić
list.scrollToIndex(list.selectedIndex);
Wierzę, że to powinno działać w Flex-4 też.
Niestety, nie. Nie ma takiej metody na Spark List, ale jest tam dla składnika listy Halo. Flex 4 ewoluuje i nadal działa w wersji Beta, mam nadzieję, że problem zostanie rozwiązany. –
Prawdopodobnie będziesz mieć dostęp scroller listy bezpośrednio i zrobić coś takiego:
list.scroller.scrollRect.y = list.itemRenderer.height * index;
Zauważyłem, że nie można bezpośrednio zmienić wartości wewnątrz scrollRect, zamiast tego trzeba zaktualizować scrollRect za pomocą nowego prostokąta?jak [this] (http://www.actionscript.org/forums/showthread.php3?t=190795) – eldamar
można pomnożyć wysokość elementu o indeksie i przekazać tę wartość do:
yourListID.scroller.viewport.verticalScrollPosition
Niedawno dokonał tego w jednym z moich projektów poprzez zdefiniowany rozmiar moich artykułów w grupie ..
<s:Scroller x="940" y="0" maxHeight="465" maxWidth="940" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<s:HGroup id="tutPane" columnWidth="940" variableColumnWidth="false" gap="0" x="0" y="0">
</s:HGroup>
</s:Scroller>
następstwie tej moich przycisków sterujących do manipulacji pracował przez zwiększający prywatny „targetindex” zmienna, a następnie zadzwoniłem funkcję checkAnimation, który używany klasę Animacja, w kombi z SimpleMotionPath i porównania tutpane.firstIndexInView i targ et index. To zmodyfikowało "horizontalScrollPosition" grupy.
Pozwoliło to oddzielne kontrole zasadniczo pełnić funkcję paska przewijania, ale miałem wymóg przesuwając sterowania, aby wyświetlić wybrany element .. Wierzę, że ta technika może pracować dla automatycznego doboru elementów oraz
Dla Spark:
list.ensureIndexIsVisible(index);
widziałem tę podstawową ideę tutaj ... http://arthurnn.com/blog/2011/01/12/coverflow-layout-for-flex-4/
public function scrollGroup(n : int) : void
{
var scrollPoint : Point = theList.layout.getScrollPositionDeltaToElement(n);
var duration : Number = (Math.max(scrollPoint.x, theList.layout.target.horizontalScrollPosition) - Math.min(scrollPoint.x, theList.layout.target.horizontalScrollPosition)) * .01;
Tweener.addTween(theList.layout,{ horizontalScrollPosition: scrollPoint.x , time:duration});
}
protected function theList_caretChangeHandler(event:IndexChangeEvent):void
{
scrollGroup(event.newIndex);
event.target.invalidateDisplayList();
}
Ta funkcja przewinie do góry listy w programie Flex 4+. Bierze pod uwagę wysokość przedmiotu, więc będzie działać dla list z różnymi przedmiotami o różnej wysokości.
private function scrollToIndex(list:List,index:int):void
{
if (!list.layout)
return;
var dataGroup:DataGroup = list.dataGroup;
var spDelta:Point = dataGroup.layout.getScrollPositionDeltaToElement(index);
if (spDelta)
{
dataGroup.horizontalScrollPosition += spDelta.x;
//move it to the top if the list has enough items
if(spDelta.y > 0)
{
var maxVSP:Number = dataGroup.contentHeight - dataGroup.height;
var itemBounds:Rectangle = list.layout.getElementBounds(index);
var newHeight:Number = dataGroup.verticalScrollPosition + spDelta.y
+ dataGroup.height - itemBounds.height;
dataGroup.verticalScrollPosition = Math.min(maxVSP, newHeight);
}
else
{
dataGroup.verticalScrollPosition += spDelta.y;
}
}
}
//try this
this.callLater(updateIndex);//where you want to set the selectedIndex
private function updateIndex():void
{
list.selectedIndex = newIndex;
list.ensureIndexIsVisible(newIndex);
}
Krótsza wersja: 'callLater (list.ensureIndexIsVisible, [list.selectedIndex])' ale nadal nie jest najlepszym rozwiązaniem - czasami wyrzuca indeks poza zakresy błędów –
Ten pracował dla mnie. musiał użyć callLater.
list.selectedItem = "MyTestItem"; //or list.selectedIndex = 10;
this.callLater(updateIndex); //dispatch an update to list
private function updateIndex():void {
list.ensureIndexIsVisible(list.selectedIndex);
}
To jest błąd - można zobaczyć demonstrację i obejście na https://issues.apache.org/jira/browse/FLEX-33660
Ten zwyczaj rozszerzenie komponentu Lista pracował dla mnie:
<s:List
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
valueCommit="callLater(ensureIndexIsVisible, [selectedIndex])">
</s:List>
- 1. Co to jest Halo i Spark w Flex 4?
- 2. Co to jest itemChangeEffect w Spark List?
- 3. Jak obsługiwać zdarzenia kliknięcia w kontroli listy Spark w Flex 4
- 4. Jak zmienić kolor wybranej pozycji w ListView?
- 5. Zapobiegać flex pozycji z rozciąganiem
- 6. Dostęp do pozycji na liście list
- 7. Flex 4: Zbuduj grupę z tłem
- 8. getItemAtPosition() Jak uzyskać czytelne dane z wybranej pozycji w ListView
- 9. Fade w elemencie na Przewiń w dół za pomocą CSS
- 10. flex 4: niestandardowa wartość css
- 11. Przewiń do określonej pozycji na stronie za pomocą Javascript/Jquery
- 12. Ustawianie wybranej pozycji w polu ListBox bez zapętlenia
- 13. jak dostać grupę opcji wybranej pozycji na .chosen() zmiany()
- 14. Przewiń część zawartości w kontenerze o ustalonej pozycji
- 15. Jak zdefiniować niestandardowe "grupy treści" w niestandardowym komponencie Flex 4?
- 16. Flex 4 wykrywa, jeśli użytkownik wpisze klawisz
- 17. Tworzenie DataFrame Spark z RDD list
- 18. Przewiń do końca FlatList po wyświetleniu klawiatury
- 19. Flex 4: Ustawianie wysokości listy iskier do wysokości zawartości
- 20. Flex 4 Suwak z dwoma kciukami
- 21. Jakieś doświadczenie związane z migracją Flex 4?
- 22. Lista elemencie - wartość pozycji struktura jest zawsze zerowa
- 23. Przekierowanie automatycznie po wybraniu pozycji z wybranej listy rozwijanej
- 24. resetuj TextView przewiń do góry
- 25. Mnożenie dwóch list element po elemencie w Haskell
- 26. UITableView Przewiń do sekcji
- 27. Flex 4,10 nowe funkcje
- 28. Ionic Przewiń do elementu
- 29. Naprawiono div pozycji wewnątrz pos: względne i przepełnienie-y: przewiń
- 30. Spark: RDD do listy
Dzięki, ale wygląda na to, że działa tylko w najnowszych wersjach Flex 4 SDK (Flex Builder 4 Beta 2). Zdałem sobie sprawę, że pracuję ze starą wersją, która nie ma jeszcze tej metody. –
to również jest przewijane tylko w ten sposób, że góra elementu jest widoczna, jeśli przedmiot jest wysoki, to nie jest przewijany do dołu. – JTtheGeek
@JTtheGeek Tak, na liście Iskry 4.0 wygląda na to, że musisz dwukrotnie kliknąć, aby przewinąć do dołu. – Nemi