Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.12.2003, 05:03
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 1  
Штрек

Регистрация: 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й/ мувик, остальные на месте.
Знаю, что так по простому функцию в цикл не засунуть,
а вот как - в голову не прёт.
Подставьте плечо, плиз.

Старый 20.12.2003, 08:54
sts вне форума Посмотреть профиль Отправить личное сообщение для sts Найти все сообщения от sts
  № 2  
sts
алкаголик и придурок
 
Аватар для sts

Регистрация: 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.
Старый 20.12.2003, 13:30
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 3  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Большое конечно спасибо,
Однако фишка была вы том, что бы написать ф.raslyt1(targ) отдельно, а может и несколько функций разлёта/разных/ и по мере необходимости вставлять в ф.zapolnemie(name, nW, nH,
col)
Как бы вот это выкрутить?
ЗЫ.При твоём варианте квадраты разлетаются синхронно,
а надо чтоб
xrand = random(20)-10;
yrand = random(20)-10;
были для каждого свои. Но это конечно решаемо.
Вопрос всё таки в том, что бы вставлять ф-цию в цикл -
мож саму ф.raslyt1(targ) переписать.
Я вообще сова, утром туго соображаю, мож к вечеру сам разберусь.
ЗЫ.Кто Флэш отбирает, того фэйсом об тэйбл.

Старый 20.12.2003, 14:47
Пушистик вне форума Посмотреть профиль Отправить личное сообщение для Пушистик Посетить домашнюю страницу Пушистик Найти все сообщения от Пушистик
  № 4  
Пушистик
Bumble Bee
[+1 05.07.06]
 
Аватар для Пушистик

Регистрация: May 2003
Адрес: Третья планета от Солнца
Сообщений: 1,254
Отправить сообщение для Пушистик с помощью ICQ
вставляю ваше коды и пусто.....
чё должно появится?
дайте рабочий пример
__________________
Portfolio

Старый 20.12.2003, 15:14
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 5  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Сделай мувик/прямоугольный/, обзови его mc
и вставляй в кадр с мувиком код.
Поверх мувика должно появится 16 прямоугольн. /красн./
и они должны разлетаться в разные стороны.

Старый 20.12.2003, 15:38
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 6  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Почему ты никогда не используешь прототипы? С ними же легче прописывать свои свойства и методы для каждого экземпляра мувика.
Вот тебе маленький намек.

2sts Как это у тебя отобрали Flash?
Вложения
Тип файла: zip 4shtrek.zip (2.7 Кб, 104 просмотров)
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 20.12.2003, 15:52
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 7  
sergwizard
 
Аватар для sergwizard

Регистрация: 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)

Старый 20.12.2003, 15:52
nuran вне форума Посмотреть профиль Отправить личное сообщение для nuran Найти все сообщения от nuran
  № 8  
nuran

Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
Чё то или я туплю или чего, но мне кажется так:
Берешь, делаешь сколько тебе надо различных функций разлёта:

function bomb1(){}
function bomb2(){}
.....
и т. д.

Далее как хочешь, присваиваешь каждому муву по такой функцие. Параметры разлёта к примеру в функцие рандомные пусть будут, и тогда все квадраты по разному летать будут. Ну а как присвоить - легко:

eval("my-Movie-Clip"+i).onEntrFrame = bomb1;
или для смены соответственно другую всем присваиваешь.

Наверное я опять что-то протупил.
__________________
flash/flex/unity

Старый 20.12.2003, 16:35
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 9  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Цитата:
Оригинал написал(а) sergwizard
Почему ты никогда не используешь прототипы? С ними же легче прописывать свои свойства и методы для каждого экземпляра мувика.
Нормальные герои всегда идут в обход

Старый 20.12.2003, 17:43
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 10  
sergwizard
 
Аватар для sergwizard

Регистрация: 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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