AS3 Битовые карты слишком большие и неправильно размещены - PullRequest
0 голосов
/ 31 марта 2011

Хорошо, я программирую на ActionScript 3, используя flex в качестве компилятора.У меня есть большой PNG-файл размером 16x16, который в основном представляет собой квадратный контур:

http://wiki.urbandead.com/images/1/1c/Square.gif

Но в более заметных цветах.

Я хочу нарисовать сетку из этих квадратов размером 11x11, поэтому я использую их для циклов:

        for (i1 = 0; i1 < 11; i1 ++) 
        { 
            for (i2 = 0; i2 < 11; i2 ++)
            {
                new OBJECT_tile().CREATE(CONTAINER,32 + 16*i1,32 + 16*i2); 
            }
        }

Где функция CREATE () создает новый объект мозаики с контейнером CONTAINER сс заданными координатами x и y.

public class OBJECT_tile extends Sprite
{
    public var X:Number;    public var Y:Number;
    public var DEPTH:int = 10 ;
    public var SPRITE:Sprite = new Sprite();
    public var BITMAP:Bitmap;
    public var CONTAINER:Sprite = new Sprite();

    [Embed(source = 'TILE.png')]
    private var CLASS_IMAGE:Class;      
    private var IMAGE:Bitmap = new CLASS_IMAGE();

    public function CREATE(CONTAINER:Sprite,X:Number,Y:Number):void
    {   
        var DATA:BitmapData = new BitmapData(16,16,true,0);
        DATA.draw(IMAGE);
        BITMAP = new Bitmap(DATA);
        BITMAP.smoothing = false;
        addChild(BITMAP);

        this.CONTAINER = CONTAINER;
        (CONTAINER as MAIN).INSTANCE_LIST[(CONTAINER as MAIN).INSTANCE_LIST.length] = this;
        this.X = X; BITMAP.x = this.X;
        this.Y = Y; BITMAP.y = this.Y;
        DRAW();
    }}

Однако по какой-то причине плитки растягиваются вдвое по размеру (32x32 вместо 16x16) и имеют тенденцию складываться или растягиваться в зависимости от того, сколько вкладок я открыл вмой браузерСкопление также не является последовательным, например, плитки могут для группы 3х3, это прекрасно, но тогда рядом с этой группой будет просто линия испорченных плиток (действительно трудно описать).Почему это происходит?

1 Ответ

0 голосов
/ 31 марта 2011

Хорошо, я понял это.Оказывается, as3 будет пытаться масштабировать вещи за вашей спиной, я предполагаю, что это своего рода воздержание от идеи Adobe (я ненавижу эту вещь и программу в notepad ++).В любом случае, если вы придерживаетесь этого:

stage.scaleMode = StageScaleMode.NO_SCALE;

В вашей основной функции он остановит его масштабирование, если вы не скажете иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...