PDA

Просмотр полной версии : сотрировка клипов на сцене


Ckazkatmn
01.05.2010, 18:48
Есть МувиКлипы созданные дuномически друг под другом (высото 100px и отступ между ними 10 px)с кнопкой Закрыть каждый.
Клип1
Клип2
клип3
клип4
на кнопку закрыть удаляю выбраный клип(к примеру 2) (removeChild(Клип2) )
на сцене остаються пустое место .. как мне поднять все остальные клипы что-бы были друг по другом ?

Crenth
01.05.2010, 19:30
дайте код, которым создаете мувики

Ckazkatmn
01.05.2010, 20:35
creat.addEventListener(MouseEvent.CLICK, creat_f);
var kol:int=5;

var MyclipArray:Array = new Array();

function creat_f(event:Event):void
{
for (var i:Number =0; i<kol; i++) {
MyclipArray[i] = new Myclip;
addChild(MyclipArray[i]);
MyclipArray[i].y=100*i;
MyclipArray[i].name = i;
MyclipArray[i].close.addEventListener(MouseEvent.CLICK,del);
}
}
function del(e:Event){
removeChild(MyclipArray[e.target.parent.name]);
}

mikhailk
01.05.2010, 21:55
не проверял, но должно работать.

creat.addEventListener(MouseEvent.CLICK, creat_f);
var kol:int=5;

var MyclipArray:Array = new Array();

function creat_f(event:Event):void
{
for (var i:int=0; i<kol; i++) {
MyclipArray[i] = new Myclip;
addChild(MyclipArray[i]);
MyclipArray[i].y=100*i;
MyclipArray[i].name = i;
MyclipArray[i].close.addEventListener(MouseEvent.CLICK,del);
}
}
function del(e:Event){
removeChild(MyclipArray[int(e.target.parent.name)]);
refreshMyclip(int(e.target.parent.name));
}

function refreshMyclip(itemIndex) {
MyclipArray.splice(itemIndex, 1);
if (kol>1) {
kol--;
for (var i:int=0; i<kol; i++) {
MyclipArray[i].name = i;
MyclipArray[i].y=100*i;
}
}
}

Ckazkatmn
01.05.2010, 22:55
Так ни чего и не получается...
Задача состоит чтобы создать Мувиклипы с дополнительными параметрами(свойствами) типа String и кнопкой закрыть , разместить их в колонку друг под другом, при нажатие на кнопку "закрыть" удалялся этот Мувиклип, а все остальные Мувиклипы под ним если есть поднимались выше ..

Таким макаром создаю...
var MyclipArray:Array = new Array;
function creat_f1(id:int,Param1:String,Param2:String):void
{
var nom:int = MyclipArray.length;
MyclipArray.push(new Myclip());
MyclipArray[nom].id = nom; //???????????
MyclipArray[nom].param1 = Param1;
MyclipArray[nom].y = 100*nom;
addChild(MyclipArray[nom]);
MyclipArray[nom].close.addEventListener(MouseEvent.CLICK,del);

}
УДаляю
function del(event:Event){
var i:int = Myclip(event.target.parent).id;
trace("Обработка кнопки удалить my id "+i);
// trace("Обработка кнопки удалить " + MyclipArray[i].param1);
// trace(event.target.name);
removeChild(MyclipArray[event.target.parent.id]);
refreshMyclip(int(event.target.parent.id));
}

и сортирую по методу mikhailk и после этого меняються индексы массива куча проблем ...

incvizitor
02.05.2010, 10:56
var MyclipArray:Array = new Array;
function creat_f1(id:int,Param1:String,Param2:String):void
{
var nom:int = MyclipArray.length;
MyclipArray.push(new Myclip());
MyclipArray[nom].param1 = Param1;
MyclipArray[nom].y = 100*nom;
addChild(MyclipArray[nom]);
MyclipArray[nom].close.addEventListener(MouseEvent.CLICK,del);
}

function del(event:Event){
var i:uint=MyclipArray.indexOf(event.target.parent);
removeChild(MyclipArray[i]);
for(var j:uint=i+1; i<MyclipArray.length; i++){
MyclipArray[j].y-=100;
MyclipArray[j-1]=MyclipArray[j];
}
MyclipArray.length--;
}

Ckazkatmn
02.05.2010, 18:03
решил проблему ...
при создание мувиклипа указал свойство name
function del(event:Event){
var i:uint=MyclipArray.indexOf(event.target.parent);
var g:String = event.target.parent.name;

trace("Имя удаляемого обьекта "+g);
trace("Индекс "+i);
removeChild(getChildByName(g));
MyclipArray.splice(i, 1);
for(var j:int=0; j<MyclipArray.length; j++){
MyclipArray[j].y =100*j;
}

Добавлено через 8 часов 0 минут
Подскажите как удалить мувиклип...
(circle типа мувиклип) в нем (panelka типа Scrollbar)
var Box:Sprite = new Sprite;
MyclipArray.push(new Myclip());
MyclipArray[nom].name = id;
Box.addChild(MyclipArray[nom]);
MyclipArray[nom].close.addEventListener(MouseEvent.CLICK,del);
circle.panelka.source=Box;

function del(event:Event){
var g:String = event.target.parent.name;//Имя определяет верно
// circle.panelka.Box.removeChild(getChildByName(g)); //Не удаляет
circle.panelka.Box.removeChild(event.target.parent); //и так не удаляет
// circle.panelka.removeChild(event.target.parent); //и так не удаляет
}
Попутно второй вопрос: На мувик circle стоит обработчик start и stopDrap(перетаскивание).как сделать что бы перетаскивание происходило именно при нажатие на сам мувик circle, а на остальные клипы внутри него отключить ?

Добавлено через 19 часов 34 минуты
Ну что ни кто не поможет с проблемой из предыдущего поста?