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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.11.2006, 01:28
O'Fox вне форума Посмотреть профиль Отправить личное сообщение для O'Fox Найти все сообщения от O'Fox
  № 1  
Ответить с цитированием
O'Fox
 
Аватар для O'Fox

Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
По умолчанию опять про подгрузку мувика

привет... у меня непонятный трабл..
есть две флэшки(first.swf и second.swf), в одной
есть мувик... в нем шагает человечек...
этот клип множится посредством следующего кода:
Код:
this.onLoad = function() {
		for (i=0; i<3; i++) {
		duplicateMovieClip("mc1", "mc1"+i, i);
	}
};
проверяем: - все работает. шагают 4 человечика.

теперь во второй флешке (second.swf) создаю пустой мувик и подгружаю в него первую флэшку:
Код:
this.mc2.loadMovie("first.swf");
проверяем, работает...но.... человечек остался только один...
то есть дубликаты клипа гдето потерялись.....
по идеи подгружаться должно ВСЁ содержимое first.swf.....
однако этого не происходит...
ссылки менял и на относительные и на асолютные... не помогло...

в Чем дело и как исправить?

Спасибо за внимание!
__________________
Блинчозафигняопятьзапалпробел!!!

Старый 18.11.2006, 02:59
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 2  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
pr004.rar
Вроде все нормально грузится.

К чему onLoad относится то?


Последний раз редактировалось pkfun; 18.11.2006 в 03:15.
Старый 18.11.2006, 13:51
O'Fox вне форума Посмотреть профиль Отправить личное сообщение для O'Fox Найти все сообщения от O'Fox
  № 3  
Ответить с цитированием
O'Fox
 
Аватар для O'Fox

Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
исходники
Вложения
Тип файла: rar 1_2.rar (11.0 Кб, 34 просмотров)
__________________
Блинчозафигняопятьзапалпробел!!!

Старый 18.11.2006, 16:38
O'Fox вне форума Посмотреть профиль Отправить личное сообщение для O'Fox Найти все сообщения от O'Fox
  № 4  
Ответить с цитированием
O'Fox
 
Аватар для O'Fox

Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
Вроде разобрался...
оказывается при подрузке в мувик из другой флешки прередается ее содержимое, а не оболочка... на эту мысл меня навело то обстоятельство, что при подгрузке цвет фона остается без изменения, скрипт "размножения" был у меня в корне... как бы в оболочке флешки, после того как я создал еще один мувик и все скрипты с мувиками засадил в него, все стало работать как надо...


спасибо за помощь
Вложения
Тип файла: rar 1_2_.rar (2.5 Кб, 34 просмотров)
__________________
Блинчозафигняопятьзапалпробел!!!

Старый 18.11.2006, 17:39
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 5  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
1_2.rar



Последний раз редактировалось pkfun; 18.11.2006 в 18:15.
Старый 19.11.2006, 22:55
O'Fox вне форума Посмотреть профиль Отправить личное сообщение для O'Fox Найти все сообщения от O'Fox
  № 6  
Ответить с цитированием
O'Fox
 
Аватар для O'Fox

Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
прикольно... но чет больно сложно...буду разбираться
__________________
Блинчозафигняопятьзапалпробел!!!

Старый 20.11.2006, 01:19
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 7  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
Код:
var mn:MovieClip = this;
var inter:Number = 0;
var i:Number = 0;
//
function createNew():Void {
	mc = mn.attachMovie('mc_main', 'mc_main'+i, mn.getNextHighestDepth(), {_y:rand(90, 110), _alpha:rand(30, 100), _rotation:rand(-50, 50)});
	mc._xscale = mc._yscale=rand(20, 150);
	trace(mc._width);
	trace(mc._x=Math.round((355/2)-(mc._width/2)));
}
//
function timeCr():Void {
	i == 10 ? i=0 : i++;
	createNew();
	mc.onEnterFrame = function():Void  {
		if (this._currentframe == this._totalframes) {
			delete this.onEnterFrame;
                        this.removeMovieClip();
		}
	};
}
//
function rand(a:Number, b:Number):Number {
	return Math.round((b-a)*Math.random()+a);
}
//
inter = setInterval(timeCr, 1000);
1. Определяем переменные.
Код:
var mn:MovieClip = this;
var inter:Number = 0;
var i:Number = 0;
2. Функция которая генерирует случайное число от a до b. Числа a и b передаются в функцию извне как аргументы.
Код:
function rand(a:Number, b:Number):Number {
	return Math.round((b-a)*Math.random()+a);
}
3. Функция которая аттачит на сцену мувик с бегущим человечком. Ссылка на новый мувик сохраняется в переменной mc. При вставке мувика, параметры _x, _y, _xscale, _yscale, _alpha, _rotation определяются случайным числом которое выдает функция rand(a,b)(мы определили эту функцию ранее).
mc._xscale=mc._yscale чтобы сохранять пропорции человечка( можно и не сохранять).
trace(mc._x=Math.round((355/2)-(mc._width/2))) - это я так, немного неуклюже определил точку вставки мувика, чтобы он вставлялся примерно в средине экрана, в зависимости от масштаба. 355 вероятно можно заменить на stage._width...
Код:
function createNew():Void {
	mc = mn.attachMovie('mc_main', 'mc_main'+i, mn.getNextHighestDepth(), {_y:rand(90, 110), _alpha:rand(30, 100), _rotation:rand(-50, 50)});
	mc._xscale = mc._yscale=rand(20, 150);
	trace(mc._width);
	trace(mc._x=Math.round((355/2)-(mc._width/2)));
}
4. Эта функция выполняет несколько задач:
- считает i(что в принципе и не нужно, но я как-то привык. Даже если бы мы вставляли все мувики с одним и тем же именем, flash все равно создает новые мувики, только обзывает их instance n)
- запускает функцию создания нового мувика
- удаляет отработавшие мувики. Отработавший, в данном случае, это мувик который дошел до своего последнего кадра. Как происходит удаление: для каждого нового мувика запускается событие onEnterFrame, с этим событием связана функция, которая отслеживает текущий кадр конкретного мувика. Если этот кадр равен последнему кадру, то данный мувик удаляется. Получается, что мы запускаем одновременно некоторое количество этих функций. Я проверял, производительность просаживается совсем незначительно.
Код:
function timeCr():Void {
	i == 10 ? i=0 : i++;
	createNew();
	mc.onEnterFrame = function():Void  {
		if (this._currentframe == this._totalframes) {
			delete this.onEnterFrame;
                        this.removeMovieClip();
		}
	};
}
5. И, наконец, код который все запускает. 1000 это интервал с которым будут создаваться новые мувики. Чем меньше это число, тем больше будет человечков в кадре и больше одновременных onEnterFrame.
Код:
inter = setInterval(timeCr, 1000);

Старый 20.11.2006, 09:42
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 8  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
Код:
/*mc.onEnterFrame = function():Void  {
	if (this._currentframe == this._totalframes) {
	this.removeMovieClip();
	delete this.onEnterFrame;
	}
	};*/
Впрочем этот кусок кода можно вобще выбросить. Вместо него надо просто в последнем кадре мувика в библиотеке(mc_main) написать следующий код:
Код:
this.removeMovieClip()
Тогда, любой экземпляр, когда дойдет до последнего кадра, самоуничтожается.

По производительности оба варианта идентичны.


Последний раз редактировалось pkfun; 20.11.2006 в 09:50.
Старый 20.11.2006, 12:31
O'Fox вне форума Посмотреть профиль Отправить личное сообщение для O'Fox Найти все сообщения от O'Fox
  № 9  
Ответить с цитированием
O'Fox
 
Аватар для O'Fox

Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
это круто. Спасибо!
arachnofobia.rar
Вложения
Тип файла: rar arachnofobia.rar (2.2 Кб, 42 просмотров)
__________________
Блинчозафигняопятьзапалпробел!!!


Последний раз редактировалось O'Fox; 20.11.2006 в 13:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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