如何在密封容器中重新缩放元素

时间:2013-09-04 20:02:15

标签: actionscript-3

我试图在我使用相同的元素之前缩放模式元素 _mesh.graphics.beginBitmapFill(_box, matrix, true, true);,但它不考虑它,它不会缩放模式元素>只有背景。 这是用于填充背景的模式元素,名称为“ Box

the pattern element

这是我到目前为止创建我想要的效果的类中的代码

                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会根据一些事件而改变(元素会变大或变小) enter image description here

但是当我取消注释_mesh.ScaleX和Y我没有像我想要的那样在整个scree中得到2行时,我得到5行(它们的大小完全适合stage.stageWidth或Height - 我想要的但是不是总是五)。更糟糕的是,当我将图案元素的ScaleY或X更改为任何数字,如.5或51或501时,它只是不关心>>我总是得到5排。

enter image description here

可以修复吗?

舞台的尺寸为550x400 并且元素具有63x83维度

编辑: 好吧,它需要在var ScaleY:Number = 3这样的enter image description here

时查看

var ScaleY:Number = 2这样的时候

enter image description here

1 个答案:

答案 0 :(得分: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 );