Estoy configurando el elemento seleccionado en s: Componente de lista con Actionscript, funciona, pero la Lista no se desplaza al elemento seleccionado; necesita desplazarse con la barra de desplazamiento o el mouse. ¿Es posible desplazarse automáticamente al elemento seleccionado? Gracias !Desplácese hasta el elemento seleccionado en el componente Lista de chispas de Flex 4
Respuesta
Prueba el método s:List
ensureIndexIsVisible(index:int):void.
en Flex-3 no es un método scrollToIndex
y por lo tanto se puede llamar
list.scrollToIndex(list.selectedIndex);
creo que esto debería funcionar en Flex-4 también.
Por desgracia, no. No existe tal método en Spark List, pero está ahí para el componente Lista de Halo. Flex 4 está evolucionando y sigue en Beta, espero que este problema se resuelva. –
es probable que desee acceder a la rueda de desplazamiento de la Lista directamente y hacer algo como:
list.scroller.scrollRect.y = list.itemRenderer.height * index;
Descubrí que no puede cambiar el valor dentro de scrollRect directamente, sino que necesita actualizar scrollRect con un nuevo rectángulo.como [esto] (http://www.actionscript.org/forums/showthread.php3?t=190795) – eldamar
Puede multiplicar la altura de un elemento por su índice y pasar este valor a:
yourListID.scroller.viewport.verticalScrollPosition
recientemente he logrado esto en uno de mis proyectos por tener un tamaño definido por mis artículos del grupo ..
<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>
después de esto mis botones de control para la manipulación trabajado incrementando un "targetindex" privada variable, entonces me llama una función checkAnimation, que utiliza la clase Animate, en combinación con un SimpleMotionPath y una comparación entre tutpane.firstIndexInView y targ et index. Esto modificó la "horizontalScrollPosition" del grupo.
Esto permitió controles separados para actuar esencialmente como una barra de desplazamiento, pero no tenía el requisito de la corredera de control para ver el elemento seleccionado .. Creo que esta técnica podría funcionar para la selección automática de artículos, así
Para chispa:
list.ensureIndexIsVisible(index);
vi esta idea básica aquí ... 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();
}
Esta función se desplazará a la parte superior de la lista en Flex 4+. Tiene en cuenta la altura del elemento, por lo que funcionará para listas con diferentes elementos con diferentes alturas.
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);
}
Versión más corta: 'callLater (list.ensureIndexIsVisible, [list.selectedIndex])' pero aún no es la mejor solución - arroja errores de índice fuera de rango a veces –
Esto funcionó para mí. tuvo que usar el callLater.
list.selectedItem = "MyTestItem"; //or list.selectedIndex = 10;
this.callLater(updateIndex); //dispatch an update to list
private function updateIndex():void {
list.ensureIndexIsVisible(list.selectedIndex);
}
Es un error - se puede ver la demostración y una solución en el https://issues.apache.org/jira/browse/FLEX-33660
Esta extensión componente de lista personalizada que funcionó para mí:
<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. Desplácese hasta el primer elemento de jcarousel
- 2. WPF ListBox Desplácese hasta el final automáticamente
- 3. ASP.NET: Desplácese hasta el control
- 4. Vista de lista Desplácese hasta el final de la lista después de actualizar la lista
- 5. Barra emergente en el elemento de lista seleccionado
- 6. ¿Cómo obtener el elemento seleccionado de ListView?
- 7. Obtener el elemento seleccionado al hacer doble clic en el elemento de vista de lista
- 8. Cómo manejo el evento click en el control Spark List en Flex 4
- 9. Android: establecer lista ver el elemento como "seleccionado" (resaltado)
- 10. Centrado de contenido en Flex 4
- 11. evitar que la vista de lista pierda el elemento seleccionado
- 12. Flex: ¿Hay alguna forma de vincular el elemento seleccionado de ComboBox a una variable?
- 13. Lista desplegable QComboBox - establecer el estilo de elemento seleccionado
- 14. Flex 4 Scroller
- 15. Desplácese hasta Resumen de validación: ASP.NET MVC
- 16. Recorrer hasta algún elemento
- 17. Android: Vista en lista Elemento seleccionado -1
- 18. MVC3 Lista desplegable que no selecciona el elemento seleccionado
- 19. ¿Cómo resaltar el elemento seleccionado en ListView?
- 20. Flex 4: Valor de CSS personalizado
- 21. Representador de elemento personalizado de Flex para el elemento mostrado en el cuadro combinado
- 22. Resalte el elemento seleccionado en "ListFragment"?
- 23. Establecer el elemento desplegable seleccionado MVC
- 24. android listview obtener el elemento seleccionado
- 25. Recuperando el elemento seleccionado de la ruleta?
- 26. ListBox Estilo Elemento seleccionado en el teléfono de Windows
- 27. Cómo dividir una lista de un elemento n hasta el final en python?
- 28. Obteniendo el elemento seleccionado actualmente en QTreeView
- 29. Cómo establecer el elemento seleccionado DropDownList en el marcado?
- 30. Valor seleccionado de la lista desplegable en el evento Selectedindexchanged
Gracias, pero parece funcionar solo en las versiones más recientes de Flex 4 SDK (Flex Builder 4 Beta 2). Me di cuenta de que trabajo con una de las compilaciones antiguas que todavía no tiene este método. –
esto también solo se desplaza para que la parte superior del artículo esté visible, si el elemento es alto, no se desplaza hacia la parte inferior – JTtheGeek
@JTtheGeek Sí, en Spark List 4.6 parece que debe hacer clic dos veces para desplazarse hasta la parte inferior. – Nemi