14:30
에 매일 eventX
을 호출하고 싶습니다. actionscript 3
에서이 작업을 수행하는 방법은 무엇입니까?actionscript 3에서 일정 시간에 일정을 호출하는 방법은 무엇입니까?
답변
Adobe AS3 Alarm Clock example은 알아야 할 모든 정보를 제공합니다. 특히, setAlarm
방법이 중요합니다.
당신은 날짜 개체에게 그것은 플래시가 발광하지 않는 이벤트를 일으키는 초 동안 동결 수 있음을 제안했다 편집을 사용할 수 있습니다. 이것은 유효합니다 - 더 이상 문제가되지 않도록 업데이트했습니다.
var currDate:Date = new Date();
var targetHour:int = 14;
var targetMinute:int = 30;
var startHour:int = currDate.getHours();
var startMinute:int = currDate.getMinutes();
var eventTriggered:Boolean = false;
// you can use an enterframe or a timer event here, doesn't matter which
addEventListener(Event.ENTER_FRAME, onCheckTime);
function onCheckTime(evt:Event):void{
currDate = new Date();
var hours:int = currDate.getHours();
var minutes:int = currDate.getMinutes();
// in order for this not to work flash would need to freeze for an entire minute
// not likely
if (hours == 14 && minutes == 30){
trigger();
}
// if flash froze for a whole minute
if (!eventTriggered){
if (startHour <= targetHour && startMinute < targetMinute){
if (hours > targetHour && minutes > targetMinute){
trigger();
}
}
}
}
function trigger():void{
// do anything you want here
eventTriggered = true;
dispatchEvent(new Event("eventX"));
removeEventListener(Event.ENTER_FRAME, onCheckTime);
}
어떤 이유로 플래시 플레이어가 시간 확인 직전에 반응이 없으면 건너 뛸 수 있습니다. 거기에 논리를 넣고 싶을 수도 있습니다. 따라서 건너 뛰어도 여전히 작동 할 수 있습니다. – AttackingHobo
특히 dispatchEvent()를 사용하는 경우는 거의 없습니다. 플래시 플레이어가 응답하지 않으면 dispatchEvent()가 응답을하지 않아도 계속 수행됩니다. 즉, 그냥 넣는 로직을 추가하는 것이 쉽습니다. 지금 추가 할 시간이 없지만 나중에 다시 돌아와서 내 대답을 업데이트 할 것입니다. – Zevan
AHobo가 말한 것처럼 hours == 14, minutes == 30 및 seconds == 0 일 때 타이밍 이벤트가 발생하지 않을 것이라는 보장이 없으므로 방법이 신뢰할 수 없습니다. 타이밍 이벤트 (타이머 또는 엔터 프레임 일 것임)가 14시 29 분 59 초에 시작한 다음 14시 30 분 1 초에 논리를 모두 건너 뛰는 것이 전적으로 가능합니다. 스펙은 정확한 시간에 이벤트를 보장하지 못하지만, AHobo의 시나리오는이 방법을 나쁜 해결책으로 만듭니다. -1 – spender
이유는 언급에 대한 반복 이벤트에 대한 트리거 포인트와 같은 날짜()를 사용하여 신뢰할 Date 클래스는 사용자가 변경할 수있는 로컬 컴퓨터의 시간을 묶여도 있기 때문이다. 드물 긴하지만, 사용자는 로컬 시스템의 날짜를 변경하여 목표 날짜에 도달하지 못하게 할 수 있습니다. 당신이) (를 날짜를 사용한다면
그러나, (트리거를 가지고, 내가 당신에게 전체 분을 줄 것이다, 다음처럼 접근 할 수있는 (또는 당신은 timeOutLength에게 변수를 설정 무엇이든))이라고합니다. else 블록은 trigger() 호출없이 트리거 창이 어떻게 든 통과하면 trigger()을 호출합니다. 나머지 함수는 트리거 창이 만료 될 때까지 대기 기간을 작성한 후 하루를 롤 포워드하고 프로세스를 다시 시작합니다.
var timeOutLength:Number = 1;
var minutesToWaitUntilReset:Number = timeOutLength + 1;
var hasBeenTriggered:Boolean = false;
var targetHour:Number = 2;
var targetMinute:Number = 38;
var currentYear:Number = new Date().getFullYear()
var currentMonth:Number = new Date().getMonth();
var currentDay:Number = new Date().getDate();
addEventListener(Event.ENTER_FRAME, onCheckTime);
function onCheckTime(evt:Event):void
{
var currentDate = new Date().getTime();
var targetDate = new Date(currentYear, currentMonth, currentDay, targetHour, targetMinute).getTime();
var timeOutDate = new Date(currentYear, currentMonth, currentDay, targetHour, (targetMinute + timeOutLength)).getTime();
if (currentDate >= targetDate && currentDate < timeOutDate && hasBeenTriggered == false)
{
tiggerDailyEvent();
}
else if(currentDate >= timeOutDate && hasBeenTriggered == false)
{
tiggerDailyEvent();
}
}
function tiggerDailyEvent():void
{
hasBeenTriggered = true;
removeEventListener(Event.ENTER_FRAME, onCheckTime);
addEventListener(Event.ENTER_FRAME, waitForReset);
// this is where you call your daily event
}
function waitForReset(evt:Event):void
{
var currentYear = new Date().getFullYear();
var currentMonth = new Date().getMonth();
var currentDay = new Date().getDate();
var currentDate = new Date().getTime();
var resetDate = new Date(currentYear, currentMonth, currentDay, targetHour, (targetMinute + timeOutLength + minutesToWaitUntilReset)).getTime();
if(currentDate >= resetDate)
{
removeEventListener(Event.ENTER_FRAME, waitForReset);
reset();
}
}
function reset():void
{
hasBeenTriggered = false;
currentYear = new Date().getFullYear();
currentMonth = new Date().getMonth();
currentDay = new Date().getDate() + 1;
addEventListener(Event.ENTER_FRAME, onCheckTime);
}
- 1. 일정 기간을 기준으로 새 캘린더 일정을 만드는 방법은 무엇입니까?
- 2. ActionScript 3에서 VideoEvent.READY는 무엇입니까?
- 3. actionscript-3에서 하위 루핑하기
- 4. actionscript 3에서 변수를 업데이트하는 방법은 무엇입니까?
- 5. ActionScript 3에서 MovieClip.prototype을 얻는 방법은 무엇입니까?
- 6. ActionScript 3에서 선을 그리는 방법은 무엇입니까?
- 7. actionscript-3에서 사운드 왜곡을 적용하는 방법은 무엇입니까?
- 8. actionscript 3에서 xls 파일을로드하는 방법은 무엇입니까?
- 9. actionscript 3에서 onmouseover 효과를 구현하는 방법은 무엇입니까?
- 10. 되풀이 일정을 만드는 방법은 무엇입니까?
- 11. ActionScript 3에서 xml을 ActionScript 클래스로 디코딩하는 방법은 무엇입니까?
- 12. 다른 시간에 viewDidLoad를 호출하는 방법은 무엇입니까?
- 13. 일정 날짜가있는 Android 기기에 캘린더 일정을 추가하는 방법은 무엇입니까?
- 14. Android 캘린더 일정 - 일정을 식별하기위한 키
- 15. 레일 3에서 함수를 정의하고 호출하는 방법은 무엇입니까?
- 16. ActionScript 1에서 JavaScript 함수를 호출하는 방법은 무엇입니까?
- 17. 문자열을 일정 시간에 복사 하시겠습니까?
- 18. ActionScript 3에서 무한대
- 19. ActionScript 3에서 비 직렬화
- 20. ActionScript 3에서 서버 응답 에뮬레이트
- 21. 특정 시간에 시작하도록 서브 루틴 일정을 잡으십시오.
- 22. actionscript 3에서 메시지를 보내고 처리하는 올바른 방법은 무엇입니까?
- 23. Actionscript 3에서 삭제 키가 눌러 졌는지 감지하는 방법은 무엇입니까?
- 24. Actionscript 3에서 내 클래스의 캐스팅을 구현하는 방법은 무엇입니까?
- 25. actionscript 3에서 전체 화면 모드를 구현하는 방법은 무엇입니까?
- 26. Actionscript 3에서 기본 "안개 전쟁"효과를 만드는 방법은 무엇입니까?
- 27. ActionScript 3에서 클래스의 인스턴스를 Class 객체로 가져 오는 방법은 무엇입니까?
- 28. ActionScript 3에서 외부 .txt 파일을로드 할 때까지 기다리는 방법은 무엇입니까?
- 29. flex/actionscript 3에서 개체를 만드는 방법을 찾는 방법은 무엇입니까?
- 30. Actionscript 3에서 게임 타이머를 만드는 가장 좋은 방법은 무엇입니까?
플렉스 프로젝트에서 직접 사용할 수 있도록이를 swc 파일로 컴파일하는 방법은 무엇입니까? – fms
플렉스 프로젝트에서 코드를 사용하기 만하면됩니다. 왜 이것을 swc로 패키지화하고 싶습니까? – spender