Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изменение размера перед рисованием (http://www.flasher.ru/forum/showthread.php?t=147825)

surlac 14.12.2010 21:51

Изменение размера перед рисованием
 
Почему при изменении размера Shape перед рисованием на нем Rectangle (см. код) он получается пустой, а если наоборот - Rectangle отображается и размер меняется норм?

Код AS3:

var shape:Shape = new Shape();
shape.height = 50;
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawRect(0, 0, 30, 30);                       
// shape.height = 50;
addChild(shape);


КорДум 14.12.2010 21:59

Код AS3:

var shape:Shape = new Shape();
shape.height = 50;

Вы меняете высоту пустоте. Но после этого
Код AS3:

shape.graphics.beginFill(0xFF0000);
shape.graphics.drawRect(0, 0, 30, 30);

должны срабатывать.

...

Должны, но не срабатывают. Налицо баг.

alatar 15.12.2010 11:50

Цитата:

Вы меняете высоту пустоте.
У пустоты высота может быть либо 0, либо NaN. Если ей присвоить значение 50, то высота станет 0.
Цитата:

Должны, но не срабатывают. Налицо баг.
Вполне себе срабатывают, поставьте этому шейпу высоту 30 (после отрисовки) и увидите его на экране. Это не баг. Проверьте scaleY у этого шейпа.

КорДум 15.12.2010 12:13

Я все проверил уже. Нет отображения шейпа.

alatar 15.12.2010 12:21

И что же вы проверили?
Код AS3:

var shape:Shape = new Shape();
shape.height = 50;
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawRect(0, 0, 30, 30);
shape.graphics.endFill();
 
addChild(shape);
 
trace(shape.height, shape.scaleY); //0, 0
trace(shape.width, shape.scaleX); //0, 0
//нет шейпа. Вполне естественно при размере 0
shape.height = 30;
shape.width = 30;
 
trace(shape.height, shape.scaleY); //30, 1
trace(shape.width, shape.scaleX); //30, 1
//упс появился

А так вообще не исчезает
Код AS3:

var shape:Shape = new Shape();
shape.height = NaN;
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawRect(0, 0, 30, 30);
shape.graphics.endFill();
 
addChild(shape);
 
trace(shape.height, shape.scaleY); //30, 1
trace(shape.width, shape.scaleX); //30, 1


pow_x 15.12.2010 13:23

Цитата:

Сообщение от surlac (Сообщение 957303)
Изменение размера перед рисованием

Если вас это устроит, то перед началом рисования вы можете поменять scaleX,Y
height/width - это фактическое значение для уже отрисованной графики.

КорДум 15.12.2010 14:05

А. блин, то есть, он ставится в 0, рисуется и в этом нуле и остается? Вот оно что.

surlac 15.12.2010 17:50

Всем большое спасибо за ответы, теперь всё стало понятно.


Часовой пояс GMT +4, время: 11:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.