![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: 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, НО просто умножать не катит, потому что тогда прорисовка получается рывками, а нада плавно.
__________________
________ Чтобы сделать что-то невозможное, надо не знать что это невозможно. |
|
|||||
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. |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Цитата:
Сделай так - 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(); } Короче, гляди исходник... Последний раз редактировалось Штрек; 03.11.2004 в 02:22. |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Забыл маску отремовить
_root.maska.removeMovieClip(); //куда вставлять, думаю объяснять не надо... |
![]() |
Часовой пояс GMT +4, время: 08:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|