웹디자인 강의
Flash 플래시를 이용한 원그래프 그리기입니다.
2005.07.04 09:47
********************결과화면보기**********************
플래시를 이용한 원그래프 입니다.
제작이 MX2004에서 제작이 되어서 이하 버전에서는 열리지 않습니다.^^
소스가 허접해서 추가,수정하셔야 합니다.^^
플래시를 이용한 원그래프 입니다.
제작이 MX2004에서 제작이 되어서 이하 버전에서는 열리지 않습니다.^^
소스가 허접해서 추가,수정하셔야 합니다.^^
댓글 2
-
김동현
2005.07.05 07:19
강좌는 어디로....... -
버찌
2005.07.05 10:56
/******************************* prototype 정의 *******************************/
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;
if (Math.abs(arc)>360) {
arc = 360;
}
segs = Math.ceil(Math.abs(arc)/45);
segAngle = arc/segs;
theta = -(segAngle/180)*Math.PI;
angle = -(startAngle/180)*Math.PI;
if (segs>0) {
ax = x+Math.cos(startAngle/180*Math.PI)*radius;
ay = y+Math.sin(-startAngle/180*Math.PI)*yRadius;
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));
this.curveTo(cx, cy, bx, by);
}
this.lineTo(x, y);
}
};
movieClip.prototype.smoothMove=function(targetX,targetY,speed){
this._x+=speed*(targetX-this._x);
this._y+=speed*(targetY-this._y);
}
movieClip.prototype.plusAlpha=function(){
if(this._alpha>=0 && this._alpha<100){
this._alpha+=2;
}else{
this._alpha=100;
}
}
function wedge(x,y,arcVal, arcinit,r,fillColor,lineColor,MC) {
MC.clear();
//MC.lineStyle(0,lineColor);
MC.beginFill(fillColor,100);
MC.drawWedge(x, y, arcVal, arcinit, r);
MC.endFill(0xFFCC00,100);
}
//********* 기본값 정의********************
var centerX=195; //중심점 X
var centerY=89; //중심점 Y
var centerR=90; //원그래프 시작점
var radiusL=82; //원그래프 반지름
_root.graphOver.duplicateMovieClip("graphOver1",200);
_root.centerMC.duplicateMovieClip("centerMC1",150);
_root.centerMC1._x=centerX;
_root.centerMC1._y=centerY;
_root.centerMC1.onRollOut=function(){
_root.graphOver1._x=100;
}
function drawCicle(){
fColor=["0xF5F817","0xF1A503","0xF14235","0xAF56FA","0x328BDE"]; //면색
var Count=Number(loadVar.count);
var prevValue=0; //이전그래프가 멈춰진곳
for(i=1 ; i<=Count ; i++){
_root["Cvalue"+i]=(Number(loadVar["graphValue"+i])/100)*360;
_root.markMc["gMark"+i].gName=loadVar["graphName"+i];
_root.markMc["gMark"+i]._visible=false;
_root["d_mc"+i] = _root.createEmptyMovieClip("drawing_layer"+i, i);
_root["d_mc"+i]._alpha=0;
_root.markMc["gMark"+i]._visible=true;
_root.wedge(centerX,centerY,centerR-prevValue,-(_root["Cvalue"+i]),radiusL,fColor[(i-1)],0xffffff,_root["d_mc"+i]) ;
_root["CAngle"+i]=centerR-prevValue;
prevValue+=_root["Cvalue"+i];
_root["d_mc"+i].onEnterFrame=function(){
this.plusAlpha();
}//end enterFrame
_root["d_mc"+i].onRollOver=function(){
var num=this._name.substring(13);//몇번째것이 롤오버 되었는지 알아보기 위해서
_root.graphOver1.onEnterFrame=function(){
_root.graphOver1._x+=0.2*(_root._xmouse-this._x);
_root.graphOver1._y+=0.2*(_root._ymouse-this._y);
_root.graphOver1.gName=loadVar["graphName"+num];
_root.graphOver1.gValue=loadVar["graphValue"+num]+"%";
}
}
_root["d_mc"+i].onRollOut=function(){
_root.graphOver1._x=-100;
_root.graphOver1._y=-100;
}
}
}//end function
loadVar =new LoadVars();
loadVar.onLoad=drawCicle;
loadVar.load("cicle.php?vain="+Math.random(),loadVar,"POST");