首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SVG.js -如何移动和旋转元素以遵循路径,使元素始终保持标题

问SVG.js -如何移动和旋转元素以遵循路径,使元素始终保持标题
EN

Stack Overflow用户
提问于 2018-01-16 18:12:31
回答 2查看 742关注 0票数 0

我正在使用SVG.js和jquery开发一个简单的游艇竞赛SVG动画来模拟游艇竞赛。我可以很容易地动画图像游艇图标沿着这条路。但我也希望游艇旋转或改变游艇的航向,因为游艇沿着路径/路线行驶。我试过一种看法,但无法使它发挥作用。请帮帮忙!

我在用这个代码..。

代码语言:javascript
复制
function move_yacht_new(route,yacht,score){
        var route1 = draw.path('M 535.07931,510.0164 C 594.9314,509.34072 667.14382,469.54596 691.80372,382.84271');
        route1.fill('none');
        var length = route1.length();
        var y_pos = score;
        var sailAngle = 90;
        var currentRotation;
        route1.hide();

        var text = draw.text(function(add) {
          add.tspan('We go ')
          add.tspan('up').fill('#f09').dy(-40)
          add.tspan(', then we go down, then up again').dy(40)
        })

        var image = draw.image('../globals/game/images/' + yacht + '-yacht.png',20, 20).id('yacht_' + yacht);       


        var scorePerc = (length/100) * (score);
         //vdiscountPerc = calcPerc.toFixed();

        var text = draw.text(yacht + ' (' + Math.round(score) + ')');


        image.animate(5000, '<>').during(function(pos, morph, eased){
            var p = route1.pointAt(eased * scorePerc);
            image.move(p.x, p.y);

            text.move(p.x, p.y).font({ fill: '#fff',  size: 5, family: 'Helvetica', leading:  '1.5em'  });
            var coord = image.bbox();
            var center = coord.x + (coord.width/2) + ' '+ coord.y + (coord.height/2);
            console.log('center ' + center);

            var x_coord = image.attr('x');
            var y_coord = image.attr('y');
            //console.log(x_coord + ',' + y_coord);
            image.rotate(-45, coord.x + (coord.width/2), coord.y + (coord.height/2));

            var angle = Math.atan2(p.y, p.x) * 180 / Math.PI;//angle for tangent

            //Shifting center to center of rocket
            var centerX = p.x - 24,
            centerY = p.y - 12;
            console.log('angle > ' + angle);


        //}).loop(true, true)
        })


    }

区块报价

但这会使图标偏离路径的错误方向。

EN

回答 2

Stack Overflow用户

发布于 2018-01-25 13:24:00

我设法使用animation.js脚本解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2018-02-15 11:17:06

将游艇图标添加到一个组中,沿着路径翻译该组,并围绕组原点旋转该组中的游艇图标:

代码语言:javascript
复制
var g = draw.group()
var yacht = g.image(yachtUrl, width, height).center(0,0)

// in animate function:
g.transform(x: x, y: y)
yacht.transform(rotation: degrees, cx: 0, cy: 0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48287422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档