Неправильно getBounds () для LineScaleMode.NONE - PullRequest
0 голосов
/ 09 ноября 2009

Я написал простой пример, который добавляет холст и рисует прямоугольник с размером обводки в масштабе 20 без режима.

Проблема в том, что если я вызову getBounds() в первый раз, я получу правильный результат, но после вызова scale(); функция getBounds() даст мне неверный результат.

Это будет принимать в качестве обводки инсульта, но у обводки нет масштабного режима, и на экране ничего не происходит, но в результате у меня будет значение x меньше. Может кто-нибудь сказать мне, как я могу это исправить?

   protected var display :Canvas;

    protected function addCanvas():void
    {            
        display = new Canvas();
        display.x = display.y = 50;
        display.width = 100;
        display.height = 100;

        display.graphics.clear();
        display.graphics.lineStyle( 20, 0x000000, 0.5, true, LineScaleMode.NONE );
        display.graphics.beginFill( 0xff0000, 1 );
        display.graphics.drawRect(0, 0, 100, 100);
        display.graphics.endFill();

        area.addChild( display );
        traceBounce();
    }

    protected function scale():void
    {
        var m :Matrix = display.transform.matrix;
        var apply :Matrix = new Matrix();
        apply.scale( 2, 1 );
        apply.concat( m );

        display.transform.matrix = apply;
        traceBounce();
    }

    protected function traceBounce():void
    {
        trace( display.getBounds( this ) );
    }

1 Ответ

0 голосов
/ 22 ноября 2009

Установка ширины / высоты и масштабирование одного и того же экранного объекта может привести к путанице. Ваш класс Canvas делает что-то необычное (например, устанавливает scrollRect или добавляет маску)?

Также вы можете попытаться получить границы родительского элемента Canvas или установить cacheAsBitmap на Canvas и посмотреть, поможет ли это?

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