1

これは、AS3 を使用して行ったことです。

var BGround1:Background=new Background();
var BGround2:Background= Background();
stage.addChild(BGround1);
stage.addChild(BGround2);
addEventListener(Event.ENTER_FRAME, moveScroll, false, 0, true);

function moveScroll(e:Event): void
{

     BGround1.x -= scrollSpeed; 
     BGround2.x -= scrollSpeed; 
     if(BGround1.x <= -BGround1.width)
     {
           BGround1.x =BGround2.x + BGround2.width;
     }
     else if(BGround2.x <= -BGround2.width)
     {
           BGround2.x = BGround1.x + BGround1.width;
     }

}

ただ、scrollSpeed高くしすぎると動きが滑らかになりません。スムーズなアニメーションを作成する方法はありますか? 前もって感謝します。

4

2 に答える 2

2

Hungry Heroゲームは滑らかな無限スクロールの背景を持ち、フレームバウンドではありません。このゲームはオープン ソースであり、作成者はこのビデオ チュートリアルを使用して、必要なものをどのように達成したかを説明しています。

基本的に、各背景レイヤーにはスクロール速度parallaxDepth (視差効果を実現するため) があり、全体のスクロール速度_speedを制御する変数があります(主人公がコーヒーを飲むとスクロール速度が上がるため)。

これはコードの一部ですが、彼のビデオ チュートリアルを見て、Github でソース コードを参照することをお勧めします。

// overall speed
var _speed = 1;

bgLayer1 = new BgLayer(1);
bgLayer1.parallaxDepth = 0.02;
this.addChild(bgLayer1);

bgLayer3 = new BgLayer(3);
bgLayer3.parallaxDepth = 0.5;
this.addChild(bgLayer3);

private function onEnterFrame(event:Event):void
{
    // Background 1 - Sky
    bgLayer1.x -= Math.ceil(_speed * bgLayer1.parallaxDepth);
    // Hero flying left
    if (bgLayer1.x > 0) bgLayer1.x = -stage.stageWidth;
    // Hero flying right
    if (bgLayer1.x < -stage.stageWidth ) bgLayer1.x = 0;


    // Background 3 - Buildings
    bgLayer3.x -= Math.ceil(_speed * bgLayer3.parallaxDepth);
    // Hero flying left
    if (bgLayer3.x > 0) bgLayer3.x = -stage.stageWidth;
    // Hero flying right
    if (bgLayer3.x < -stage.stageWidth ) bgLayer3.x = 0;    
}
于 2013-11-21T00:04:56.000 に答える