让我们绘图吧
为了建立应用,我们需要创建一个状态,一组工具,一组控件和一个分派函数。 我们可以将它们传递给PixelEditor
构造器来创建主要组件。 由于我们需要在练习中创建多个编辑器,因此我们首先定义一些绑定。
const startState = {
tool: "draw",
color: "#000000",
picture: Picture.empty(60, 30, "#f0f0f0"),
done: [],
doneAt: 0
};
const baseTools = {draw, fill, rectangle, pick};
const baseControls = [
ToolSelect, ColorSelect, SaveButton, LoadButton, UndoButton
];
function startPixelEditor({state = startState,
tools = baseTools,
controls = baseControls}) {
let app = new PixelEditor(state, {
tools,
controls,
dispatch(action) {
state = historyUpdateState(state, action);
app.setState(state);
}
});
return app.dom;
}
解构对象或数组时,可以在绑定名称后面使用=
,来为绑定指定默认值,该属性在缺失或未定义时使用。 startPixelEditor
函数利用它来接受一个对象,包含许多可选属性作为参数。 例如,如果你未提供tools
属性,则tools
将绑定到baseTools
。
这就是我们在屏幕上获得实际的编辑器的方式:
<div></div>
<script>
document.querySelector("div")
.appendChild(startPixelEditor({}));
</script>
来吧,画一些东西。 我会等着你。