PDA

Просмотр полной версии : Удаление объекта из другого компонента, созданного программно


MyChemic
27.05.2008, 16:52
Добрый день, столкнулся с трудностью. Есть в руте следующая конструкция:


...
<Script>
...
private function initApp();void{
ml.addEventListener("removeCH", remChild);
dataFrame.addItem({image:"pic.jpg"});
myList.dataProvider = dataFrame;
}

private function remChild():void{
/* здесь надо подсветить элемент из канваса обычным увеличением альфы. Допустим я нажал на баттон во втором итеме в горизонталлисте, соответственно надо подсветить из канваса элемент, который в нем был создан вторым по порядку.*/

place["img"+ml.selectedIndex].alpha = 1;

/* что-то вроде того, то есть во втором ас я мог обращаться к элементу, как к массиву, но данная конструкция не работает*/
}

private function make():void{
var img:Image = new Image();
img.source="somepic.jpg";
img.name = String("img"+int(ml.length-1));
img.alpha = .5;
place.addChild(img);
}
...
</Script>
<Canvas id="place">
<Button click="{make();}"/>
<mx:ArrayCollection id="dataFrame"/>
<HorizontalList id="ml" itemRender="myIR"/>


здесь все ок. Мой компонент myIR содержит кнопку, при нажатии на нее я хочу подсветить элемент из канваса, который был создан вместе с созданием очередного чайлда в горизонталлисте. То есть, когда я нажимаю мой Button, я добавляю новый элемент в горизонтал лист и здесь же в канвас добавляю новый элемент на основе myIR. Хочу связать вместе и child из horizontallist и child из canvas.

мой myIR сомпонент имеет след. структуру на основе канваса

myIR.mxml

...
<Script>
private function deleteItem();void{
dispatchEvent(new Event("removeCH", true, true));
}
</Script>
<Button click="{deleteItem();}">
...

MyChemic
27.05.2008, 17:25
немного подумав решил упростить код, но смысл от этого не меняется. Задача остается той же:


Делаю картинки в канвасе
<mx:Canvas id="place"/ width="100%" height="100% "/>
for (var i:uint=0; i<3; i++){
var img:Image = new Image();
img.source = 'pic.jpg';
img.alpha = .5;
img.x = i*20;
place.addChild(img);
}

отлично.

далее есть кнопка, которая ждет события click
<mx:Button click="select( 3);"/>

private function select(i:Number) :void{
// здесь надо подсветить картинку, зная только индекса создания
place[i].alpha = 1; // здесь не знаю что писать
}

MyChemic
27.05.2008, 18:56
решение getChildAt();
можно закрывать