فليكس تيليليست بدء إزاحة ونقر فوق معالج
-
06-07-2019 - |
سؤال
لدي بعض الصور التي أود عرضها في Tilelist في Flex. أبعاد Tilelist هي عمودان بواسطة صفوف N. ما أريد فعله هو عرض العنصر الأول (الصف 1 ، العمود 1) فارغًا وغير قابل للنقر ، والبدء في عرض العناصر الخاصة بي من الصف 1 ، العمود 2. هل هذا ممكن؟
أتساءل أيضًا عندما أقوم بإنشاء حدث النقر لنفس Tilelist ، هل هناك طريقة للحصول على فهرس للعنصر الذي تم النقر عليه؟
شكرا جزيلا لك!
م.
المحلول
سؤال جيد. أنا متأكد من أن شخصًا ما سيقدم حلاً أكثر أناقة ، ولكن قد يكون النهج البسيط ببساطة هو إضافة فارغ إلى بياناتك في الموضع 0 ، ووجود itemrenderer التعامل مع الفارغ من خلال عرض نوع من المحتوى البديل ، أو لا شيء في الكل.
لاستخراج فهرس العنصر الذي تم النقر عليه ، هناك العديد من الخصائص على كائنات LISTEVENT التي قد تستخدمها-Event.CurrentTarget.SelectedIndex (أو Event.CurrentTarget.Selectedices ، إذا كنت تستخدم الاختيار المتعدد) ، Event.ColumnIndex و. RowIndex ، أو Event.ItemRenderer ، والذي يمكنك استخدامه مع خاصية Tilelist's itemrenderertoindex ، من بين أمور أخرى.
فيما يلي رمز تطبيق سريع ودني يوضح كلا هذين النهجين:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.ListEvent;
import mx.collections.ArrayCollection;
private var dpSource:Array = [
null,
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
{src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}
];
[Bindable]
private var dp:ArrayCollection = new ArrayCollection(dpSource);
private function myList_itemClick(event:ListEvent):void
{
Alert.show("You clicked the item at position (" + event.columnIndex + ", " + event.rowIndex + "), which is item " + myList.itemRendererToIndex(event.itemRenderer).toString() + " in the list.");
}
]]>
</mx:Script>
<mx:TileList id="myList" dataProvider="{dp}" itemClick="myList_itemClick(event)">
<mx:itemRenderer>
<mx:Component>
<mx:Canvas>
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
}
]]>
</mx:Script>
<mx:Image source="{data.src}" width="100" height="60" visible="{data != null}" />
<mx:Label text="No item!" visible="{data == null}" />
</mx:Canvas>
</mx:Component>
</mx:itemRenderer>
</mx:TileList>
</mx:Application>
أتمنى أن يساعد! انشر الأسئلة مع الأسئلة إذا كان لديك.