![]() |
|
||||||||||
|
|||||
|
Цитата:
Цитата:
![]() Добавлено: Переделал на быструю руку из 6-го флеша (за синтаксис не бейте) Последний раз редактировалось Жень Шень; 19.10.2007 в 19:13. |
|
|||||
|
Регистрация: May 2004
Адрес: Kiev
Сообщений: 704
|
Для лоадера не надо ничего рисовать. Есть же готовое решение от Ric Ewing:
http://www.adobe.com/devnet/flash/ar...w_methods.html В "drawWedge.as" реализована программная отрисовка сектора. |
|
|||||
|
[6 07.05.06]
Регистрация: Dec 2005
Сообщений: 98
|
Программная отрисовка, прикольно, а как она свяжется тогда с количеством загруженных байтов? Вручную - так там переход на определенный кадр.
Извратился, сделал 100 секторов и фреймов соотв. загрузка мне не нравится!! если поставить картинку большого обьема для проверки, тогда загрузка странно происходит (с большой не мог выложить - форум не позволяет)! сначала быстро первый круг проматывает и на цифре 1 виснет! потом медленно второй мотает!! Последний раз редактировалось iNils; 23.10.2007 в 22:23. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Распотрошил тут свой старый прелоадер. Зацените мб поможет кому.
//begin
//customize here
var barRadius = 50;
var barThickness = 20;
var barcolor = 0xFF0000;
var barcolorAlpha = 100;
var textcolor = 0x000000;
var left_text_Preloader = "Loading: ";
var right_text_preloader = "done";
//Creating mc`s
this.createTextField("label_txt", 3, 0, barHeight, 100, 21);
label_txt.autoSize = "left";
label_txt.selectable = false;
var label_txt_frmt:TextFormat = new TextFormat();
label_txt_frmt.color = textcolor;
label_txt_frmt.size=16;
label_txt_frmt.font='BankGothic Md BT';
this.createEmptyMovieClip("progressbar", 1);
var bar:MovieClip = progressbar.createEmptyMovieClip("bar_mc", 2);
progressbar._x = Stage.width/2-get_text_width()/2;
progressbar._y = Stage.height/2;
//functions and options
MovieClip.prototype.drawWedge = function(x, y, startAngle, arc, radius, yRadius) {
if (arguments.length<5) {
return;
}
this.moveTo(x, y);
if (yRadius == undefined) {
yRadius = radius;
}
var segAngle, theta, angle, angleMid, segs, ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy;
if (Math.abs(arc)>360) {
arc = 360;
}
segs = Math.ceil(Math.abs(arc)/45);
segAngle = arc/segs;
theta = -(segAngle/180)*Math.PI;
theta1 = (segAngle/180)*Math.PI;
angle = -(startAngle/180)*Math.PI;
donutrad = barThickness*2;
if (segs>0) {
ax = x+Math.cos(startAngle/180*Math.PI)*radius;
ay = y+Math.sin(-startAngle/180*Math.PI)*yRadius;
fx = x+Math.cos(startAngle/180*Math.PI)*(radius-donutrad);
fy = y+Math.sin(-startAngle/180*Math.PI)*(yRadius-donutrad);
this.moveTo(fx,fy);
this.lineTo(ax, ay);
for (var i = 0; i<segs; i++) {
angle += theta;
angleMid = angle-(theta/2);
bx = x+Math.cos(angle)*radius;
by = y+Math.sin(angle)*yRadius;
cx = x+Math.cos(angleMid)*(radius/Math.cos(theta/2));
cy = y+Math.sin(angleMid)*(yRadius/Math.cos(theta/2));
dx = x+Math.cos(angle)*(radius-donutrad);
dy = y+Math.sin(angle)*(yRadius-donutrad);
ex = x+Math.cos(angleMid)*((radius-donutrad)/Math.cos(theta/2));
ey = y+Math.sin(angleMid)*((yRadius-donutrad)/Math.cos(theta/2));
this.curveTo(cx, cy, bx, by);
}
this.lineTo(dx, dy);
for (var j = 0; j<segs; j++) {
angle += theta1;
angleMid = angle-(theta1/2);
dx = x+Math.cos(angle)*(radius-donutrad);
dy = y+Math.sin(angle)*(yRadius-donutrad);
ex = x+Math.cos(angleMid)*((radius-donutrad)/Math.cos(theta1/2));
ey = y+Math.sin(angleMid)*((yRadius-donutrad)/Math.cos(theta1/2));
this.curveTo(ex, ey, dx, dy);
}
this.lineTo(ax,ay);
}
};
function get_text_width() {
percents = 99;
label_txt.text = left_text_Preloader + percents + right_text_preloader;
label_txt.setTextFormat(label_txt_frmt);
return a = label_txt._width;
}
label_txt._x = Stage.width/2-get_text_width()/2;
label_txt._y = Stage.height/2;
//main function
function wedge(d_mc, arcVal) {
d_mc.clear();
d_mc.lineStyle(0, 0x000000);
d_mc.beginFill(barcolor, barcolorAlpha);
d_mc.drawWedge(get_text_width()/2, -barRadius, 0, arcVal, barRadius);
d_mc.endFill();
}
//
arcVal= 360;
progressbar.onEnterFrame = function() {
var percents:Number = Math.floor(_root.getBytesLoaded() / _root.getBytesTotal() * 100);
if (!isNaN(percents)) {
wedge(_root.progressbar.bar_mc, percents*3.6);
}
label_txt.text = left_text_Preloader + percents + right_text_preloader;
label_txt.setTextFormat(label_txt_frmt);
if (percents >= 100) {
progressbar.onEnterFrame = undefined;
gotoandplay(2);
}
if (percents == 100) {
progressbar.bar_mc._visible = false;
label_txt._visible = false;
}
}
//end
|
|
|||||
|
[6 07.05.06]
Регистрация: Dec 2005
Сообщений: 98
|
если не сложно, исходник можна посмотреть?
тут код с мувика и с фрейма написан вместе? |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
В 1м кадре этот код. Во втором собстно контент.
|
|
|||||
|
Регистрация: May 2004
Адрес: Kiev
Сообщений: 704
|
Цитата:
|
|
|||||
|
[6 07.05.06]
Регистрация: Dec 2005
Сообщений: 98
|
Еще вопрос: Чего последнее значение загруженных бит равно 98 или 99 процентов?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:15. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|