2014-11-18 2 views
0

안녕하세요 그래서 그래 기본 타임 라인에서 나는 타이머를movieclip에서 메인 타이머에 시간을 추가 하시겠습니까?

var count:Number = 300;//Count down from 300 
var myTimer:Timer = new Timer(1000,count); 
myTimer.addEventListener(TimerEvent.TIMER, sayHello); 
function sayHello(e:TimerEvent):void 
{ 
trace("Current Count: " + myTimer.currentCount); 
} 

을 그리고 당신은 영화 클립 reimoi_mc에 가서 useplush 버튼을 클릭하면 내가 타이머에 추가 초를 추가 할 수 있어야합니다. 다음 코드는 reimoi_mc 클립에 있지만 그래, 나는이 작업을 만드는 방법을 모른다.

import flash.events.MouseEvent; 
import flash.utils.Timer; 
import flash.utils.getTimer; 

stop(); 
useplush.addEventListener(MouseEvent.CLICK, addtime); 
function addtime(e:MouseEvent):void 
{ 
      MovieClip(root).count += 2; 
      MovieClip(root).myTimer.repeatCount += MovieClip(root).count; //add time to the timer 

      trace("new time " + myTimer.currentCount); 
} 
+0

무엇이 좋습니까? 타이머를 리셋하지 않으면'currentCount'는 항상 같을 것입니다. 타이머를 클릭 할 때마다 2 초를 더하고 시간이 얼마나 남았는지 보여 주시겠습니까? 그렇다면, 당신은 매우 가깝습니다. (단지 몇 가지 비틀기가 할 것입니다) – BadFeelingAboutThis

답변

0

나는 당신이하려고하는 것이 클릭 처리기의 타이머에 2 초를 추가 한 다음 얼마나 많은 시간이 남았는지 보여 줄 것이라고 생각하십니까? 그렇다면, 단지 몇 개조하면 되겠 할 것 :

function sayHello(e:TimerEvent):void { 
    trace("Time Left: " + myTimer.repeatCount - myTimer.currentCount); //time left is the repeat count - the current count 
} 

function addtime(e:MouseEvent):void { 
    MovieClip(root).myTimer.repeatCount += 2 //add 2 more ticks to the timer (currentCount will always remain the same unless the timer is reset) 
    trace("new time remaining: " + MovieClip(root).myTimer.repeatCount - MovieClip(root).myTimer.currentCount); 
} 

보너스 코드를!

당신이 타이머 지연 (의 당신이 그것을 예를 들어 빠른 1 초 이상을 업데이트 할 가정 해 봅시다)의는 무관하게 원한다면, 당신이 할 수 있습니다 :

var startingTime:Number = 20; //the initial time in seconds 
var myTimer:Timer = new Timer(200); //your timer and how often to have it tick (let's say 5 times a second) 

myTimer.repeatCount = startingTime * Math.ceil(1000/myTimer.delay); //set the initial repeat count 
myTimer.addEventListener(TimerEvent.TIMER, sayHello); 
myTimer.start(); 

function sayHello(e:Event):void { 
    trace("Time Left: " + ((((myTimer.repeatCount - myTimer.currentCount) * myTimer.delay)/1000)) + "seconds"); 
} 

그리고 다른 객체를 :

stage.addEventListener(MouseEvent.CLICK, function(e:Event){ 
    myTimer.repeatCount += Math.ceil(2000/myTimer.delay); //add 2000 milliseconds to the timer 
}); 
+0

고마워요! 내가 게시 한 첫 번째 코드에 약간의 문제가있었습니다 ('string'에 대한 보너스 코드가 멋지게 작동했습니다. 감사합니다. <3 – Fuure

0

당신은 더 나은 대신 Timer 객체로 때우는의 시간을 계산하는 외부 카운터를 사용하십시오 (나는 동영상 클립 내에서 기본 타임 라인에서 실행 타이머를 액세스 할 수 MovieClip(root)를 사용해야합니다). 지연을 측정하기 위해 타이머가 필요하며, 지연 시간을 계산하는 청취자가 필요합니다.

var myTimer:Timer=new Timer(1000); // no second parameter 
public var secondsLeft:int=300; // former "count" 
myTimer.addEventListener(TimerEvent.TIMER, sayHello); 
function sayHello(e:TimerEvent):void { 
    secondsLeft--; 
    trace("Seconds left:", secondsLeft); 
    if (secondsLeft<=0) { 
     myTimer.stop(); 
     myTimer.reset(); 
     // whatever else to trigger when time runs out 
    } 
} 

그리고 나서 secondsLeft에 추가하고 점수 판을 업데이트하면됩니다.

관련 문제