我想每天調用eventX
14:30
,如何在actionscript 3
做這種工作?如何在actionscript 3的固定時間調用一些事件?
2
A
回答
1
Adobe AS3 Alarm Clock example應該告訴你所有你需要知道的。特別是,setAlarm
方法將是有趣的。
0
您可以使用日期對象 編輯 有人認爲閃存可能會凍結一秒鐘導致事件不火。這是有效的 - 我已經更新它,所以這不再是一個問題。
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);
}
0
使用日期()作爲觸發點的重複事件的原因提及並且是不可靠的,因爲也Date類被綁定的本地機器的時間,這可以由用戶來改變。雖然不太可能,但用戶可以更改本地計算機上的日期,絕不允許它達到目標日期。
但是,如果你使用日期(),我可能接近它像下面這樣,這將讓你一分鐘(或任何你設置timeOutLength變量),有觸發( )叫。 其他塊調用觸發器()如果觸發器窗口以某種方式傳遞,但不觸發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. Actionscript 3:我如何測量鼠標事件之間的時間......?
- 2. 如何在actionscript 3中調用xml解析時間?
- 3. ActionScript 3:測量enterFrame事件之間的經過時間
- 4. 記錄調度自定義事件(在actionscript 3中)
- 5. 如何在ActionScript 3中處理自定義事件?
- 6. actionscript 3如何跟蹤時間流逝?
- 7. 如何在一定的時間內設置某些事情?
- 8. 如何以固定的時間間隔調用函數?
- 9. 如何在定義的固定時間內調度MYSQL查詢?
- 10. Actionscript 3事件列表
- 11. Actionscript 3 Flash鍵盤事件
- 12. ActionScript 3 Newb:TextInput輸入事件?
- 13. Actionscript 3 ContextMenu關閉事件?
- 14. 在actionscript 3事件中的自定義光標不起作用
- 15. 在ActionScript 3中返回事件的值
- 16. Actionscript 3:調用未定義的方法
- 17. 用actionscript 3獲得納秒的時間
- 18. 如何在固定的時間
- 19. 如何在ActionScript 3
- 20. X:以固定的時間間隔觸發事件
- 21. 如何確保定時記錄在固定的時間間隔?
- 22. 如何使用ActionScript 3模擬Android的點擊事件
- 23. Actionscript 3 - 如何在移除該事件後保留事件的值
- 24. 如何在同一時間調用一些函數?
- 25. 固定時間在一個時鐘
- 26. 運行cron作業一些固定的時間
- 27. 如何在ActionScript 3中獲得關於MySQL時間戳的時間?
- 28. 如何在actionscript 3中定位url?
- 29. ActionScript 3中有效的事件監聽
- 30. 如何在Actionscript 3中對事件進行排序
如何將它編譯成一個swc文件,以便我可以直接在我的flex項目中使用它? – fms 2010-12-05 16:04:13
您只需在Flex項目中使用代碼即可。你爲什麼要打包成SWC? – spender 2010-12-05 23:45:25