|
|
|||||
Цитата:
Цитата:
Добавлено: Переделал на быструю руку из 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, время: 01:32. |
|
« Предыдущая тема | Следующая тема » |
|
|