我正在努力了解Crafty。这是我的代码。
SELECT julianday('now') - julianday('1776-07-04');
我想添加
Crafty.init(500,300, document.getElementById('game'));
Crafty.e('Floor, 2D, Canvas, Color')
.attr({x: 0, y: 250, w: 200, h: 10})
.color('green');
Crafty.e('SecondFloor, 2D, Canvas, Color')
.attr({x: 250, y: 230, w: 200, h: 10})
.color('red')
Crafty.background('#FFFFFF url(http://samenvattingleren.nl/img/img2.jpg) no-repeat center center');
Crafty.e('2D, Canvas, Color, Fourway, Gravity')
.attr({x: 25, y: 5, w: 50, h: 50})
.color('orange')
.fourway(4)
.gravity("Floor")
.bind('KeyDown', function(e) {
if(e.key == Crafty.keys.LEFT_ARROW) {
this.x = this.x - 1;
} else if (e.key == Crafty.keys.RIGHT_ARROW) {
this.x = this.x + 1;
} else if (e.key == Crafty.keys.UP_ARROW) {
this.y = this.y - 1;
} else if (e.key == Crafty.keys.DOWN_ARROW) {
this.y = this.y + 1;
} else if (e.key == Crafty.keys.ESC) {
this.x = 0;
}
})
但这不起作用。广场仍然通过SecondFloor
答案 0 :(得分:1)
" Floor"组件应被视为一种标记,您可以将其添加到任何应充当楼层的实体。在您的示例代码中,似乎没有必要区分" Floor"和#34; SecondFloor",所以你可以将后者更改为" Floor"。
如果您有两个custom components,您希望始终充当场内,解决方案是让他们需要" Floor"组件自动。例如
Crafty.c("IcePlatform", {
init: function(){ this.requires("Floor"); }
// Stuff specific to "IcePlatform"
};
Crafty.c("MovingPlatform", {
init: function(){ this.requires("Floor"); }
// Stuff specific to "MovingPlatform"
};
然后每当有任何实体拥有" MovingPlatform"或" IcePlatform"也将作为" Floor",并与Gravity进行适当的互动。