0

これで同じ要素を使用する前にパターン要素をスケーリングしようとしています _mesh.graphics.beginBitmapFill(_box, matrix, true, true);が、それを考慮せず、パターン要素をスケーリングしません>背景のみ。これは、「 Box」という名前で背景を塗りつぶすために使用されるパターン要素です。

パターン要素

これは、私が望む効果を作成するためにこれまでに持っているクラスのコードです

                private var _mesh:Shape = new Shape();
                private var _box:BitmapData = new Box();

                public function CreateRow_Col() {
                          addEventListener(Event.ADDED_TO_STAGE, zzz);
                }


                private function zzz(e:Event):void {
                          removeEventListener(Event.ADDED_TO_STAGE, zzz);
                          var stageW:Number = stage.stageWidth
                          var stageH:Number = stage.stageHeight
                          var elementW = _box.width
                          var elementH = _box.height
                          var numberElements_W = Math.ceil(stageW / elementW)
                          var numberElements_H = Math.ceil(stageH / elementH)
                          var ScaleX:Number = 1
                          var ScaleY:Number = 51
                          var background_W = numberElements_W * elementW * ScaleX
                          var background_H = numberElements_H * elementH * ScaleY
                          //trace(background_W + " = "+ numberElements_W + " * " + elementW)
                          var  matrix:Matrix = new Matrix()
                          matrix.scale(ScaleX,ScaleY);
                          _mesh.graphics.beginBitmapFill(_box, matrix, true, true);
                          _mesh.graphics.drawRect(0, 0, background_W, background_H);
                          _mesh.graphics.endFill();
                          _mesh.x = _mesh.y = 0;
                          _mesh.scaleX = stageW / background_W;
                          _mesh.scaleY = stageH / background_H;
                          trace(stageH / background_H)
                          addChild(_mesh);
                }


      }

}

つまり、コメントする/*_mesh.scaleX = stageW / background_W; _mesh.scaleY = stageH / background_H;*/ と、必要なように2行あります。これは、いくつかのイベントに応じて異なるscaleXとYが変化するためです(要素が大きくなったり小さくなったりします) ここに画像の説明を入力

しかし、_mesh.ScaleX と Y のコメントを外すと、必要なように 2 行がスクリー全体に収まらず、5 行になります (ステージに合わせて完全にサイズ設定されています)。さらに悪いことに、パターン要素の ScaleY または X を .5、51、または 501 などの任意の数値に変更すると、気にしません >> 常に 5 行になります。

ここに画像の説明を入力

これは修正できますか?

ステージの寸法は 550x400 で、要素の寸法は 63x83 です

var ScaleY:Number = 3編集:まあ、このように見える必要がありますここに画像の説明を入力

var ScaleY:Number = 2こんなとき

ここに画像の説明を入力

4

1 に答える 1

0
var stageW : Number = stage.stageWidth;
var stageH : Number = stage.stageHeight;

var container : Sprite = new Sprite();

var tileN : Number = 3;
var tileM : Number = 7;

var tileW : Number = stageW / tileM;
var tileH : Number = stageH / tileN;
for (var i:int = 0; i < tileN; i++) 
{
    for (var j:int = 0; j < tileM; j++) 
    {
        var tile : Sprite = new Sprite();
        tile.graphics.lineStyle( 1, 0xFF0000 );
        tile.graphics.beginFill( 0x0000FF, 1 );
        tile.graphics.drawRect( 0, 0, tileW, tileH );
        tile.graphics.endFill();
        tile.x = j * tileW;
        tile.y = i * tileH;

        container.addChild( tile );
    }               
}
container.width = stageW;
container.height = stageH;

addChild( container );
于 2013-09-04T21:38:21.523 に答える