Tôi đang chọn thành phần được chọn trong s: Liệt kê thành phần có Actionscript, nó hoạt động, nhưng Danh sách không cuộn đến mục đã chọn - cần cuộn bằng thanh cuộn hoặc chuột. Có thể tự động cuộn đến mục đã chọn không? Cảm ơn !Di chuyển đến mục đã chọn trong thành phần Danh sách Spark 4
Trả lời
Thử s:List
phương pháp ensureIndexIsVisible(index:int):void.
Trong flex-3 có một phương pháp scrollToIndex
và do đó bạn có thể gọi
list.scrollToIndex(list.selectedIndex);
Tôi tin rằng điều này sẽ làm việc trong flex-4 quá.
Thật không may, không có. Không có phương pháp như vậy trong Danh sách Spark, nhưng nó có cho thành phần Danh sách Halo. Flex 4 đang phát triển và vẫn đang trong giai đoạn Beta, hy vọng vấn đề này sẽ được giải quyết. –
Bạn có lẽ sẽ muốn truy cập scroller của Danh sách trực tiếp và làm điều gì đó như:
list.scroller.scrollRect.y = list.itemRenderer.height * index;
Tôi thấy rằng bạn không thể thay đổi giá trị bên trong scrollRect trực tiếp, thay vào đó bạn cần cập nhật scrollRect bằng hình chữ nhật mới?như [this] (http://www.actionscript.org/forums/showthread.php3?t=190795) – eldamar
Bạn có thể nhân chiều cao của một phần tử bằng chỉ số của nó và vượt qua giá trị này:
yourListID.scroller.viewport.verticalScrollPosition
Gần đây tôi đã thực hiện điều này trong một trong những dự án của tôi bằng cách có kích thước xác định cho chi của tôi trong nhóm ..
<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>
Tiếp theo tôi đây các nút điều khiển cho các thao tác làm việc bằng cách tăng một "targetindex" private biến, sau đó tôi gọi một hàm checkAnimation, mà sử dụng lớp Animate, trong combo với một SimpleMotionPath và so sánh giữa tutpane.firstIndexInView và targ et index. Điều này đã sửa đổi "horizontalScrollPosition" của nhóm.
Điều này cho phép điều khiển riêng biệt để về cơ bản đóng vai trò như một thanh cuộn, nhưng tôi đã yêu cầu trượt điều khiển để xem các sản phẩm được chọn .. Tôi tin rằng kỹ thuật này có thể làm việc để lựa chọn tự động các mặt hàng cũng
Đối Spark:
list.ensureIndexIsVisible(index);
tôi thấy ý tưởng cơ bản này ở đây ... 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();
}
Chức năng này sẽ cuộn lên đầu danh sách trong Flex 4+. Nó có tính đến chiều cao của mục, vì vậy nó sẽ làm việc cho các danh sách với các mục khác nhau với chiều cao khác nhau.
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);
}
Phiên bản ngắn hơn: 'callLater (list.ensureIndexIsVisible, [list.selectedIndex])' nhưng vẫn không phải là giải pháp tốt nhất - đôi khi chỉ ra các lỗi phạm vi –
này đã làm việc cho tôi. đã phải sử dụng callLater.
list.selectedItem = "MyTestItem"; //or list.selectedIndex = 10;
this.callLater(updateIndex); //dispatch an update to list
private function updateIndex():void {
list.ensureIndexIsVisible(list.selectedIndex);
}
Đây là một lỗi - bạn có thể thấy các cuộc biểu tình và một workaround tại https://issues.apache.org/jira/browse/FLEX-33660
mở rộng Danh sách thành phần tùy chỉnh này đã làm việc cho tôi:
<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. Mục danh sách di chuyển jQuery đến cuối danh sách
- 2. Di chuyển một mục trong danh sách?
- 3. Danh sáchXem cuộn đến mục đã chọn
- 4. Tự động hóa thành phần văn bản spark Mobile spark
- 5. Chọn nhiều thành phần từ danh sách
- 6. Danh sách thả xuống MVC3 không chọn mục đã chọn
- 7. Làm cách nào để xử lý sự kiện nhấp trong điều khiển Danh sách Spark trong Flex 4
- 8. Chọn mục Hộp văn bản trong Hộp danh sách không thay đổi mục đã chọn của hộp danh sách
- 9. Xóa danh sách các mục đã chọn trong QListView
- 10. Di chuyển các mục trong Danh sách kép
- 11. Các thành phần trong danh sách
- 12. UITableView Di chuyển đến phần
- 13. Mục đã chọn bị mất kiểu khi tiêu điểm được di chuyển trong Hộp danh sách WPF
- 14. C# Mục di chuyển Combobox ở cuối danh sách
- 15. Android: đặt mục danh sách được xem theo chương trình thành trạng thái đã chọn
- 16. chuyển đổi danh sách phẳng thành danh sách trong python
- 17. Di chuyển các phần tử Python giữa các danh sách
- 18. Android: Danh sách Xem mục đã chọn -1
- 19. Xóa các mục đã chọn khỏi hộp danh sách
- 20. Bảng điều khiển thành phần Flex 4 Spark - Ẩn thanh tiêu đề
- 21. chuyển đổi danh sách chuỗi thành danh sách số nguyên
- 22. Chuyển đổi danh sách một mục thành số nguyên
- 23. danh sách python Paging trong lát 4 mục
- 24. Làm cách nào để di chuyển các mục trong danh sách?
- 25. Đặt mục đã chọn trong danh sách chọn dựa trên giá trị mẫu
- 26. Chuyển đổi danh sách các danh sách thành danh sách các số nguyên
- 27. Chuyển tuple thành Danh sách mục đầu tiên
- 28. Chuyển danh sách danh sách phức tạp thành danh sách khung dữ liệu
- 29. Di chuột để chọn mục trong hộp danh sách trong WPF
- 30. Di chuyển một dữ liệu danh sách mảng sang một danh sách mảng khác trong C#
Cảm ơn, nhưng có vẻ như chỉ hoạt động trong phiên bản Flex 4 SDK mới nhất (Flex Builder 4 Beta 2). Tôi nhận ra rằng tôi làm việc với một trong những bản dựng cũ chưa có phương pháp này. –
điều này cũng chỉ cuộn để phần trên cùng của mục hiển thị, nếu mục đó cao thì không cuộn xuống dưới cùng – JTtheGeek
@JTtheGeek Có, trong Danh sách Spark 4.6 có vẻ như bạn phải bấm hai lần để cuộn xuống dưới. – Nemi