OK 그래서 파이 차트를 생성 코드 ... 권장플래시 AS3 : 현재 프레임에 따라 변경 변수
package {
import flash.display.Sprite;
import flash.display.MovieClip;
public class App extends MovieClip {
function App() {
this.graphics.lineStyle(3, 0xFF0000);
this.graphics.beginFill(0xFF0000, 0.5);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, -90, 0);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 0, 110);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 110, 180);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 180, 270);
this.graphics.endFill();
}
var piesize:Number = 140;
var wedge1:Number = 90;
var wedge2:Number = 110;
var wedge3:Number = 90;
var wedge4:Number = 90;
/**
* Draw a segment of a circle
* @param target <Sprite> The object we want to draw into
* @param x <Number> The x-coordinate of the origin of the segment
* @param y <Number> The y-coordinate of the origin of the segment
* @param r <Number> The radius of the segment
* @param aStart <Number> The starting angle (degrees) of the segment (0 = East)
* @param aEnd <Number> The ending angle (degrees) of the segment (0 = East)
* @param step <Number=1> The number of degrees between each point on the segment's circumference
*/
function drawSegment(target:Sprite, x:Number, y:Number, r:Number, aStart:Number, aEnd:Number, step:Number = 1):void {
// More efficient to work in radians
var degreesPerRadian:Number = Math.PI/180;
aStart *= degreesPerRadian;
aEnd *= degreesPerRadian;
step *= degreesPerRadian;
// Draw the segment
target.graphics.moveTo(x, y);
for (var theta:Number = aStart; theta < aEnd; theta += Math.min(step, aEnd - theta)) {
target.graphics.lineTo(x + r * Math.cos(theta), y + r * Math.sin(theta));
}
target.graphics.lineTo(x + r * Math.cos(aEnd), y + r * Math.sin(aEnd));
target.graphics.lineTo(x, y);
};
}
}
이 코드는 외부 AS 파일에서 가져온되어 있습니다. 그건 잘 작동하고, 4 세그먼트와 사랑스러운 빨간 원형 차트를 만듭니다.
wedge1, wedge2 등의 변수를 볼 수 있습니다. 현재 주 타임 라인의 각 프레임에서 변수를 변경할 수 있기를 원하지만 현재 아무 것도하지 않습니다.
프레임 사이를 이동할 때 파이 차트의 변수를 변경하는 방식으로 기본 타임 라인에 이러한 변수를 두는 방법이 있습니까? (나는 왼쪽과 오른쪽 키를 사용하여 한 번에 한 프레임 씩 앞뒤로 이동합니다.)
또한이 코드를 어떻게 든 변경해야합니다 ... 나는 SUDO 스타일로 작성했지만 이 코드의 정확한 실행에 어떤 도움을 크게 나는 기본적으로 내가 앞으로 또는 뒤로 통해 이동 원형 차트 세그먼트 및 크기 변화를 달성하기 위해 노력하고있어,
wedge1start == -90
wedge1end == wedge1start + wedge1
wedge2end == wedge1end + wedge2
wedge3end == wedge2end + wedge3
wedge4end == wedge2end + wedge4
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1start, wedge1end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1end, wedge2end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge2end, wedge3end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge3end, wedge4end);
나는이 말이 희망 ... 감사하겠습니다 시간. 변수가 존재하지만 AS 파일 외부에서 변수를 변경할 수없는 것 같습니다.
프레임에 무엇인가를 입력해야합니까 ?? 당신이 게시 클래스를 가정 긴 질문
감사합니다. 이제 실제로 애니메이션의 두 번째 및 네 번째 프레임에서 변수가 변경되었습니다. 그러나 내가 누락 된 것은 프레임을 입력 할 때 파이가 만들어지는 것입니다. 나는 'function App'주위에 ENTER_FRAME 리스너를 추가하려고했지만, 뭔가 또는 다른 것이 정의되지 않았기 때문에 에러가 발생할 때마다. 무대가 정의되어 있지는 않지만 무언가를 정의하거나 뭔가를 정의하는 방법을 이해하지 못한다. 붙어 있어요 – bboybeatle
무언가가 표시 목록에 추가되면 스테이지가 자동으로 정의됩니다. 당신은'Event.ADDED_TO_STAGE' 이벤트로 그것을들을 수 있습니다. 그래도 문제가 계속된다면 내일 도울 수 있습니다. – BadFeelingAboutThis
좋아요. 그래서 파이 차트가 모든 프레임에 그려 지도록했습니다. 그래서 'piesize'가 그것의 크기에 영향을줍니다. 내가 깨닫지 못한 것은 그 스프라이트가 사라져서 원형 차트가 수백 개씩 서로 겹쳐져 이상한 결과를 만들어내는 것입니다. 이제는 다시로드하기 전에 파이 차트를 제거하는 방법을 알아야합니다. 내 길을 거기에 ... 만약 당신이 나를 놀라게 될 내일 도울 수 있다면, 나는 당신의 시간을 지불하는 데 아무런 문제가 없습니다. 나는 지금 너에게 메세지를 보낼 것이다. 감사합니다 – bboybeatle