我一直在阅读有关 Javascript 语言中两个(相对)新概念的文章 - Web Workers 和 John Resig 的很棒的 Processing.js(好吧,这并不是一个新的“Javascript 概念”,但你明白我的意思)。互联网上流传着一些很好的例子,但我还没有找到一个有效地使用这两种技术的例子。它对我来说看起来非常有趣和强大,所以我想我最好试一试。
但是,我真的想不出最好的脚本设计来集成它们两者......在我看来,通常,当使用 Processing.js 时,一些类是在 '处理应用程序'。它允许您使用类似 Java 的语法来解决这个问题。然而,这些类只能在处理应用程序中访问——这是显而易见的。但是我们有 worker ......在this令人惊叹的例子,一个 Javascript 函数对象首先在一个单独的脚本中定义,如果需要使用 Worker,Worker 脚本会导入该对象的原型(prototype)和某种“ bolt ”本身。
对我来说,这两者似乎不能“互换”,因为当您在 Worker 脚本中时,您无法访问您在处理应用程序中定义的类。可能是有原因的,因为类似 Processing 的类绝对不是很像 Javascript。据我所知,我将不得不在我的 Worker 脚本中对类进行类似的定义(以新函数原型(prototype)的形式)——这对可维护性来说不是很好,而且看起来是非常糟糕的设计对我来说,尽管我在这个问题上还是个新手。
我是不是忽略了什么?我想要一些不应该的东西吗?或者我只是误解了一些基本概念?
感谢您的帮助!
编辑:
继续尝试弄乱 Worker 的原型(prototype),以便将其“塑造”成它应该为其工作的对象,但很快意识到这不是可行的方法。
让我们尝试使用一个大纲:
我有一个“球”类,除了存储二维位置外几乎什么都不做。在每个 draw() 循环中,Processing.js 调用其 update() 方法,使 Ball 采用新位置。然后调用display()方法,让Ball在当前位置画一个小圆圈。
没有什么复杂的开始。现在,假设确定球的新位置是一项相当昂贵的操作——例如,如果它涉及球在“复杂”重力场中的运动。如果在绘制之前每次都必须进行此计算,则至少会造成一些延迟。但是,如果您设法同时执行这些操作,它可能会运行得更顺畅。因此,我发现我可以在其属性列表中为 Ball 类提供一个额外的“位置”数组,该数组将保存其所有连续位置。当 Ball 被实例化时,它会创建一个新的 Worker 来开始计算位置,每次完成一次,它都会向 Ball 发回一条消息,其中包含一个新的二维位置。然后 Ball 会将这个记录插入它的位置数组,所以每次它必须更新它的位置时,它只是走到数组中的下一条记录。
总而言之 - 好主意还是坏主意?如果好的,有什么关于如何设计的建议吗?
最佳答案
3D 游戏物理模拟(如在 xbox360 上)通常以固定速率运行,与帧速率无关。那是因为物理学太复杂而无法进行分析建模,因此您进行数值近似,因此您需要确定性地同步误差。额外的好处是帧速率与物理性能分离,因此您可以以 5hz 更新物理并进行插值等。
所以您描述的模型正是专业人士的做法。
关于javascript - 结合 Processing.js 和 Web Worker 的强大功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318785/
我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法
只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要从基于ruby的应用程序使用AmazonSimpleNotificationService,但不知道从哪里开始。您对从哪里开始有什么建议吗?
在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:classProductsControllerTest我的问题是:方法调用products()在哪里/如何定义?products(:one)到底是什么意思?看代码,大概意思是“创建一个产品”,但是它是如何工作的呢?注意我是Ruby/Rails的新手,如果这些是微不足道的问题,我深表歉意。 最佳答案 如果您查看test/fixtures文件夹,您会看到一个products.yml文件。这是在您创建
在我的一些Controller中,我有一个before_filter检查用户是否登录?用于CRUD操作。application.rbdeflogged_in?unlesscurrent_userredirect_toroot_pathendendprivatedefcurrent_user_sessionreturn@current_user_sessionifdefined?(@current_user_session)@current_user_session=UserSession.findenddefcurrent_userreturn@current_userifdefine
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我有一个包含多个组件的存储库,其中大部分是用JavaScript(Node.js)编写的,一个是用Ruby(RubyonRails)编写的。我想要一个.travis.yml文件来触发一个运行每个组件的所有测试的构建。根据thisTravisCIGoogleGroupthread,目前还没有官方支持。我的目录结构是这样的:.├──构建服务器├──核心├──扩展├──网络应用├──流浪文件├──package.json├──.travis.yml└──生成文件我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2)。我已经有了一个make目标,所以maketest在每