0

我正在尝试使用 CraftyJS 框架制作 2D JavaScript 游戏。但我坚持使用“centerOn”功能。

这是代码:http: //jsfiddle.net/R8ND7/17/

Crafty.init(500, 350, document.getElementById('game'))
    .background('#eee');

Crafty.e('Earth, 2D, DOM, Canvas, Color')
    .attr({x: 0, y: 100, w: 480, h: 400})
    .color('#6C3108');

var hero = Crafty.e('Hero, 2D, DOM, Canvas, Color, Gravity, Fourway')
    .attr({x: 60, y: 90, w: 10, h: 20})
    .color('#338')
    .gravity('Earth')
    .fourway(4);

Crafty.viewport.follow(hero, -60, 0);
// Crafty.viewport.centerOn(hero, 10);

当您取消注释最后一行 JavaScript 时,您将看到该方法不起作用:

  1. 英雄不在屏幕中央(他在顶部屏幕上)。
  2. Hero 的动作渲染坏了(至少在我的 Chrome 和 Firefox 中)。

任何想法我做错了什么?

感谢您的回答。

4

1 回答 1

3
  1. 居中无法正常工作,因为默认情况下,Crafty 将视口夹在可见的实体集上。您可以使用 禁用此功能Crafty.viewport.clampToEntities = false。(这经常出现,我怀疑它需要默认禁用!)

  2. 渲染被破坏了,因为您同时为实体提供了 DOM 和 Canvas 渲染组件——您应该只使用其中一个。

  3. 就像你知道的那样,调用视口动画centerOn会禁用follow. (或任何其他当前动画。)

是您的代码的工作版本。

于 2014-04-28T15:19:13.093 回答