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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 02.11.2004, 00:57
rdm.vuk вне форума Посмотреть профиль Отправить личное сообщение для rdm.vuk Найти все сообщения от rdm.vuk
  № 1  
rdm.vuk
 
Аватар для rdm.vuk

Регистрация: Dec 2001
Сообщений: 31
По умолчанию прелоадер рисует линию (прогр) надо длиннее.

Есть прелоадер
stop();
var tot = _root.getBytesTotal();
var dif=0;
a=12.5;
this.onEnterFrame = function () {
loaded = _root.getBytesLoaded();
percent = (loaded / tot) * 100;
if (a <= percent) {
a = a + 12.5;
this.createEmptyMovieClip("line" + a, _root.a);
cnt=0;
dif=Math.floor(percent);
}
with (_root.line + a) {
lineStyle(1, 0xffffff, 100);
moveTo(0, _root.a);
cnt=Math.floor(percent)-dif;
lineTo(cnt, _root.a);
}
if (percent >= 100) {
_root.line.removeMovieClip();
delete this.onEnterFrame;
gotoAndStop (2);
}
};
т.е. он рисует линии по 12 пикселов, а надо чтоб по 400, НО просто умножать не катит, потому что тогда прорисовка получается рывками, а нада плавно.
__________________
________
Чтобы сделать что-то невозможное, надо не знать что это невозможно.

Старый 02.11.2004, 16:00
fiot вне форума Посмотреть профиль Отправить личное сообщение для fiot Посетить домашнюю страницу fiot Найти все сообщения от fiot
  № 2  
fiot
 
Аватар для fiot

Регистрация: Nov 2001
Адрес: Kyiv
Сообщений: 158
Отправить сообщение для fiot с помощью ICQ
Smile for flash mx

Код:
MovieClip.prototype._apply = function ($obj) 
{
	for (var item in $obj)
	{
		this[item] = $obj[item]
	}
}

MovieClip.prototype._loader = function ($obj, $event) 
{
	var _total   = this.getBytesTotal()
	var _loaded  = 0
	var _percent = 0
	this.createEmptyMovieClip("_loader_line",    _global.depth++)
	this.createEmptyMovieClip("_preloader_line", _global.depth++)
	this._preloader_line._apply   ($obj)
	this._loader_line._apply      ($obj)
	this._loader_line.lineStyle   (5, 0x000000, 100)
	this._preloader_line.lineStyle(5, 0xFF0000, 100)
	this._loader_line.moveTo      ( this._loader_line._x,     this._loader_line._y )
	this._loader_line.lineTo      ( this._loader_line._size, this._loader_line._y )
	this._preloader_line.moveTo   ( this._loader_line._x,     this._loader_line._y )
	this.onEnterFrame = function ()
	{
		_loaded = _root.getBytesLoaded()
		_percent = _loaded/_total
		this._preloader_line.lineTo(Math.round(this._preloader_line._size*_percent),this._loader_line._y)
		if (_total == _loaded || _percent == 1){
			this[$event].call(null)
			removeMovieClip(this._preloader_line)
			removeMovieClip(this._loader_line)
			delete this.onEnterFrame
		}
	}
}

_global.depth = 0
_root._loader({_x:10,_y:100, _size: 200}, "foo")
foo = function () {
	trace('loaded')	
}
вставить в первый пустой фрейм... всё остальное в другой...
__________________
file-> new-> F9 -> Ctrl+v/*code*/ ->ctrl+enter


Последний раз редактировалось fiot; 02.11.2004 в 16:03.
Старый 03.11.2004, 02:20
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 3  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
По умолчанию Re: прелоадер рисует линию (прогр) надо длиннее.

Цитата:
Оригинал написал(а) rdm.vuk
т.е. он рисует линии по 12 пикселов, а надо чтоб по 400, НО просто умножать не катит, потому что тогда прорисовка получается рывками, а нада плавно.
Что пишешь, то и имеешь.
Сделай так -
stop();
var tot = _root.getBytesTotal();
var dif = 0;
a = 12.5;
this.onEnterFrame = function() {
loaded = _root.getBytesLoaded();
percent = (loaded/tot)*100;
if (a<=percent) {
a = a+12.5;
this.createEmptyMovieClip("line"+a, _root.a);
cnt = 0;
dif = percent;// Ап
}
with (_root.line+a) {
lineStyle(1, 0xffffff, 100);
moveTo(0, _root.a);
cnt = (percent-dif)*400/12.5;// Ап
lineTo(cnt, _root.a);
}
if (percent>=100) {
_root.line.removeMovieClip();
delete this.onEnterFrame;
gotoAndStop(2);
}
};
Это, так сказать, грубая переделка -
линии будут отрисовываться не срого по 400 пикселей
из за неравномерности загрузки. Чтоб это поправить
вешаем маску шириной 400 пикселей,
а рисуем чуть длиннее - 430 пикс.
cnt = (percent-dif)*430/12.5;// Ап
После stop()
маска -
_root.createEmptyMovieClip("maska", 99);
with (maska) {
beginFill(0xff0000, 100);
moveTo(0, 0);
lineTo(0, 400);
lineTo(400, 400);
lineTo(400, 0);
lineTo(0, 0);
}
_root.setMask(maska);
Получится то что ты хотел, но на мой взгляд
дурдомный прелоад -
у fiot_а намного симпатичней
ЗЫ. И ремовишь ты мимо кассы,
надо -
with (this.line+a) {
clear();
}
for (i=12.5; i<=100; i=i+12.5) {
_root["line"+i].removeMovieClip();
}
Короче, гляди исходник...
Вложения
Тип файла: zip untitled-1.zip (73.8 Кб, 85 просмотров)


Последний раз редактировалось Штрек; 03.11.2004 в 02:22.
Старый 03.11.2004, 02:27
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 4  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Забыл маску отремовить
_root.maska.removeMovieClip();
//куда вставлять, думаю объяснять не надо...

Создать новую тему   Часовой пояс GMT +4, время: 08:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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