PDA

Просмотр полной версии : Удаление и создание новых объектов!


noode
03.01.2009, 23:00
Вобщем, так как начал только осваивать Flash ...
у меян дан мувиклип, мне нужно чтобы при загрузке создавалось N количество такого мувика, и при выходе за границы или при нажатии на него клип удалялся и собственно потом опять создавался!

amexdesign
04.01.2009, 03:25
для начала темы для изучения:
1. createEmptyMovieClip()
2. removeMovieClip()
3. создание массивов по принцыпу: for(i=0; i<10; i++)
когда будут ясны основные принципы, можно поговорить и о программировании

успехов

Zik.
04.01.2009, 11:07
а помоему место createEmptyMovieClip() лучше использовать attachMovie() или duplicateMovieClip().

noode
04.01.2009, 11:28
спасибо буду осваивать!

но чтоб не создавать другую тему, у меян появилась еще одна проблема!
У меня происходит действие с помощью похожей функции которую я описывал вам выше(тема поста), при этом мне нужно заменить курсор! при замене, получается так что курсор слоем ниже, чем клип который дублируется!
как осуществить то, что бы курсор был высшим слоем(хотя на в слоях он вверху)

dimarik
04.01.2009, 15:06
Тко татой эээ... "меян"?

amexdesign
04.01.2009, 15:47
У меня происходит действие с помощью похожей функции которую я описывал вам выше(тема поста), при этом мне нужно заменить курсор! при замене, получается так что курсор слоем ниже, чем клип который дублируется!
как осуществить то, что бы курсор был высшим слоем(хотя на в слоях он вверху)
вопрос. графика нового курсора лежит на рабочем столе или закидывается с помощью attachMovie()?

dimarik
04.01.2009, 16:12
cursor.swapDepths(0x7EFFBFEF);

noode
04.01.2009, 16:35
на рабочем столе

amexdesign
04.01.2009, 18:53
mc.swapDepths(1);
duplicateMovieClip("mc", "mc_new", 2);
cursor.swapDepths(3);

noode
04.01.2009, 19:04
что то 0 рекции, простой курсор и все(

dimarik
04.01.2009, 20:40
Выкладывайте Вашу нетленку. Будем разбираться.

KiL33
04.01.2009, 21:05
dimarik, а как это понять cursor.swapDepths(0x7EFFBFEF);
Это в смысле выше указанного цвета?))

noode
04.01.2009, 21:15
вот...

amexdesign
04.01.2009, 21:47
пожалуста...

noode
04.01.2009, 22:31
Спасибо огромное, я запутался вот с этим .swapDepths так толком и непонял что оно делает!

amexdesign
05.01.2009, 00:41
пожалуйста... swapDepths указывает на глубину слоя

dimarik
05.01.2009, 15:36
dimarik, а как это понять cursor.swapDepths(0x7EFFBFEF);
Это в смысле выше указанного цвета?))

Это наивысшая глубина, на которой еще можно удалить экземпляр MovieClip'a методом MovieClip.removeMovieClip(). Вы же согласитесь с тем, что курсор должен находиться выше любого контента, а не на глубине, простите,

cursor.swapDepths(3);

Глубина дана как hex. Число 2130690031 выглядит менее читабельно =)

Добавлено через 5 минут
пожалуйста... swapDepths указывает на глубину слоя

Почти правильно. Из хелпа:


swapDepths (MovieClip.swapDepths method)
public swapDepths(target:Object) : Void

Parameters
target:Object - This parameter can take one of two forms:

- A Number that specifies the depth level where the movie clip is to be placed.
- An instance name that specifies the movie clip instance whose depth is swapped with the movie clip for which the method is being applied. Both movie clips must have the same parent movie clip.

noode
06.01.2009, 01:47
При повтороном проигрывании мувиклипа, через кнопку... остается отпечаток курсора и появляется новый...
короче ппц че получается(

dimarik
06.01.2009, 17:30
Поделитесь исходничком, не стесняйтесь.

noode
08.01.2009, 02:03
вобщем с курсором попробую разобраться позже, прошу вас помочь мне разобраться с фунуцией.... я долго сидел мучился... но не смог...
у меня в файле функция которая создает объект и потом его удаляет и двигает.. вобщем увидите как скачаете...
проблема состоит в том: как сделать чтобы двигался еще второй объект, в проэкте в библиотеке лежит мувиклип...
помогите пож!

gloomyBrain
08.01.2009, 07:04
2 dimarik
cursor.swapDepths(0x7EFFBFEF);
... это сильно
Вы глубину наизусть знаете? А если сразу после этого написать
this.createEmptyMovieClip("blah-blah", this.getNextHighest Depth())
- получается - мы создадим такой мувик, который сами же не сможем удалить?

отличный метод

ПРОЩЕ:
1)создать мувик для всего КРОМЕ курсора
2)создать мувик ДЛЯ курсора

при необходимости пихать новые объекты на наивысший слой в 1)-ом мувике

dimarik
09.01.2009, 21:56
2 dimarik
cursor.swapDepths(0x7EFFBFEF);
... это сильно
Вы глубину наизусть знаете? А если сразу после этого написать
this.createEmptyMovieClip("blah-blah", this.getNextHighest Depth())
- получается - мы создадим такой мувик, который сами же не сможем удалить?

Да, не сможете удалить на глубине 0x7EFFBFEF + 1.

DarkLight
09.01.2009, 22:17
Да, не сможете удалить на глубине 0x7EFFBFEF + 1.
Ну напрямую не сможем, а swapDepths сделать и потом удалить - вполне успешно.

AlexCooper
09.01.2009, 22:26
разместить слой с курсором выше чем дублируемые клипы. (Если конечно дубликация идёт из не подгружаемого клипа) иначе два контейнера и в верхнем (по относительно глубины) размещать курсор а в нижнем вести дубликацию

noode
09.01.2009, 23:17
помогите сделать такое же движение на этой же прямой тольколько второго объекта...
у меня не получается(((
все в проэкте!

dimarik
10.01.2009, 01:57
Ну напрямую не сможем, а swapDepths сделать и потом удалить - вполне успешно.

Естесственно

AlexCooper
10.01.2009, 02:47
2 noode:
Я не понял что Вам именно нужно но вот что поменял я
function newBalloon() {
// Определяем, могут ли появиться новые шары
if (nextBalloon < numBalloons) {

// Проверяем, пришло ли достаточно времени после появления последнего шара
if (getTimer() > nextBalloonTime) {

objN=Math.floor(Math.random()*2)+1;

// Создаем новый шар
attachMovie("f"+objN, "f"+nextBalloon, nextBalloon);

// Выбираем, с какой стороны и с какой скоростью полетит шар


_root["f"+nextBalloon].m=Math.floor(Math.random()*2);

if (_root["f"+nextBalloon].m==1)
{
_root["f"+nextBalloon]._x = 580;
dx = -10;
r = -1;
}
else
{
_root["f"+nextBalloon]._x = 0;
dx = 10;
r = 1;
}




// choose height of balloon
_root["f"+nextBalloon]._y =197.6;
_root["f"+nextBalloon].r=r;

// add balloon to array
balloons.push({clip: "f"+nextBalloon, d: dx});

// set things up for next balloon
nextBalloon++;
nextBalloonTime = getTimer() + 1000;


}
} else _root.stopFF=true;
}

function moveBalloons() {
// loop through balloons in array
for(i=balloons.length-1;i>=0;i--) {

// get speed and clip
dx = balloons[i].d;
f = _root[balloons[i].clip];

// move balloon
f._x += dx;
f._rotation+=(f.r*10);
f._y = 224-(f._height/2);

// balloon exit left
if ((dx < 0) and (f._x < -20) || (f._x> 600)) {
f.removeMovieClip();
balloons.splice(i,1);

}
}
// see whether all balloons gone
if ((nextBalloon >= numBalloons) and (balloons.length < 1)) {
gotoAndStop("game over");
if (_root.stopFF==true) delete _root.moveBG;
}
}

noode
10.01.2009, 02:56
спасибо, буду разбираться...
почти ничего непонятно!