|
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
логика построения кода
Добрый день! Пытаюсь понять логику построения кода. Опыт только 20-летней давности по basic.
Гуглил синтаксис AS читаю http://www.lessonsflash.ru/ и пытаюсь одновременно тестировать, но так и не могу разобраться что за чем должно следовать и как привязывать переменные к мувикам. На данный момент имею: два мувика "мальчик", "девочка" на каждом есть кадры "стоит", "говорит", "поднимает руки". 1) Создал кнопки "кнстоит", "кнговорит", "кнруки", 2) с помощью "фрагментов кода" добавил код кнговорит.addEventListener(MouseEvent.CLICK, кнопкаговорит); function кнопкаговорит(event:MouseEvent):void { девочка.gotoAndPlay("говорит"); } далее создал ещё две кнопки "кнмальчик" и "кндевочка" задача: по нажатию на кнопку "кнмальчик" говорить по кнопке "говорит" должен мальчик, а не девочка. Как задать и присвоить переменную действию gotoAndPlay("говорит"); ? Или есть какие-то более рациональные решения? Есть ли энтузиасты готовые помочь, разъяснить логику построения кода новичку?.. А то даже эти фрагменты кода не могу оптимизировать, потому что не понимаю как... |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну создайте переменную-флаг isBoy:Boolean, и скажем ее значение true будет "мальчик", а false — "девочка".
При нажатии на кнопки "мальчик/девочка" устанавливайте значение этой переменной в true/false соответственно. При нажатии на кнопки "говорит/руки/стоит" в обработчике проверяете значение флага isBoy и в зависимости от него переводите соответствующий мувик на нужный кадр. Ну как-то так: function кнопкаговорит(event:MouseEvent):void { if (isBoy) { мальчик.gotoAndPlay("говорит"); } else { девочка.gotoAndPlay("говорит"); } } Другой вариант — создайте переменную acter:MovieClip, в которой сохраняйте ссылку на мувиклип мальчика или девочки в зависимости от нажатий кнопки "мальчик/девочка", а в обработчике кнопок действия просто переводите клип по ссылке на нужный кадр: Естественно, для этого клипы мальчика и девочки должны быть устроены одинаково — иметь одинаковые метки.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Да, вот второй вариант более подходит, потому что кроме мальчиков и девочек, планируется бабушек и дедушек и т д.
Только как сохранить ссылку на мувиклип? var currentPersone:MovieClip; currentPersone = ("девочка"); //по умолчанию currentPersone.gotoAndPlay(); Добавлено через 2 часа 55 минут то есть, по сути мне нужно будет из кода обращаться к разным instance name мувиков для размещения их в главный ролик и проигрывания разных кадров... Как это можно осуществить? Добавлено через 2 часа 59 минут нашёл вот такую тему http://flasher.ru/forum/showpost.php...3&postcount=58 но не понимаю, как при помощи неё решить мою задачу... |
|
|||||
я бы написал здесь поуниверсиальнее с помощью словаря:
var hash:Dictionary = new Dictionary(); hash[boy] = boySays; hash[girl] = girlSays; boy.addEventListener(MouseEvent.CLICK, clickHandler); girl.addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler(e:MouseEvent):void{ var animation:MovieClip = hash[e.target] as MovieClip; animation.gotoAndPlay(); } |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
olexandr, Вам бы вопрос прочитать внимательней. Хотя, для установки актера пойдет. Только, боюсь, для ТС это пока слишком запутано.
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Я в шоке! ))
Заработало! При чём и обращаться теперь могу к этому мувику! var currentPersone:MovieClip; currentPersone = девочка; //по умолчанию currentPersone.gotoAndPlay(3); olexandr, скорее всего ваш код более гибкий и удобный в использовании, но для меня действительно сложноват пока Спасибо за помощь. Надеюсь я к нему ещё вернусь в будущем) Добавлено через 5 часов 46 минут а как можно обратиться к нужному звуку в зависимости от параметров? Что бы загнать основной сюжет в функцию var currentPosition = 3; // Номер сцены сюжета (Выбранный персонаж должен сказать "пока" var ГолосПерсонажа:Sound = new мальчикговорит3(); //Объявляем звук "пока" голосом мальчика в библиотеке var currentPersone:MovieClip; // Объявляем переменную выбранного персонажа currentPersone = мальчик; function deystvie(); { currentPersone.gotoAndPlay("говорит"); currentPersone говорит 3 .play(); // Эту строку не догоняю как правильно написать, нужен звук голосом мальчика "пока" } Таки ап, решения пока что так и не нашёл... Последний раз редактировалось Nikem79; 22.01.2015 в 13:56. |
|
|||||
если уж вы работаете с анимациями на таймлайне, то, наверное, имеет смысл и звук закинуть на таймлайн.
а если хочется программно + использовать временные переменные, как для анимации, то для звука придется аналогично заводить аналогичную временную переменную. |
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Хорошо, как завести переменную для звука, чтобы запускать звук из функции?..
Например, есть два звука devochkaPrivet с названием класса devPrivet и malchikPrivet с названием класса malPrivet В зависимости от значения currentPersone звучит привет голосом девочки или мальчика |
|
|||||
Цитата:
Скачайте FlashDevelop, он бесплатный. (При установке поставьте галочку на загрузке и установке Flex SDK) И книжку по AS3, например, Колина Мука. А ещё советую обратить внимание на то, как вы называете переменные и методы, классы, константы. Между программистами существуют общие Например, принято использовать английский язык для всех имён переменных/классов, никаких Никаких devochka, вас самих не раздражает подобное написание? girl/boy. Имена классов принято начинать с upper-case буквы, и каждое отдельное слово писать в верхнем регистре. Имена методов принято начинать с lower-case буквы, и каждое последующее слово писать в верхнем. Имена методов должны состоять из глаголов(что сделать) (start/play/remove/add/connect/find и т.д.) Имена переменных оформляются так же, как и имена методов, за исключением того, что состоять должны из существительного. (health, girl, boy, chat, dialog и т.д.) Ещё принято при создании экземпляра оставить скобки. Приватные переменные принято начинать с андерскора(_health, _girl, _boy)(Если не знаете, что значит приватная переменная - проигнорируйте и читайте книжку Мука). Подробнее об этих конвенциях можно почитать в некоторых статьях, у меня ссылок нет, но люди кидали на русские версии. Поэтому, если спросите где, думаю, вам найдут ссылок.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 23.01.2015 в 15:08. |
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Спасибо за ценные советы. Однако интерес должен подогреваться результатами, в процессе обучения внедряю полученные знания, но возникают вопросы на которые не получается найти ответы в инете. В общем, интерес пропадает если обучаться только на предложенных преподавателем примерах...
ответа на вопрос о переменных звука пока так и не нашёл... Хотелось бы такое же простое решение как в предыдущем посте от Wolsh |
Часовой пояс GMT +4, время: 17:47. |
|
« Предыдущая тема | Следующая тема » |
|
|