本文整理匯總了TypeScript中matter-js.World類的典型用法代碼示例。如果您正苦於以下問題:TypeScript World類的具體用法?TypeScript World怎麽用?TypeScript World使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了World類的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: switch
const loop = () => {
switch (currentState) {
case GameState.TITLE:
break;
case GameState.PLAYING:
hidePausedTitle();
hideGameOverTitle();
Matter.Events.on(engine, 'collisionStart', onCollisionCallback);
break;
case GameState.GAME_OVER:
Matter.World.remove(engine.world, currentPiece);
Matter.Events.off(engine, 'collisionStart', onCollisionCallback);
gameOver(engine);
showGameOverTitle();
break;
case GameState.PAUSED:
runner.enabled = !runner.enabled;
showPausedTitle();
break;
case GameState.FROZEN:
runner.enabled = !runner.enabled;
break;
default:
break;
};
};
示例2: default
export default () => {
const engine: Matter.Engine = Matter.Engine.create();
const renderer: Matter.Render = Matter.Render.create({
canvas: document.querySelector('#game'),
engine,
options: {
// @ts-ignore
background: 'transparent',
height: PLAYING_FIELD_DIMENSIONS.HEIGHT,
width: PLAYING_FIELD_DIMENSIONS.WIDTH,
wireframes: false,
}
});
const mouse: Matter.Mouse = Matter.Mouse.create(renderer.canvas);
const mouseConstraint: Matter.MouseConstraint = Matter.MouseConstraint.create(engine, {
mouse,
});
Matter.World.add(engine.world, mouseConstraint);
Matter.Render.run(renderer);
const runner: Matter.Runner = Matter.Runner.create({})
Matter.Runner.run(runner, engine);
return {
runner,
instance: engine
};
};
示例3: removeAllTetronimos
const reset = () => {
if (currentState !== GameState.GAME_OVER) return;
removeAllTetronimos(engine);
init();
setGameState(GameState.PLAYING);
init();
Matter.World.add(engine.world, floor);
};
示例4:
const removeAllTetronimos = (engine: Matter.Engine) => {
if (isRemoving) return;
const bodies = Matter.Composite.allBodies(engine.world);
const tetronimos = bodies.filter(body => body.label === LABEL.TETRONIMO);
if (tetronimos.length === 0) return;
isRemoving = true;
for (let i = 0; i < tetronimos.length; i++) {
Matter.World.remove(engine.world, tetronimos[i]);
}
}
示例5: setInterval
const gameOver = (engine: Matter.Engine) => {
const bodies = Matter.Composite.allBodies(engine.world);
const floor = bodies.filter(body => body.label === LABEL.FLOOR);
if (bodies.length === 0) return;
for (let i = 0; i < floor.length; i++) {
Matter.World.remove(engine.world, floor[i]);
}
setInterval(() => {
removeAllTetronimos(engine);
}, 2000);
};
示例6: default
/**
* This is way too big and convoluted,
* Break some of it out
*/
export default (engine: Matter.Engine, runner: Matter.Runner) => {
let currentState: GameState = 2;
let nextPiece: Matter.Body = createBlock();
let currentPiece: Matter.Body;
let isRemoving: boolean = false;
const gameOver = (engine: Matter.Engine) => {
const bodies = Matter.Composite.allBodies(engine.world);
const floor = bodies.filter(body => body.label === LABEL.FLOOR);
if (bodies.length === 0) return;
for (let i = 0; i < floor.length; i++) {
Matter.World.remove(engine.world, floor[i]);
}
setInterval(() => {
removeAllTetronimos(engine);
}, 2000);
};
const loop = () => {
switch (currentState) {
case GameState.TITLE:
break;
case GameState.PLAYING:
hidePausedTitle();
hideGameOverTitle();
Matter.Events.on(engine, 'collisionStart', onCollisionCallback);
break;
case GameState.GAME_OVER:
Matter.World.remove(engine.world, currentPiece);
Matter.Events.off(engine, 'collisionStart', onCollisionCallback);
gameOver(engine);
showGameOverTitle();
break;
case GameState.PAUSED:
runner.enabled = !runner.enabled;
showPausedTitle();
break;
case GameState.FROZEN:
runner.enabled = !runner.enabled;
break;
default:
break;
};
};
const removeAllTetronimos = (engine: Matter.Engine) => {
if (isRemoving) return;
const bodies = Matter.Composite.allBodies(engine.world);
const tetronimos = bodies.filter(body => body.label === LABEL.TETRONIMO);
if (tetronimos.length === 0) return;
isRemoving = true;
for (let i = 0; i < tetronimos.length; i++) {
Matter.World.remove(engine.world, tetronimos[i]);
}
}
const right: Matter.Body = Matter.Bodies.rectangle(PLAYING_FIELD_DIMENSIONS.WIDTH, 0, PLAYING_FIELD_DIMENSIONS.WALL_WIDTH, PLAYING_FIELD_DIMENSIONS.HEIGHT * 2, {
alive: false,
isStatic: true,
label: LABEL.WALL,
slop: 0,
});
const left: Matter.Body = Matter.Bodies.rectangle(0, 0, PLAYING_FIELD_DIMENSIONS.WALL_WIDTH, PLAYING_FIELD_DIMENSIONS.HEIGHT * 2, {
alive: false,
isStatic: true,
label: LABEL.WALL,
slop: 0,
});
const floor: Matter.Body = Matter.Bodies.rectangle(0, PLAYING_FIELD_DIMENSIONS.HEIGHT, PLAYING_FIELD_DIMENSIONS.WIDTH * 2, PLAYING_FIELD_DIMENSIONS.WALL_WIDTH, {
alive: false,
isStatic: true,
label: LABEL.FLOOR,
slop: 0,
});
Matter.World.add(engine.world, [left, right, floor]);
Matter.Events.on(engine, 'afterTick', () => {
checkClear();
});
// @ts-ignore
const onCollisionCallback = (event) => {
for (let i = 0; i < event.pairs.length; i++) {
const { bodyA, bodyB }: { bodyA: Matter.Body, bodyB: Matter.Body } = event.pairs[i];
if (bodyA.parent.alive || bodyB.parent.alive) {
document.getElementById('container').className = 'shake shake-constant';
setInterval(() => {
//.........這裏部分代碼省略.........
示例7: createBlock
const addBlockToGameBoard = () => {
currentPiece = nextPiece;
nextPiece = createBlock();
Matter.World.addBody(engine.world, currentPiece);
renderNextPiece(nextPiece);
};