Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вернуть вершины Shape (http://www.flasher.ru/forum/showthread.php?t=185909)

Sintesis 23.10.2012 23:53

Вернуть вершины Shape
 
Есть Shape состоящий из нескольких соединённых в многоугольник линий, как узнать вершины этого многоугольника?
Дело в том, что в FlashIDE рисуя линиями например - фигура преобразовывается в Shape. А Shape не может иметь детей и до графики не добраться, но очень нужно.

alatar 24.10.2012 01:43

Вся графика в Shape хранится в его graphics.

Добавлено через 2 минуты
Можно получить вершины с помощью библиотеки swfvector.

Sintesis 24.10.2012 01:53

Цитата:

Сообщение от alatar (Сообщение 1101060)
Вся графика в Shape хранится в его graphics.

Это понятно, но graphics ничего не возвращает и присвоить её спрайту нельзя graphics в Shape только для чтения, спасибо за ссылку, плюсую!

Wolsh 24.10.2012 13:16

Цитата:

graphics ничего не возвращает и присвоить её спрайту нельзя graphics в Shape только для чтения
Ну, это не так. Есть Graphics#copyFrom()
Но к Вашему случаю это не относится, как я понимаю. Вы же о рисунке во Flash IDE говорите? Уж не знаю, как Вы получаете к нему доступ как к экземпляру Shape... думаю что никак.

gagaga 24.10.2012 14:43

наследоваться от шейп, определять массив с вершинами и запоминать туда вершины в процессе рисования

Sintesis 24.10.2012 16:29

Цитата:

Сообщение от Wolsh (Сообщение 1101093)
Ну, это не так. Есть Graphics#copyFrom()
Но к Вашему случаю это не относится, как я понимаю. Вы же о рисунке во Flash IDE говорите? Уж не знаю, как Вы получаете к нему доступ как к экземпляру Shape... думаю что никак.

Вообще с IDE только несколько дней работаю, всегда в FD всё делал. Но решил попробовать.
Создал символ Lvl_01 и добавил такое действие к нему:
Код AS3:

var lvl_01:Lvl_01 = new Lvl_01();
trace(lvl_01.getChildAt(0))

выводит Shape, так что Shape это не рисунок и к нему не добраться кодом?

strangedk 24.10.2012 16:58

Код AS3:

(lvl_01 as Shape).graphics


Sintesis 24.10.2012 16:58

Цитата:

Сообщение от gagaga (Сообщение 1101121)
наследоваться от шейп, определять массив с вершинами и запоминать туда вершины в процессе рисования

Во! А это совсем прекрасная идея! Вообще хотел использовать IDE для того, чтоб рисовать полигоны для Box2D, но зачем это нужно если можно сделать простую рисовалку которая складывает вершины в массив, а потом это ещё можно и в XML файл сохранить и использовать когда нужно! Спасибо!

alatar 24.10.2012 16:58

Цитата:

выводит Shape, так что Shape это не рисунок и к нему не добраться кодом?
А вы trace магически способом сделали или все таки кодом?

Во флеш можно создать DisplayObject двумя способами.
1. Инстанцировать соответствующий класс.
2. Задать непосредственно в swf. Тег DefineShape / DefineSprite.\
В любом случае, если эти DisplayObject попадут в display list, на них можно будет получить ссылку ("добраться кодом").

gagaga 24.10.2012 16:59

сейчас угадаю... редактор уровней для игры с физикой делать лень? =) я тоже через это прошел...

Добавлено через 51 секунду
угадал


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

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