2013-02-15 2 views
0

부울을 전환하는 KeyboardEvent가 있습니다. 참인 경우 FR var는 -2/프레임을 10의 아래쪽으로 떨어 뜨립니다. false이면 60의 맨위로 + 2/프레임을 올립니다. 그리고 아래로하지만 "stage.frameRate = FR;"을 추가 할 때마다 ENTER_FRAME 함수에 추가하고 재생하면 창에 대한 컨트롤이 고정됩니다. 애니메이션은 여전히 ​​재생되지만 Ctrl-Alt-Del을 사용하지 않으면 끌 수 없습니다.AS3 프레임 레이트 변경 문제

1. 왜 이런 일이 발생합니까?

2. 프레임마다 frameRate를 변경할 수 있습니까?

3. 그렇다면 어떻게됩니까?

+0

타임 라인에 애니메이션이 있습니까? – abnvp

답변

1

음, 프레임 속도로 연주하는 것이 좋은 방법인지는 잘 모르겠습니다. 너 뭐하려고? 아마도 더 좋은 방법이있을 것입니다 ...

이것은 총 추측이지만 프레임 속도를 스테이지로 설정하면 백그라운드에서 '무언가'가 초기화됩니다. 그런 다음 매 프레임마다 문제가 발생하기 때문에 모든 프레임에서 초기화되어 잠겨 있습니다. Timer 객체 사용의 예를 포함하는 대답을 업데이트


: 타이머에 오프로드하여

import flash.utils.Timer; 
import flash.events.TimerEvent; 

// the timer takes in milliseconds, so for 30 frames/second, you would have a frame tick at every 1000/30, or 33.333ms 
var tickSpeed:int = 1000/30; 
var frameTick:Timer = new Timer(tickSpeed, 0); 


function enterFrameListener(inputEvent:Timer):void { 
    // this method will run on every timer tick 
} 
frameTick.addEventListener(TimerEvent.TIMER, enterFrameListener); 

// can change the tick speed of the timer like so (setting it to 1000 means 1 frame tick every second) 
frameTick.delay = 1000; 

// according to the api doc however, a tickspeed of less then 20ms is not recommended 
// 20ms would be equal to 60 fps 

, 당신은 다른의 또 다른 장점으로 전체 프레임 속도로 주변에 엉망 필요가 없습니다 개체는 동시에 다른 타이머의 영향을받을 수 있습니다. Timer 클래스에는 다음과 같은 몇 가지 유용한 메서드도 있습니다. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html

+0

나는 슬로우 모션에 대해 생각했다. 한 가지 방법은 스테이지의 모든 코드를 가져 와서 값을 하나씩 변경하는 것입니다. 또 다른 하나는 모든 값을 한 번에 변경할 변수에 기초하는 것입니다. 그러나 원활한 전환이 필요한 경우에는 여전히 코드에 큰 도움이됩니다. FrameRate를 바꾸는 것이 나에게 좋은 방법 인 것처럼 보였습니다. 더 높은 속도 인 60을 설정하고 겉보기에는 부드러운 애니메이션을위한 충분한 속도로 6 배의 차이를 만들어야합니다. 이렇게하면 모든 "세계"가 느려지거나 속도가 빨라지고 제어 가능한 심볼 속도 만 조정하면됩니다. 어떤 아이디어?^_^' – SherWood

+0

그리고 지금은 꽤 간단합니다. 나는 텍스트 필드에서 값을 변경하고 표시합니다. PC를 느리게 작동시키는 것이 9000 이상이 아닌지 확인합니다. 처음에 나는 그것을 작동 시켰고, 나는 위에 1 줄을 추가했다. 그래서 움직이는 물체의 애니메이션이 아닌 동결되었습니다. 그들은 여전히 ​​60fps의 속도로 움직이는 것 같습니다. 애니메이션에서 속도가 변경된 예제를 보았습니다. 프레임 속도를 변경하는 버튼을 누르면 속도가 변합니다. 그들은 하나의 라인을 사용했습니다 ... 버튼 누르기 -> frameRate + = 1 – SherWood

+0

흠, 프레임/ENTER_FRAME 이벤트를 기반으로 한 모든 애니메이션입니까? 그렇다면 타이머에서 실행되도록 변경하고 속도를 제어 할 수 있습니다. 예를 들어 답을 업데이트하겠습니다. – mitim

0

모든 프레임에 프레임 속도를 설정하려고하므로 앱이 멈춘 것으로 생각됩니다. ENTER_FRAME 섹션에서 프레임 속도를 확인해야합니다. . 원하는 프레임 속도에서 프레임 속도가 올라가거나 내려 간다면 프레임 속도를 FR로 설정해야합니다.

시도해보십시오.