2009-06-10 7 views
3

코드에서 수행 할 작업은 다음과 같습니다. 자동차의 MC에 x 초 동안 애니메이션을 적용합니다. 차가 완료되면 y 초 동안 개 MC를 움직입니다. 기타 ...actionscript 줄 사이에서 일시 중지

이 코드를 사용하면 모든 애니메이션이 동시에 실행됩니다.

 
car.slideTo(200,100,1); 
dog.slideTo(200,100,5); 
blimp.slideTo(200,100,2); 

...

는 그 선 사이에 넣어 일시 정지 기능을 쓸 수 있습니까? getTimeout을 사용해 보았습니다.하지만 각 애니메이션을 별도의 함수로 정의하지 않아도됩니다.

답변

3

1 초 후에 my_func를 호출하는 setInterval (my_func, 1000)을 사용해 볼 수 있습니다.

1

나는 강하게 당신 TweenMax http://blog.greensock.com/tweenmaxas3/

를 사용하여 조언 그것은 코드의 중간에 일시 정지를 포함하여 꿈을 꿀 수있는 모든 애니메이션 트위닝 기능을 가지고 있습니다.

매우 쉽게 사용할 수 있습니다. 예 :

import gs.TweenMax; 
// move the movieclip to (500,200) in 2 seconds: 
var myTween:TweenMax = new TweenMax(mc, 2, {x:500, y:200}); 

당신이 언제

myTween.pause(); 

처럼하지만 당신의 경우에 당신은 아마 당신의 트윈 대기열 할을 일시 정지 할 수 있습니다

그래서 당신은 또한

import gs.*; 

var tween1:TweenMax = new TweenMax(mc1, 1, {x:300,y:400}); 
var tween2:TweenMax = new TweenMax(mc2, 1, {x:200,y:400}); 
var tween3:TweenMax = new TweenMax(mc3, 1, {x:100,y:400}); 

var myGroup:TweenGroup = new TweenGroup([tween1, tween2, tween3]); 
myGroup.align = TweenGroup.ALIGN_SEQUENCE; 

처럼 쓸 수 있습니다 , TweenMax & Tweensy는 현재 AS3에 가장 빠른 트위닝 라이브러리가 있지만 Twee nMax는 제 생각에 좀 더 사용하기 쉽습니다. 서로 다른 트위닝 엔진을 비교하면 http://blog.greensock.com/tweening-speed-test/

+0

사용자의 질문에 전혀 대답하지 않습니다. – fenomas

+0

@ fenomas : 당신이하는 말을 모른다. 그는 애니메이션 트위닝을 일시 중지하고 싶습니다. 저는 그에게 라이브러리를 제공합니다. – Unreality

+1

아니요, 그는 이전 애니메이션이 중단 될 때 하나의 애니메이션을 시작하려고합니다. 트위닝을하기 위해 그가 라이브러리 또는 라이브러리를 사용하는지 여부에 관계없이 콜백 또는 시간 제한/간격이 여전히 필요합니다. 당신이 제안한 도서관이 더 쉽게 만들지는 못합니다. – fenomas

2

SetInterval()을 사용하는 것이 좋습니다.

var Timer = setInterval(delay, 500); //calls the function delay after 500 milliseconds 

function delay() { 
    trace("delayed!"); 
    clearInterval(Timer); //stops the function from being called again 
} 
+0

최고의 답변은 여기, IMHO. 논쟁의 여지가없는 논쟁. 그냥 코드 지우기. :) – CodeMouse92

0

귀하의 질문 더 많거나 적은 액션 스크립트가 작동하는 방법에 대한 오해를 노출 : 여기

은 도움이 될 수있는 간단한 예입니다. Flash가 내용을 실행할 때 수행하는 작업은 다음과 같습니다. 먼저 모든 프레임 스크립트를 실행 한 다음 애니메이션을 한 프레임 앞당긴 다음 화면을 업데이트합니다. 그런 다음 다음 프레임에서 모든 스크립트를 실행 한 다음 애니메이션을 다시 진행시켜 화면을 업데이트합니다.

두 줄의 코드 사이에 일종의 일시 중지 기능을 넣으면 Flash는 일시 중지 중에 아무 것도하지 않습니다. 여전히 프레임 스크립트 집합을 완료하려고하기 때문입니다. 그런 다음 일시 중지가 완료되면 다음 플래시가 마침내 화면을 업데이트하므로 세 가지 애니메이션이 모두 동시에 작동합니다.

고통처럼 보일 수도 있지만 getTimeout을 사용해야합니다. 또는 트 리얼의 시작을 지연시키는 기능이 포함 된 트윈 라이브러리 (예 : Unreality의 대답)를 사용할 수도 있습니다. 그 밑에는 똑같은 것이 있습니다.

+0

그의 질문 남자를 읽고, 그는 동시에 애니메이션을 실행하고 싶지 않아, 이것이 TweenMax가 도움이되는 이유입니다. – Unreality

+0

내 대답은 왜 AS 실행을 일시 중지해도 자신이 원하는 효과를 내지 못했음을 설명합니다. 트윈 라이브러리가 멋지다고 확신하지만, 그가 사용하는 라이브러리가 무엇이든 여전히 트윈을 동기화하려면 타임 아웃/간격을 사용해야합니다. – fenomas

+0

더 나은 라이브러리가 있으면 트윈을 동기화 할 때 타임 아웃/간격을 사용하지 않아야합니다. TweenMax는 트위닝 성능면에서 최고 중 하나입니다. TweenMax보다 우수한 성능 기능을 작성할 수있는 기회는 아주 미미합니다. 도서관의 타임 아웃/인터벌 기능이 당신이 직접 쓰는 것보다 훨씬 더 효율적이라는 것을 보증 할 수 있습니다. – Unreality

4

불행히도 현재로서는이 방법이 없습니다. ActionScript는 단일 스레드 언어이며 콜백없이 타이머를 사용할 수 없습니다. 그러나이 기능은 확실하게 가능하며 (공동 루틴이라고하는 스레딩 시스템을 통해) 향후 언어 릴리스에 추가 될 수 있습니다.

하지만 지금은 setTimeout()이 붙어 있습니다.