Показать сообщение отдельно
Старый 23.10.2007, 20:38
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 14  
Ответить с цитированием
†‡Paladin‡†

Регистрация: 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