Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Удаление клипов (http://www.flasher.ru/forum/showthread.php?t=95537)

Djonnik 08.05.2007 02:23

Удаление клипов
 
Доброе время суток !

Подскажите плиз как рендомно удалить клип.

То есть на сцене есть допустим 10 рэндомно аттачиных клипов.
По клику мыши onMouseDown аттачится еще один клип...
Нужно в этот момент удалить другой клип.

Вобщем по принципу: один появился, другой исчез...

Заранее благодарен Всем откликнувшимся...

this.create 08.05.2007 02:50

Поместите ссылки на все мувики в массив, при аттаче нового мувика добавляйте ссылку на него в массив, затем удаляйте мувиклип ссылка на который хранится в первом элементе массива, после удаляйте первый элемент массива со сдвигом.
Код:

var ar:Array=['a','b','c']
ar.push('d')
ar.shift()
trace(ar)

Если хотите удалить случайный элемент массива( shift удаляет первый), то, пожалуйста, метод splice
Код:

var ar:Array = ['a', 'b', 'c'];
var a:Number = 1;
ar.push('d');
ar.splice(a, 1);
trace(ar);

, где а случайное число, но не больше длины массива -1.

Djonnik 08.05.2007 03:22

не получается ...
я правда немного не так написал..
вот код...
Код:

var nebo:Array =["st1","st2","st3","st4","st5","st6","st7","st8","st9","st10"];
for(i=0;i<10;i++){
attachMovie("st","st"+i, i,{_x:1+Math.random()*500,_y:1+Math.random()*400})
nebo[i]=this["st"+i];
}

onMouseDown=function(){
        nebo.push("st"+i);
attachMovie("st","st"+i,++i,{_x:1+Math.random()*500,_y:1+Math.random()*400})
_root["st"+i].gotoAndStop (Math.round(Math.random()*2));
nebo.shift(0);
trace(["st"+i]);
}


this.create 08.05.2007 03:36

Код:

var nebo:Array = [];
for (i=0; i<10; i++) {
    attachMovie("st", "st"+i, i, {_x:1+Math.random()*500, _y:1+Math.random()*400});
    nebo[i] = this["st"+i];
}
trace(nebo);
onMouseDown = function () {
    nebo.push(this["st"+i]);
    attachMovie("st", "st"+i, ++i, {_x:1+Math.random()*500, _y:1+Math.random()*400});
    _root["st"+i].gotoAndStop(Math.round(Math.random()*2));
    nebo[0].removeMovieClip();
    nebo.shift();
    trace(["st"+i]);
};

Но что-то код ваш мне не очень нравится...
Вот мой вариант, но получилось достаточно сложно. И проверить как следует не успел (уже спать хочу), так что на ваш страх и риск используйте.
Код:

var nebo:Array = [];
for (i=0; i<10; i++) {
        var mc:MovieClip = this.attachMovie("st", "st"+i, this.getNextHighestDepth(), {_x:1+Math.random()*500, _y:1+Math.random()*400});
        nebo[i] = mc;
        mc.onPress = function():Void  {
                pressFc();
        };
}
var count:Number = i;
//
function pressFc():Void {
        count == 100 ? count=0 : count++;
        var mc:MovieClip = this.attachMovie("st", "st"+count, this.getNextHighestDepth(), {_x:1+Math.random()*500, _y:1+Math.random()*400});
        mc.onPress = function():Void  {
                pressFc();
        };
        nebo.push(mc);
        this.gotoAndStop(Math.round(Math.random()*2));
        nebo[0].removeMovieClip();
        nebo.shift();
}


CorC 08.05.2007 10:15

Да, но видимо нужно кликать на сцену, а не на клипы, потому надо mouseDown, а не onPress.
2автор Неработало потому что вы сначала пытались в массив запехать ссылку на клип, а потом уже клип создавали.


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

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