0

現在、道路の動きのアニメーションを作成しようとしていますが、道路が自分自身をスケーリングしてはならない方法を理解できません。コード全体は私のものではありません。チュートリアルからのものです。必要に応じて変更しようとしましたが、常に同じ速度で上から見た場合のように道路が移動する必要がある部分を実行できません(鳥瞰図) . 現在、私はこのswfファイルを持っています

http://www.stouchgames.com/APKs/Road.swf

上に小さな線があり、次に下に動く大きな線のようにはなりたくありません。上から下に移動する同じように大きな線になりたいだけです。これまでのところ、2 つのフレームを持つ単純な movieClip があり、フレームには次の図のグラフィックがあります。

http://stouchgames.com/APKs/road.jpg

そしてこのコード:

package {

      import flash.display.MovieClip;
      import flash.events.Event;

      public class Main extends MovieClip {

                //Depth of the visible road
                private const roadLines:int = 320;
                //Dimensions of the play area.
                private const resX:int = 480;
                private const resY:int = 320;
                //Line of the player's car.
                private const noScaleLine:int = 8;
                //All the road lines will be accessed from an Array.
                private var yMap:Array = [];
                private var lines:Array = [];
                private var halfWidth:Number;
                private var lineDepth:int;
                private const widthStep:Number = 0;

                private var playerY:Number;

                private var speed:int = 2;
                private var texOffset:int = 100;


                public function Main() {
                          //Populate the zMap with the depth of the road lines
                          for (var i:int = 0; i < roadLines; i++) {
                                    yMap.push(1 / (i - resY));
                          }

                          playerY = 100 / yMap[noScaleLine];


                          for (i = 0; i < roadLines; i++) {
                                    yMap[i] *=  playerY;
                          }
                          //Make the line at the bottom to be in front of the rest,
                          //and add every line at the same position, bottom first.
                          lineDepth = numChildren;
                          for (i = 0; i < roadLines; i++) {
                                    var line = new Road();
                                    lines.push(line);
                                    addChildAt(line, lineDepth);
                                    line.x = resX / 2;
                                    line.y = resY - i;
                          }
                          //Scaling the road lines according to their position

                         addEventListener(Event.ENTER_FRAME, race);
                }

                private function race(event:Event):void {
                          for (var i:int = 0; i < roadLines; i++) {
                                    if ((yMap[i] + texOffset) % 100 > 50) {
                                              lines[i].gotoAndStop(1);
                                    } else {
                                              lines[i].gotoAndStop(2);
                                    }
                          }
                          texOffset = texOffset + speed;
                          while (texOffset >= 100) {
                                    texOffset -=  100;
                          }
                }
      }

}

グラフィックの異なる 2 つのロード ムービー クリップを作成してみました。

for (var i:int = 0; i < 8; i++) {

            if (((i % 2) == 0)) {
                var line = new Road  ;
                lines.push(line);
                addChildAt(line,lineDepth);
                line.x = resX / 2;
                line.y = resY - i * 50;
                line.alpha = .2;
            }
            if (((i % 2) == 1)) {
                var line = new Road2  ;
                lines.push(line);
                addChildAt(line,lineDepth);
                line.x = resX / 2;
                line.y = resY - i * 50;
                line.alpha = .5;
            }

しかし、Event.EVERYフレーム機能に入ると、それらをスムーズに動かすことができません...そして、解像度を変更したい場合は、より詳細な結末と最終的な原因の最初の方法で行う必要があると判断しました道路の私はそれでそれをはるかに簡単に行うことができます。もちろん、私は以前にこのようなことをしたことがないので、間違っている可能性があります.

それで、誰かが助けることができますか?

4

1 に答える 1

0

レース関数のyMap[i]iに置き換えます。

for (var i:int = 0; i < roadLines; i++) {
    if ((i + texOffset) % 100 > 50) {
         lines[i].gotoAndStop(1);
    } else {
         lines[i].gotoAndStop(2);
    }
}
于 2013-08-26T18:00:59.623 に答える