`
lixinye0123
  • 浏览: 333362 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

1.12. 长时间执行一个任务

阅读更多
1.12. 长时间执行一个任务
 
问题
我要长时间执行一个任务
解决办法
使用 Timer 类,或者监听 sprite 的 enterFrame 事件
讨论
 
Timer 类是ActionScript 3.0新增的, 来代替早期的 setInterval( ) 和 setTimeout( ) 函数。当创建Timer类的实例时,它会在每个时间间隔激活 timer 事件,你可以在事件之间指定延时,然后就有足够的时间去激活 Timer 构造器了:
var timer:Timer = new Timer(delay, repeatCount);
使用 addEventListener 来设置一个函数处理这个事件,然后使用timer的 start( ) 方法启动或stop( ) 停止它。
Timer 类属于 flash.utils 包,还有 TimerEvent 类在 flash.events 包中,因此需要导入它们:
package ...
    
import flash.display.Sprite; 
    
import flash.events.TimerEvent; 
    
import flash.utils.Timer; 
     
    
public class ExampleApplication extends Sprite ...
        
        
private var _PreviousTime:Number = 0
         
        
public function ExampleApplication(  ) ...
            var tTimer:Timer 
= new Timer(50010); 
            tTimer.addEventListener(TimerEvent.TIMER, onTimer); 
            tTimer.start(  ); 
        }
 
         
        
private function onTimer(event:TimerEvent):void ...
            trace(flash.utils.getTimer(  ) 
- _PreviousTime); 
            _PreviousTime 
= flash.utils.getTimer(  );  
        }
 
    }
 
}

getTimer( ) 函数已经被移动到flash.utils 包中了。它返回程序开始有到现在的相对时间(微妙)
上个例子中,事件每隔5毫秒激活一次。如果你想模拟setInterval( ) 函数,把重复次数设为0。 stop( ) 方法类似于clearInterval( ) 函数,停止定时器.
如果想模拟 setTimeout( ) 函数,设置重复数为1,定时器等到指定时间激活一次事件,然后停止。
Timer类最好的用处就是创建动画而不依赖于影片帧速。看下面的例子,两个定时器时间间隔分别为50微妙和100微妙:
package ...
    
import flash.display.Sprite; 
    
import flash.events.TimerEvent; 
    
import flash.utils.Timer; 
     
    
public class ExampleApplication extends Sprite ...
        
private var _square:Sprite; 
        
private var _circle:Sprite; 
         
         
        
public function ExampleApplication(  ) ...
            
// 创建两个图形 
            _square = new Sprite(  ); 
            _square.graphics.beginFill(
0xff0000); 
            _square.graphics.drawRect(
00100100); 
            _square.graphics.endFill(  ); 
            addChild(_square); 
            _square.x 
= 100
            _square.y 
= 50
             
            _circle 
= new Sprite(  ); 
            _circle.graphics.beginFill(
0x0000ff); 
            _circle.graphics.drawCircle(
505050); 
            _circle.graphics.endFill(  ); 
            addChild(_circle); 
            _circle.x 
= 100
            _circle.y 
= 200
             
            
// 创建两个定时器,启动 
            var squareTimer:Timer = new Timer(500); 
            squareTimer.addEventListener(TimerEvent.TIMER, onSquareTimer); 
            squareTimer.start(  ); 
             
            var circleTimer:Timer 
= new Timer(1000); 
            circleTimer.addEventListener(TimerEvent.TIMER, onCircleTimer); 
            circleTimer.start(  ); 
        }
 
         
        
// 定义两个事件句柄 
        private function onSquareTimer(event:TimerEvent):void ...
            _square.x
++
        }
 
         
        
private function onCircleTimer(event:TimerEvent):void ...
            _circle.x
++
        }
 
    }
 
}

当然用enterFrame 事件也可以实现的,但Timer 技术更加灵活。 
分享到:
评论

相关推荐

    dbus-1.12.10.tar.gz(普通资源,通通5币)

    例如,一个简单的应用可能是通过DBus发送一个信号,通知其他应用某个事件发生,或者调用另一个应用提供的服务来执行某项任务。 8. **调试与监控**: 为了调试和监控DBus通信,可以使用工具如`dbus-monitor`,它...

    gradle-1.12

    "gradle-1.12"是Gradle的一个特定版本,发布于2014年,它继承了Ant的简洁配置风格,并融合了Maven的依赖管理理念,为开发者提供了更为现代化的构建解决方案。 在Ant的时代,它以其基于XML的简单构建脚本赢得了广泛...

    Visgrid-1.12 启动和管理节点工具

    - Selenium Grid是一个分布式测试框架,它允许在同一时间跨多个浏览器和操作系统执行Web应用的自动化测试,Visgrid则是对Grid功能的增强和简化。 2. **Visgrid 1.12的特性** - 在1.12版本中,Visgrid可能包含改进...

    你必须知道的495个C语言问题(PDF)

    4.4 我有个函数,它应该接受并初始化一个指针void f(int *ip) f static int dummy = 5; ip = &dummy;g 但是当我如下调用时: int *ip; f(ip); 调用者的指针却没有任何变化。. . . . . . . . . . . . . . . 18 4.5 我...

    Small RTOS v1.12.2.zip

    - **中断服务程序**:编写中断服务程序时要简洁高效,避免长时间运行的任务阻塞中断处理。 - **调试工具**:利用RTOS提供的调试工具,如任务状态监控、内存泄漏检测等,进行系统级的调试和优化。 - **电源管理**:...

    手稿_V1.12

    在每次循环中,我们都需要比较当前窗口的长度与已知的最大子串长度,并选择较长的一个。最后,当循环结束时,我们再次比较一下`ind_end`和`ind_front`之间的距离,以确保没有遗漏可能的最长子串。 这个解决方案的...

    ZendFramework中文文档

    3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. 身份(Identity) 3.4. HTTP 认证适配器 3.4.1. 简介 3.4.2. 设计回顾 ...

    Chronometask倒计时软件.zip

    Chronometask允许用户设置定时任务,比如定时关闭电脑,帮助用户在长时间工作或学习后自动休息,避免过度劳累。同时,还可以设置定时打开网页,例如每天固定时间查看新闻或者学习资料,实现自动化流程。 5. **简单...

    go1.12.7.src.tar.gz

    - **工作窃取算法**:当一个M执行完P中的任务后,会尝试从其他P中窃取任务,避免空闲。 5. **标准库详解** - **net/http**:提供HTTP客户端和服务器实现,支持HTTP/1.x和HTTP/2。 - **io/ioutil**:提供读写文件...

    ActionScript.3.0.Cookbook.Oct.2006.chm

    **1.12 长时间执行一个任务** - **异步处理:** 使用`load()`方法加载资源。 - **示例代码:** ```as3 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ...

    Excel_VBA.doc

    - **赋值语句**:将一个值赋给一个变量。 - 示例: ```vba Dim i As Integer i = 10 ``` **1.7 书写规范** - **命名约定**:变量名应有意义,避免使用单个字母。 - **缩进**:使用空格或制表符进行适当的缩进...

    Linux学习讲稿

    - 高度稳定:Linux系统的稳定性非常好,适合长时间运行关键任务的应用程序。 - 多用户多任务:能够同时支持多个用户登录并进行不同的任务。 - 安全性高:由于其开源特性,安全漏洞更容易被发现并得到及时修复。 -...

    测试培训教材

    一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试管理必须仔细思考的问题。...

    Excel.VBA从入门到精通

    - **Function函数**:除了执行操作外,还可以返回一个值。 - **Property属性过程**:用于定义对象的属性。 - **Event事件过程**:响应特定事件(如点击按钮)时执行的代码块。 **1.12 内部函数** VBA提供了一系列...

    python标准库.pdf

    - `fileinput.input(files=None, inplace=False, backup='')`: 从一个或多个文件中读取行。 **2.3 shutil模块** - **作用**:提供了一系列用于文件和集合的高级操作。 - **常见函数**: - `shutil.copyfile(src,...

    曙光read_file.pdf

    需要注意的是,不应使用系统的 `/tmp` 文件系统来存放重要数据或执行长时间任务。 ##### 1.4 修改密码 用户可以使用 `passwd` 命令来修改自己的密码。具体操作如下: ``` [nisuser1@login2~]$ passwd Changing ...

    清华第2版《计算机系统结构》习题解答

    如果一个系统的某部分性能得到改善,但其他部分不变,整体性能的提升受到未改进部分的影响。例如,如果某个计算密集型任务只有20%的部分可以并行化,那么即使并行化这部分的速度提高了10倍,系统最大理论加速比也...

    <计算机程序的构造和解释>第二版中文参考答案

    在Scheme中,可以定义一个接受其他函数作为参数的函数,例如一个排序函数可以接受一个比较函数作为参数。 ##### 5. 正则序与应用序 - **正则序**(Normal Order):在执行函数调用前先展开所有的参数,只对确实需...

Global site tag (gtag.js) - Google Analytics