0

私がやりたいのは、2 つのランダムな画像など、画像の WALL を構築することです。

X0X0X0X0X0 (X と O はイメージです。)

これらをロードするには、通常、次のような for ループを使用します (コードは正確ではありませんが、アイデアが得られることを願っています)

imageArray = "X", "O";

for (x = 0; x < numberOfImagesInWall; x++){

randomNum = random(2)

imageName = imageArray[randomNum];

loadimage (imageName)

.....etc....

}

この方法を使用すると、X と O のイメージが毎回読み込まれることがわかります。X と O のイメージをプリロードして、いつでも再利用できる方法があるかどうか疑問に思っています。

4

2 に答える 2

0

これを試して!

var images:Array = [img1, img2];//u will obviously need to populate this with real images
var pos:int = 0;
var newX:int = 0;

for(var i:int = 0; i < numberOfImagesInWall; i++)
{
    var bd:BitmapData = new BitmapData(images[pos].width, images[pos].height, true, 0x00000000);
    bd.draw(images[pos]); 
    var b:Bitmap = new Bitmap(bd);
    addChild(b);
    b.x = newX;
    newX += b.width;

    if(pos == 0)
        pos++;
    else
        pos = 0; 
}
于 2013-03-02T00:27:20.547 に答える
0
var images.Array=[new Image1().bitmapData,new Image2().bitmapData]; // adjust for your case
// this syntax is valid if you have Image1 and Image2 in your library, as bitmap images
for (var i:int=0;i< numberOfImagesInWall; i++)
{
    var b:Bitmap=new Bitmap(images[Math.floor(Math.random()*2.0)]); 
        // provide existing BitmapData as source for the image
    b.x=getX(i);
    b.y=getY(i); // give coordinates as you need it
    addChild(b);
}

既存の BitmapData をすべての Bitmap へのリンクとして提供すると、メモリ消費が少なくなるという利点があり、参照された BitmapData に対する 1 回の操作で関連するすべての Bitmap を変更できます。したがって、たとえば、images[0].fillRect(images[0].rect,0xffff0000)壁に囲まれたビットマップの半分は、特別な努力をしなくても赤くなります。

于 2013-03-18T12:05:15.500 に答える