Лучший способ динамически выбирать несколько цветов / рисунков символов из Flash - PullRequest
1 голос
/ 12 марта 2010

Извините, название так запутанно ... Я, должно быть, десять минут пытался получить хорошее описательное название! В основном, вот сценарий.

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

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

Итак, как я могу создать одну переменную, которая является HAT, чтобы мы могли просто поместить соответствующий символ hat в переменную и всегда иметь возможность вызывать Hat.gotoAndplay ('tip_hat') или любые другие универсальные функции ... . Имеет ли это смысл?

Надеюсь, это не слишком смущает. Извините, я не очень хорош в визуальной флэш-музыке, но это надо сделать! Спасибо!

Ответы [ 2 ]

4 голосов
/ 13 марта 2010

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

Вы могли бы пойти дальше, выделив различные аспекты внешнего вида каждой шляпы.(не только цвета, но и стиль, рисунок, размер, ориентация и т. д.) - это позволит вам создавать самые разные шляпы из нескольких параметров.

Так, например, 6 стилей х 4 узора х8 цветов = 192 разных шляпы (без необходимости рисовать каждую!)

parametric hats diagram
(источник: webfactional.com )

3 голосов
/ 12 марта 2010

Вы можете сделать это несколькими способами; во-первых, у вас может быть каждая отдельная шапка в виде отдельного символа в библиотеке Flash (если вы используете IDE), а затем в их свойствах установите флажок «Экспорт для ActionScript» и выберите подходящее имя. Он скажет вам, что нет определения пути к классу, и он будет создан автоматически (или что-то в этом роде), но это не проблема, поскольку вам не нужно создавать файл класса для этих объектов - это просто расширения MovieClip с некоторыми конкретными данными в них.

Так что, если вы делаете это с каждой шляпой, скажем, вы называете их Hat_1, Hat_2 и т. Д .; тогда вам нужно создать объект «шляпа» внутри объекта головы вашего аватара. Всякий раз, когда шляпа меняется, вы вызываете новый экземпляр этого конкретного объекта шляпы и помещаете его на сцену:

//when user chooses a hat, however this is done:
var newHat:Hat_1 = new Hat_1();
avatarBody.avatarHead.hat.addChild(newHat);

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

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

...