Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   сотрировка клипов на сцене (http://www.flasher.ru/forum/showthread.php?t=139458)

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

Код AS3:

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

не проверял, но должно работать.

Код AS3:

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 и кнопкой закрыть , разместить их в колонку друг под другом, при нажатие на кнопку "закрыть" удалялся этот Мувиклип, а все остальные Мувиклипы под ним если есть поднимались выше ..

Таким макаром создаю...
Код AS3:

  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);
 
        }

УДаляю
Код AS3:

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

Код AS3:

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
Код AS3:

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)
Код AS3:

        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 минуты
Ну что ни кто не поможет с проблемой из предыдущего поста?


Часовой пояс GMT +4, время: 17:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.