Проблемы с позиционированием Flash-графики, нарисованной с помощью Graphics Class - PullRequest
0 голосов
/ 03 марта 2010

Я использую Flash CS3 для создания простого графического приложения. Когда пользователь нажимает кнопку, он выбирает определенный мувиклип. После нажатия в другом месте на сцене, создается экземпляр клипа и добавляется на сцену в позиции курсора. Я также добавил возможность кликать по добавленному клипу и перетаскивать его по экрану. И все это прекрасно работает.

Проблема в том, что я также хочу иметь возможность динамически рисовать и добавлять объекты на сцену с помощью класса Graphics. Всякий раз, когда я добавляю объекты таким образом, их координаты x и y всегда равны 0,0, независимо от того, где я размещаю их на сцене. Это делает позиционирование этой графики очень проблематичным. Я создал модифицированную функцию позиционирования специально для этой динамически прорисованной графики, и хотя она «работает», она чувствует себя менее отзывчивой, чем позиционирование для объектов мувиклипа. Я все еще пытаюсь оптимизировать эту функцию, но мне кажется, что идеальное решение для графики - иметь ненулевые координаты, когда они помещены в середину сцены, как объекты мувиклипа. Есть ли какой-нибудь «обходной путь» для достижения этого?

Ответы [ 3 ]

1 голос
/ 04 марта 2010

Если вы собираетесь рисовать с графическим классом внутри фрагмента ролика / спрайта, вам нужно нарисовать его в растровом изображении и отобразить растровое изображение вместо мувиклипа. Видеоклипы могут содержать только столько векторной информации, и даже если вы нарисуете что-то, фигура, созданная с помощью класса Graphics, все еще на самом деле. Вы обнаружите, что если вы будете отслеживать частоту кадров с помощью чего-то вроде класса Stats мистера Дуба, когда вы начнете заполнять мувиклип, то fps будет резко падать . Решение состоит в том, чтобы использовать метод draw () объекта BitmapData и скопировать содержимое фрагмента ролика в отображаемое растровое изображение. Когда вы создаете растровое изображение, вам нужно связать его с BitmapData. Каждый раз, когда вы звоните, он обновляет для вас растровое изображение (что приятно).

На прошлой неделе я создал приложение для рисования, поэтому у меня есть опыт решения этой проблемы.

0 голосов
/ 04 марта 2010

Вы должны нарисовать внутри мувиклипа, а затем переместить этот мувиклип. Рисунки фактически привязаны к самому объекту, поэтому вы не можете перемещать их независимо друг от друга. Так что просто сделайте контейнер, нарисуйте его и переместите контейнер внутри другого клипа.

0 голосов
/ 03 марта 2010

Вы можете изменить точку регистрации экранного объекта, используя класс матрицы.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/geom/Matrix.html

...