1

このコードはここにあります: https://github.com/shinstudio/html5_myown_party/blob/master/news_ticker/index.html

ティッカーのスクロールを右から左に変更する必要があります。

キャンバス js コード:

<div id="border">
   <canvas id="bannershow" width="500" height="150" />
</div>

var globalx = 0;
var vector = 1;
var interval = 120;
var canvas = document.getElementById('bannershow');
var ctx = canvas.getContext('2d');
var fontsize = 80;
var canvasHeight = 150;
var canvasWidth = 500;

function banner(label) {

    ctx.clearRect(0, 0, canvasWidth, canvasHeight);    
    ctx.fillStyle = 'rgb(0, 0, 0)';
    ctx.fillRect (0, 0, canvasWidth, canvasHeight);

    ctx.fillStyle = 'rgba(255, 255, 255, 0.4)'
    ctx.font = fontsize + 'px Helvetica';
    ctx.textBaseline = 'top';

    if (globalx > canvasWidth) {
        globalx = ctx.measureText(label).width * -1;
    }
    ctx.fillText(label, globalx, (canvasHeight-fontsize)/2);

    globalx += vector;
}
setInterval(banner, 1000/interval, 'Helvetica is the new font');
4

4 に答える 4

1

banner() 関数を次のように変更する必要があります。

       function banner(label) {
            ctx.clearRect(0, 0, canvasWidth, canvasHeight);    
            ctx.fillStyle = 'rgb(0, 0, 0)';
            ctx.fillRect (0, 0, canvasWidth, canvasHeight);

            ctx.fillStyle = 'rgba(255, 255, 255, 0.4)'
            ctx.font = fontsize + 'px Helvetica';
            ctx.textBaseline = 'top';
            if (globalx < ctx.measureText(label).width * -1) {
                 globalx =  canvasWidth;
            }
            ctx.fillText(label, globalx, (canvasHeight-fontsize)/2);

            globalx -= vector;
        }

負のベクトルは移動を逆にし、globalx の変更された条件は連続ループを保持します。

于 2013-11-12T06:44:54.823 に答える
0

globalx は、増加して 0 からキャンバスの幅になる vraibale です。その逆を行うだけで、おそらくうまくいくでしょう。

                    function banner(label) {
                    ctx.clearRect(0, 0, canvasWidth, canvasHeight);    
                    ctx.fillStyle = 'rgb(0, 0, 0)';
                    ctx.fillRect (0, 0, canvasWidth, canvasHeight);

                    ctx.fillStyle = 'rgba(255, 255, 255, 0.4)'
                    ctx.font = fontsize + 'px Helvetica';
                    ctx.textBaseline = 'top';
                    globalx = canvaswidth;
                    if (globalx > 0 ) {
                         globalx = ctx.measureText(label).width * 1;
                    }
                    ctx.fillText(label, globalx, (canvasHeight-fontsize)/2);

                    globalx -= vector;
                }

PS - 私はそれをテストしていませんが、キャンバスの幅から始めて globalx で逆を行うとうまくいくようです。

于 2013-11-12T06:42:25.877 に答える
0
                        var globalx = 0;
                        var vector = 2;
                        var interval = 120;
                        var canvas = document.getElementById('bannershow');
                        var ctx = canvas.getContext('2d');
                        var fontsize = 120;
                        var canvasHeight = 150;
                        var canvasWidth = 500;

                        function banner(label) {

                            ctx.clearRect(0, 0, canvasWidth, canvasHeight);    
                            ctx.fillStyle = 'rgb(0, 0, 0)';
                            ctx.fillRect (0, 0, canvasWidth, canvasHeight);

                            ctx.fillStyle = 'rgba(255, 255, 255, 0.4)'
                            ctx.font = fontsize + 'px Helvetica';
                            ctx.textBaseline = 'top';
                            if (globalx > canvasWidth) {
                                 globalx = ctx.measureText(label).width * -1;
                            }
                            ctx.fillText(label, globalx, (canvasHeight-fontsize)/2);
                            if(globalx==-500)
                            {
                                globalx=50;
                            }
                            globalx -= vector;
                        }
                        setInterval(banner, 1000/interval, 'Helvetica');

少しチェックした後、これがループしており、同様に機能していることがわかりました。その間隔を変更したい場合は、globalx値を変更できます。

if(globalx==-500)
{
  globalx=50;
}

これを変更して間隔を変更しますが、すべてがうまく機能していることを除いて、これはあなたが考えるのに役立つと思います... :)

[アップデート]

globax=interval この間隔を変更

于 2013-11-12T06:49:44.603 に答える