AS3多线程快速入门(三)-NAPE物理引擎+Starling

AS3多线程快速入门(三)-NAPE物理引擎+Starling原文 http blog domlib com articles 345 更新 Adobe 在 11 4 正式发布的最后一刻移除了 ByteArray shareable 功能的支持 推迟到 11 5 版本再发布 为了解决这个问题 源码已经被我更新过了 但这里还是留下完整的示例代码 因为它能最终会正常运行的

大家好,我是讯享网,很高兴认识大家。

原文:http://blog.domlib.com/articles/345

[更新]Adobe在11.4正式发布的最后一刻移除了ByteArray.shareable功能的支持,推迟到11.5版本再发布。为了解决这个问题,源码已经被我更新过了。但这里还是留下完整的示例代码,因为它能最终会正常运行的。

在《AS3多线程快速入门》系列教程的第一部分中,我们研究了AS3 Worker的基本原理,包括多种通信方式,还展示了一个简单例子:Hello World Worker。

在系列教程的第二部分中,我们研究了在一个在独立线程里执行图像处理的例子。

多线程版本演示地址:http://esdot.ca/examples/NapeWorkerExample.html

作为对比,让我再看看传统的单线程版本执行效果:

单线程版本演示地址:http://esdot.ca/examples/NapeLegacyExample.html


讯享网

在大多数电脑上,你的CPU满负荷工作情况下,单线程版本的测试将难以达到45fps。即使你有一个性能超级高的CPU,让帧率接近了60fps,你的CPU仍然是满负荷的。你将没有任何空余的时间片来处理游戏中的其他操作。相比之下,使用多线程的版本,在CPU上几乎没有时间占用,它仅花了小于1ms的时间在反序列化数据和一系列向Starling推送数据的操作上。有这么多的空闲时间它都可以抽根烟休息一下了!

概述

首先简要概述下它是如何运行的:

1.Nape的物理模拟将会完全运行在Worker线程内部。
2.当主线程想要添加一个物理对象时,就调用Worker线程。
3.每一帧,Worker线程都会复制所有物理对象的位置数据到共享的ByteArray里。
4.主线从ByteArray对象里读取位置数据,并使用它们来更新屏幕上的Sprite对象位置。

我们先从文档类开始,看看发送给Worker线程的信息。然后再看下Worker内部实际运行的物理引擎代码。

文档类代码

第一步是创建Worker和一些MessageChannels对象,让我们能够通信。

到现在,你应该对基于Worker的应用程序的代码模板比较熟悉了吧:

 ?

讯享网
小讯
上一篇 2025-03-10 15:36
下一篇 2025-02-23 16:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/43133.html