我想每天调用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