Flash cc + html 5: рисовать линии между движущимися объектами
Я аниматор, пытающийся перейти к кодированию, и я немного застрял в основах.
Это простой цикл ходьбы персонажа, и я пытаюсь нарисовать ноги с кодом [arcTo] между телом [ManBody] и ногами [foot01].
Линии прорисовываются и тело движется - но линии перерисовываются на КАЖДОМ кадре - Как / Где мне stage.update(); так что это просто одна линия, которая рисует на сцене, а затем перемещается между движущимися частями?
//mouse cursor
stage.canvas.style.cursor = "none";
this.ManBody.mouseEnabled = false;
this.addEventListener("tick", fl_CustomMouseCursor.bind(this));
function fl_CustomMouseCursor() {
this.ManBody.x = (stage.mouseX+350) * 0.5 ;
this.ManBody.y = (stage.mouseY+200) * 0.5;
}
//line
createjs.Ticker.addEventListener("tick",fl_DrawLineCont.bind(this));
createjs.Ticker.setFPS(10);
function fl_DrawLineCont(event) {
var stroke_color = "#ff0000";
var shape = new createjs.Shape(new createjs.Graphics().beginStroke(stroke_color)
.moveTo(this.ManBody.x, this.ManBody.y)
.arcTo(this.foot01.x, this.foot01.y, this.ManBody.x, this.ManBody.y, 50).endStroke());
this.addChild(shape);
stage.update(event);
}
1 ответ
Решение
Вы создаете фигуру в каждом кадре, вы должны создать ее вне этого и перерисовать графику следующим образом:
var stroke_color = "#ff0000";
var graphics = new createjs.Graphics()
var shape = new createjs.Shape(graphics);
this.addChild(shape);
function fl_DrawLineCont(event)
{
graphics.clear();
graphics.beginStroke(stroke_color);
graphics.moveTo(this.ManBody.x, this.ManBody.y).arcTo(this.foot01.x, this.foot01.y, this.ManBody.x, this.ManBody.y, 50).endStroke();
stage.update(event);
}