Просмотр полной версии : Опять синтаксис.Функция в цикле.
Хочу замутить такую штуку -
Есть произвольный мувик прямоугольной формы - накрываю его
дубликатами нарисованного прогр.прямогольника
по 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й/ мувик, остальные на месте.
Знаю, что так по простому функцию в цикл не засунуть,
а вот как - в голову не прёт.
Подставьте плечо, плиз. ;)
онентефрейм у тебя для всего свф, не для каждого квадратика
квик фикс
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);
ЗЫ: а у меня флаш год назад отобрали злые якобы нилсены, во жизнь :eek:
Большое конечно спасибо,
Однако фишка была вы том, что бы написать ф.raslyt1(targ) отдельно, а может и несколько функций разлёта/разных/ и по мере необходимости вставлять в ф.zapolnemie(name, nW, nH,
col)
Как бы вот это выкрутить?
ЗЫ.При твоём варианте квадраты разлетаются синхронно,
а надо чтоб
xrand = random(20)-10;
yrand = random(20)-10;
были для каждого свои. :p Но это конечно решаемо.
Вопрос всё таки в том, что бы вставлять ф-цию в цикл -
мож саму ф.raslyt1(targ) переписать.
Я вообще сова, утром туго соображаю, мож к вечеру сам разберусь.
ЗЫ.Кто Флэш отбирает, того фэйсом об тэйбл. :D
Пушистик
20.12.2003, 14:47
вставляю ваше коды и пусто.....:)
чё должно появится?:)
дайте рабочий пример:)
Сделай мувик/прямоугольный/, обзови его mc
и вставляй в кадр с мувиком код.
Поверх мувика должно появится 16 прямоугольн. /красн./
и они должны разлетаться в разные стороны.
sergwizard
20.12.2003, 15:38
Почему ты никогда не используешь прототипы? С ними же легче прописывать свои свойства и методы для каждого экземпляра мувика.
Вот тебе маленький намек.
2sts Как это у тебя отобрали Flash?
sergwizard
20.12.2003, 15:52
Влт так примерно:
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);
Чё то или я туплю или чего, но мне кажется так:
Берешь, делаешь сколько тебе надо различных функций разлёта:
function bomb1(){}
function bomb2(){}
.....
и т. д.
Далее как хочешь, присваиваешь каждому муву по такой функцие. Параметры разлёта к примеру в функцие рандомные пусть будут, и тогда все квадраты по разному летать будут. Ну а как присвоить - легко:
eval("my-Movie-Clip"+i).onEntrFrame = bomb1;
или для смены соответственно другую всем присваиваешь.
Наверное я опять что-то протупил.
Оригинал написал(а) sergwizard
Почему ты никогда не используешь прототипы? С ними же легче прописывать свои свойства и методы для каждого экземпляра мувика.
Нормальные герои всегда идут в обход :D
sergwizard
20.12.2003, 17:43
Тогда получай. :)
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;
}
}
sergwizard
перестали на работе использовать :(
sergwizard
21.12.2003, 04:50
2 sts
Вот, гады какие! Но, все равно, это не так страшно. Я-то подумал, что пришли злые дядьки и отобрали нелицензионный Flash, да еще и оштрафовали на кругленькую сумму.
2Штрек.
Вот тебе еще одна штучка на эту же тему.
Оригинал написал(а) sergwizard
2Штрек.
Вот тебе еще одна штучка на эту же тему.
Какие отзывчивые и внимательные люди встречаются
Флэшере. Аж слёзы на глаза наворачиваются. :D
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.