![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Хочу замутить такую штуку -
Есть произвольный мувик прямоугольной формы - накрываю его дубликатами нарисованного прогр.прямогольника по nw штук в ширину и по nh штук в длину/т.е. как бы клетками/. Затем надо организовать разлёт этих мувиков. Для разлёта пишу функцию function raslyt1(targ) { xrand = random(20)-10; yrand = random(20)-10; this.onEnterFrame = function() { targ._xscale += 5; targ._yscale += 5; targ._alpha -= 5; targ._x += xrand; targ._y += yrand; if (targ._alpha<=0) { targ.removeMovieClip(); delete this.onEnterFrame; } }; } Для заполнения пишу функцию, в которую заразом вставляю функцию разлёта function zapolnemie(name, nW, nH, col) { nameDepth = name.getDepth(); nameHeight = name._height; nameWidth = name._width; nameX = name._x; nameY = name._y; nnn = nW*nH; this.createEmptyMovieClip("mmcc", nameDepth+1); with (mmcc) { beginFill(col, 100); moveTo(0, 0); lineTo(nameWidth/nW, 0); lineTo(nameWidth/nW, nameHeight/nH); lineTo(0, nameHeight/nH); lineTo(0, 0); _visible = 0; } for (i=1; i<=nW; i++) { for (j=0; j<nH; j++) { mmcc.duplicateMovieClip("mmcc"+i+nW*j, nameDepth+1+i+nW*j); this["mmcc"+i+nW*j]._x = nameX-nameWidth/2+(i-1)*nameWidth/nW; this["mmcc"+i+nW*j]._y = nameY-nameHeight/2+j*nameHeight/nH; this.raslyt1(this["mmcc"+i+nW*j]);//Вот здесь подлянка } } } Тестю zapolnemie(mc, 4, 4, 0xff0000); Разлетается только последний/16й/ мувик, остальные на месте. Знаю, что так по простому функцию в цикл не засунуть, а вот как - в голову не прёт. Подставьте плечо, плиз. ![]() |
|
|||||
|
алкаголик и придурок
Регистрация: May 2001
Адрес: город-герой лондон
Сообщений: 2,103
|
онентефрейм у тебя для всего свф, не для каждого квадратика
квик фикс function zapolnemie(name, nW, nH, col) { nameDepth = name.getDepth(); nameHeight = name._height; nameWidth = name._width; nameX = name._x; nameY = name._y; nnn = nW*nH; this.createEmptyMovieClip("mmcc", nameDepth+1); with (mmcc) { beginFill(col, 100); moveTo(0, 0); lineTo(nameWidth/nW, 0); lineTo(nameWidth/nW, nameHeight/nH); lineTo(0, nameHeight/nH); lineTo(0, 0); _visible = 0; } for (i=1; i<=nW; i++) { for (j=0; j<nH; j++) { mmcc.duplicateMovieClip("mmcc"+i+nW*j, nameDepth+1+i+nW*j); this["mmcc"+i+nW*j]._x = nameX-nameWidth/2+(i-1)*nameWidth/nW; this["mmcc"+i+nW*j]._y = nameY-nameHeight/2+j*nameHeight/nH; var c = this["mmcc"+i+nW*j]; xrand = random(20)-10; yrand = random(20)-10; c.onEnterFrame = function() { this._xscale += 5; this._yscale += 5; this._alpha -= 5; this._x += xrand; this._y += yrand; if (this._alpha<=0) { this.removeMovieClip();// почему крутится после removeMovieClip если убрать delete? delete this.onEnterFrame; } }; } } } zapolnemie(mc, 4, 4, 0xff0000); ЗЫ: а у меня флаш год назад отобрали злые якобы нилсены, во жизнь ![]() Последний раз редактировалось sts; 20.12.2003 в 08:56. |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Большое конечно спасибо,
Однако фишка была вы том, что бы написать ф.raslyt1(targ) отдельно, а может и несколько функций разлёта/разных/ и по мере необходимости вставлять в ф.zapolnemie(name, nW, nH, col) Как бы вот это выкрутить? ЗЫ.При твоём варианте квадраты разлетаются синхронно, а надо чтоб xrand = random(20)-10; yrand = random(20)-10; были для каждого свои. Но это конечно решаемо.Вопрос всё таки в том, что бы вставлять ф-цию в цикл - мож саму ф.raslyt1(targ) переписать. Я вообще сова, утром туго соображаю, мож к вечеру сам разберусь. ЗЫ.Кто Флэш отбирает, того фэйсом об тэйбл. ![]() |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Сделай мувик/прямоугольный/, обзови его mc
и вставляй в кадр с мувиком код. Поверх мувика должно появится 16 прямоугольн. /красн./ и они должны разлетаться в разные стороны. |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Почему ты никогда не используешь прототипы? С ними же легче прописывать свои свойства и методы для каждого экземпляра мувика.
Вот тебе маленький намек. 2sts Как это у тебя отобрали Flash?
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Влт так примерно:
MovieClip.prototype.acts = function(){
this.onMouseDown = function(){
this.xrand = random(20)-10;
this.yrand = random(20)-10;
this.onEnterFrame = function() {
this._xscale += 5;
this._yscale += 5;
this._alpha -= 5;
this._x += this.xrand;
this._y += this.yrand;
if (this._alpha<=0) {
this.removeMovieClip();// ïî÷åìó êðóòèòñÿ ïîñëå removeMovieClip åñëè óáðàòü delete?
delete this.onEnterFrame;
}
}
};
}
function zapolnemie(name, nW, nH, col) {
nameDepth = name.getDepth();
nameHeight = name._height;
nameWidth = name._width;
nameX = name._x;
nameY = name._y;
nnn = nW*nH;
this.createEmptyMovieClip("mmcc", nameDepth+1);
with (mmcc) {
beginFill(col, 100);
moveTo(0, 0);
lineTo(nameWidth/nW, 0);
lineTo(nameWidth/nW, nameHeight/nH);
lineTo(0, nameHeight/nH);
lineTo(0, 0);
_visible = 0;
}
for (i=1; i<=nW; i++) {
for (j=0; j<nH; j++) {
mmcc.duplicateMovieClip("mmcc"+i+nW*j, nameDepth+1+i+nW*j);
this["mmcc"+i+nW*j]._x = nameX-nameWidth/2+(i-1)*nameWidth/nW;
this["mmcc"+i+nW*j]._y = nameY-nameHeight/2+j*nameHeight/nH;
this["mmcc"+i+nW*j].acts();
}
}
}
zapolnemie(mc, 4, 4, 0xff0000);
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
|
Чё то или я туплю или чего, но мне кажется так:
Берешь, делаешь сколько тебе надо различных функций разлёта: function bomb1(){} function bomb2(){} ..... и т. д. Далее как хочешь, присваиваешь каждому муву по такой функцие. Параметры разлёта к примеру в функцие рандомные пусть будут, и тогда все квадраты по разному летать будут. Ну а как присвоить - легко: eval("my-Movie-Clip"+i).onEntrFrame = bomb1; или для смены соответственно другую всем присваиваешь. Наверное я опять что-то протупил.
__________________
flash/flex/unity |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Цитата:
![]() |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Тогда получай.
mCol = new Array();
mCol[0] = 0xFF0000;
mCol[1] = 0x00FF00;
mCol[2] = 0x0000FF;
mCol[3] = 0xFFFF00;
mCol[4] = 0xFF00FF;
mCol[5] = 0x00FFFF;
mCol[6] = 0x000000;
MovieClip.prototype.acts = function(){
this.onMouseUp = function(){
this.xrand = random(20)-10;
this.yrand = random(20)-10;
this.onEnterFrame = function() {
this._xscale += 5;
this._yscale += 5;
this._x += this.xrand;
this._y += this.yrand;
this._alpha -= 5;
if (this._alpha<=0) {
this.removeMovieClip();
}
}
}
}
function zapolnemie(name, nW, nH, col) {
nameDepth = name.getDepth();
nameHeight = name._height;
nameWidth = name._width;
nameX = name._x;
nameY = name._y;
nnn = nW*nH;
for (i=1; i<=nW; i++) {
for (j=0; j<nH; j++) {
this.createEmptyMovieClip("mmcc"+i+nW*j, nameDepth+1+i+nW*j);
with (_root["mmcc"+i+nW*j]) {
beginFill(col, 100);
moveTo(0, 0);
lineTo(nameWidth/nW, 0);
lineTo(nameWidth/nW, nameHeight/nH);
lineTo(0, nameHeight/nH);
lineTo(0, 0);
this["mmcc"+i+nW*j]._x = nameX-nameWidth/2+(i-1)*nameWidth/nW;
this["mmcc"+i+nW*j]._y = nameY-nameHeight/2+j*nameHeight/nH;
this["mmcc"+i+nW*j].acts();
}
}
}
}
zapolnemie(mc, 4, 4, 0xff0000);
this.onMouseDown = function(){
_root.mc._alpha -= 5;
if(n<=6){n++;}
zapolnemie(mc, 4+n, 4+n, mCol[random(7)]);
if(_root.mc._alpha<=0){
delete zapolnemie;
}
}
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
![]() |
Часовой пояс GMT +4, время: 09:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|