Paper.js - конвертировать `aperscript` в `javascript`
Я пытаюсь это изменить paperscript
:
<script type="text/paperscript" canvas="canvas-1">
tool.minDistance = 10;
tool.maxDistance = 45;
var path;
function onMouseDown(event) {
path = new Path();
path.fillColor = new Color({ hue: Math.random() * 360, saturation: 1, brightness: 1 });
path.add(event.point);
}
function onMouseDrag(event) {
var step = event.delta / 2;
step.angle += 90;
var top = event.middlePoint + step;
var bottom = event.middlePoint - step;
path.add(top);
path.insert(0, bottom);
path.smooth();
}
function onMouseUp(event) {
path.add(event.point);
path.closed = true;
path.smooth();
}
</script>
в одиночестве javascript
лайк:
paper.install(window);
window.onload = function() {
paper.setup('myCanvas');
tool.minDistance = 10;
tool.maxDistance = 45;
var path;
function onMouseDown(event) {
path = new Path();
path.fillColor = {
hue: Math.random() * 360,
saturation: 1,
brightness: 1
};
path.add(event.point);
}
function onMouseDrag(event) {
var step = event.delta / 2;
step.angle += 90;
var top = event.middlePoint + step;
var bottom = event.middlePoint - step;
path.add(top);
path.insert(0, bottom);
path.smooth();
}
function onMouseUp(event) {
path.add(event.point);
path.closed = true;
path.smooth();
}
}
это дает мне ошибку:
Ошибка типа: undefined не является объектом (оценка 'tool.minDistance = 10')
Что такое tool
Вот? Я понимаю, что мне может потребоваться объявить об этом, прежде чем я смогу его использовать. Есть идеи, как решить эту проблему?
2 ответа
Вы должны сделать глобальную область видимости, как указано в документации:
paper.install(window);
Тогда переходите к глобальным определениям.:
window.onload = function() {
// Get a reference to the canvas object
paper.setup('myCanvas');
// In your case create tools
var tool = new Tool();
tool.minDistance = 10;
tool.maxDistance = 45;
Затем продолжайте как обычно, это настроит ваши инструменты. Подробнее можно найти здесь.
Кстати, вы на самом деле уже сделали это правильно для Path()
То же самое относится и к Tool()
Когда я использую Paper.js непосредственно в javascript, я предпочитаю создавать бумажный объект следующим образом:
var canvas = document.getElementById('canvas-line');
paper.setup(canvas);
// and then if you want to create some Paper.js object prefix it's name with paper
var myPath = new paper.Path();
Если вы хотите использовать инструмент, вам нужно замедлить его с новым paper.Tool(); Например, если вы хотите проверить, был ли выбран путь:
var tool1 = new paper.Tool();
var handle;
var myPath;
myPath.fullySelected = true;
tool1.onMouseDown = function(event) {
handle = null;
// Do a hit test on path for handles:
var hitResult = myPath.hitTest(event.point, {
handles: true,
fill: true,
stroke: true,
segments: true,
tolerance: 2
});
if (hitResult) {
if (hitResult.type == 'handle-in') {
handle = hitResult.segment.handleIn;
} else if (hitResult.type == 'segment') {
handle = hitResult.segment.point;
} else if (hitResult.type == 'handle-out') {
handle = hitResult.segment.handleOut;
}
}
}
Вы можете найти больше информации об инструментах здесь http://paperjs.org/reference/tool/