PDA

Просмотр полной версии : Удаление элемента из массива через компонент


Makkssimka
25.05.2013, 17:09
Доброго времени суток! Заранее прошу прощения возможно за глупый вопрос(я в этом деле начинающий), но все же есть основной файл:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

<fx:Script>
<![CDATA[
import flash.net.FileReference;
import flash.net.FileReferenceList;
import flash.utils.ByteArray;

import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;

public var fileRef:FileReferenceList = new FileReferenceList();
public var imgFilter:FileFilter = new FileFilter("Images", "*.jpg;*.jpeg;*.gif;*.png");


public function button1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
fileRef.browse([imgFilter]);
fileRef.addEventListener(Event.SELECT, Foto);
}


public function Foto(event:Event):void{
var files:Array = fileRef.fileList;

for (var i:int = 0; i < files.length; i++) {
var file:FileReference = files[i];
file.addEventListener(Event.COMPLETE, onLoaded);
file.load();
}
}

public function onLoaded(event:Event):void{
var obj:Object = new Object();
obj.number = imgList.length;
obj.img = event.currentTarget.data;
obj.name = event.currentTarget.name;
obj.size = event.currentTarget.size;
imgList.addItem(obj);
var dlinaMass:String = "Количесто фото: "+imgList.length;
dlina.text = dlinaMass;
}



]]>
</fx:Script>


<fx:Declarations>
<!-- Разместить невизуальные элементы (например, службы или объекты значений) -->
<s:ArrayCollection id="imgList"/>
</fx:Declarations>
<s:Panel width="690" height="508" borderVisible="true" horizontalCenter="-19"
title="Загрузка фотографий" verticalCenter="-19">
<s:Button x="347" y="445" label="Добавить фото" click="button1_clickHandler(event)" skinClass="spark.skins.spark.ButtonSkin"/>
<s:List id="fileList" x="10" y="10" width="668" height="409" borderVisible="false"
dataProvider="{imgList}" itemRenderer="imgComp" textAlign="center">
<s:layout>
<s:TileLayout/>
</s:layout>
</s:List>
<s:Label id="dlina" x="10" y="445" width="164" height="21" text="Количество фото: 0"/>

</s:Panel>
</s:Application>


И есть файл компонента:

<?xml version="1.0" encoding="utf-8"?>

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="200" height="200" borderAlpha="0.5" borderColor="#B7BABC" borderStyle="none"
cornerRadius="3" dropShadowVisible="false" horizontalAlign="center" verticalGap="5">
<mx:Canvas id="can" x="5" y="5" width="190" height="190" backgroundColor="#F0EFEF" borderAlpha="0.5"
borderColor="#D7D5D5" borderStyle="solid" contentBackgroundColor="#F1F1F1"
cornerRadius="8" dropShadowVisible="false" textAlign="left">
<mx:Label x="12" y="158" width="127" color="#73A9AA" fontFamily="Verdana"
fontSize="15" text="{data.name}" textAlign="center"/>
<mx:Image x="5" y="5" width="178" height="143" autoLoad="true" horizontalAlign="center"
includeInLayout="true" scaleContent="true" source="{data.img}"
verticalAlign="middle"/>
<mx:Button x="160" y="160" width="25" height="24" chromeColor="#FFFFFF"
cornerRadius="12" focusColor="#FFFFFF"
icon="@Embed('../img/delete-icon.png')"/>

</mx:Canvas>

</mx:VBox>


В компоненте есть кнопка удаления, как с помощью нее удалить элемент из массива <s:ArrayCollection id="imgList"/> и соответственно с экрана?

Добавлено через 21 час 53 минуты
Почему когда я пишу функцию обработки клика в первом файле, а во втором через слушатель клика посредством outerDocument вызываю данную функцию flash builder выдает ошибку: Обращение несуществующего свойства outerDocument?

Добавлено через 22 часа 46 минут
Все сам разобрался, теперь интересует вопрос как в ArrayCollection (в котором находится объекты), найти индекс элемента массива по свойству объекта?