Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Nape] Как изменить размер Polygona в nape? (http://www.flasher.ru/forum/showthread.php?t=212993)

neonoviiwolf 11.06.2016 00:02

Как изменить размер Polygona в nape?
 
доброго!
есть тело body, у него уже есть размер(Polygon), а как можно управлять размером увеличить/уменьшить?

Код AS3:

body.shapes.add(new Polygon(Polygon.box(35, -35)));

И ещё мелкий вопрос, как удалить body из space (как-то до этого не приходилось задумываться)?

Добавлено через 10 часов 9 минут
нашёл такой вариант, но мне кажется не очень удачный
Код AS3:

body.scaleShapes(0.2, -0.2);


caseyryan 11.06.2016 12:06

Цитата:

И ещё мелкий вопрос, как удалить body из space (как-то до этого не приходилось задумываться)?
В нейпе это делается вообще легко
Код AS3:

body.space = null;

Цитата:

есть тело body, у него уже есть размер(Polygon), а как можно управлять размером увеличить/уменьшить?
Сохраняй ссылку на его шейпы, а потом нужные удаляй и создавай другого размера

neonoviiwolf 11.06.2016 12:24

caseyryan, то что сохранить ссылку на Shape, я понял изначально, но я не понял как менять размер Polygon, у меня просто получалось 2 полигона разного размера в одном Body

Zebestov 11.06.2016 12:25

Polygon ведь наследует Shape, а у того есть метод scale().

neonoviiwolf 11.06.2016 12:34

Цитата:

Сообщение от Zebestov (Сообщение 1194749)
Polygon ведь наследует Shape, а у того есть метод scale().

про scale я уже писал выше, но это не точное значение

caseyryan 11.06.2016 13:00

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

neonoviiwolf 11.06.2016 13:07

Ок, понял
вопрос по поводу удаления Body
мне нужно удалять Body при столкновении
Код AS3:

                override protected function collisionNape(cb:PreCallback):PreFlag
                {
                        stage.dispatchEvent(new UserEvent(UserEvent.MUKUS_MONEY, true, false));
                        cb.int2.castBody.space = null;
                        return PreFlag.IGNORE_ONCE
                }

тут разумеется мне пишет ошибку
Код:

"Body::space cannot be set during a space step()"
как это сделать без костылей?

Zebestov 11.06.2016 13:32

Заноси тела в массив и удаляй все, что там окажется, после завершения шага.

neonoviiwolf 11.06.2016 13:33

Цитата:

Сообщение от Zebestov (Сообщение 1194754)
Заноси тела в массив и удаляй все, что там окажется после обработки шага.

это я как раз и подразумевал "костыль"=)

Zebestov 11.06.2016 13:44

Тебе следует еще раз перечитать, что называется "костылем" в программировании.


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

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