Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.01.2015, 09:56
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 1  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
По умолчанию логика построения кода

Добрый день! Пытаюсь понять логику построения кода. Опыт только 20-летней давности по basic.

Гуглил синтаксис AS читаю http://www.lessonsflash.ru/ и пытаюсь одновременно тестировать, но так и не могу разобраться что за чем должно следовать и как привязывать переменные к мувикам.

На данный момент имею: два мувика "мальчик", "девочка" на каждом есть кадры "стоит", "говорит", "поднимает руки".

1) Создал кнопки "кнстоит", "кнговорит", "кнруки",
2) с помощью "фрагментов кода" добавил код

Код AS3:
кнговорит.addEventListener(MouseEvent.CLICK, кнопкаговорит);
 
function кнопкаговорит(event:MouseEvent):void
{
девочка.gotoAndPlay("говорит");
}
и так далее по всем действиям

далее создал ещё две кнопки "кнмальчик" и "кндевочка"

задача: по нажатию на кнопку "кнмальчик" говорить по кнопке "говорит" должен мальчик, а не девочка. Как задать и присвоить переменную действию gotoAndPlay("говорит"); ?

Или есть какие-то более рациональные решения?

Есть ли энтузиасты готовые помочь, разъяснить логику построения кода новичку?.. А то даже эти фрагменты кода не могу оптимизировать, потому что не понимаю как...

Старый 21.01.2015, 11:51
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну создайте переменную-флаг isBoy:Boolean, и скажем ее значение true будет "мальчик", а false — "девочка".
При нажатии на кнопки "мальчик/девочка" устанавливайте значение этой переменной в true/false соответственно.
При нажатии на кнопки "говорит/руки/стоит" в обработчике проверяете значение флага isBoy и в зависимости от него переводите соответствующий мувик на нужный кадр.
Ну как-то так:
Код AS3:
function кнопкаговорит(event:MouseEvent):void
{
	if (isBoy)
	{
		мальчик.gotoAndPlay("говорит");
	}
	else
	{
		девочка.gotoAndPlay("говорит");
	}
}
Добавлено через 5 минут
Другой вариант — создайте переменную acter:MovieClip, в которой сохраняйте ссылку на мувиклип мальчика или девочки в зависимости от нажатий кнопки "мальчик/девочка", а в обработчике кнопок действия просто переводите клип по ссылке на нужный кадр:
Код AS3:
acter.gotoAndPlay("говорит");
Естественно, для этого клипы мальчика и девочки должны быть устроены одинаково — иметь одинаковые метки.
__________________
Reality.getBounds(this);

Старый 21.01.2015, 13:20
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 3  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
Да, вот второй вариант более подходит, потому что кроме мальчиков и девочек, планируется бабушек и дедушек и т д.

Только как сохранить ссылку на мувиклип?


Код AS3:
var currentPersone:MovieClip;
 
currentPersone = ("девочка"); //по умолчанию
 
currentPersone.gotoAndPlay();
Пытаюсь что-то вроде этого сделать, но не работает. Мне хотябы просто запустить мувик используя переменную... В первом кадре девочки стоит stop()

Добавлено через 2 часа 55 минут
то есть, по сути мне нужно будет из кода обращаться к разным instance name мувиков для размещения их в главный ролик и проигрывания разных кадров... Как это можно осуществить?

Добавлено через 2 часа 59 минут
нашёл вот такую тему http://flasher.ru/forum/showpost.php...3&postcount=58 но не понимаю, как при помощи неё решить мою задачу...

Старый 21.01.2015, 19:56
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 4  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
я бы написал здесь поуниверсиальнее с помощью словаря:
Код AS3:
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();
}
__________________
сайт, vk

Старый 21.01.2015, 23:07
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
olexandr, Вам бы вопрос прочитать внимательней. Хотя, для установки актера пойдет. Только, боюсь, для ТС это пока слишком запутано.

Цитата:
currentPersone = ("девочка"); //по умолчанию
Не надо шаманизма.
Код AS3:
currentPersone = девочка;
__________________
Reality.getBounds(this);

Старый 22.01.2015, 08:07
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 6  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
Я в шоке! ))

Заработало! При чём и обращаться теперь могу к этому мувику!

Код AS3:
var currentPersone:MovieClip;
 
currentPersone = девочка; //по умолчанию
 
currentPersone.gotoAndPlay(3);
сутки гугления не помогли разобраться) Огромное спасибо!)


olexandr, скорее всего ваш код более гибкий и удобный в использовании, но для меня действительно сложноват пока Спасибо за помощь. Надеюсь я к нему ещё вернусь в будущем)

Добавлено через 5 часов 46 минут
а как можно обратиться к нужному звуку в зависимости от параметров? Что бы загнать основной сюжет в функцию

Код AS3:
var currentPosition = 3; // Номер сцены сюжета (Выбранный персонаж должен сказать "пока"
var ГолосПерсонажа:Sound = new мальчикговорит3(); //Объявляем звук "пока" голосом мальчика в библиотеке
var currentPersone:MovieClip; // Объявляем переменную выбранного персонажа
 
currentPersone = мальчик;
 
function deystvie();
    {
         currentPersone.gotoAndPlay("говорит");
         currentPersone говорит 3 .play(); // Эту строку не догоняю как правильно написать, нужен звук голосом мальчика "пока"
     }
Добавлено через 28 часов 25 минут
Таки ап, решения пока что так и не нашёл...


Последний раз редактировалось Nikem79; 22.01.2015 в 13:56.
Старый 23.01.2015, 12:50
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
если уж вы работаете с анимациями на таймлайне, то, наверное, имеет смысл и звук закинуть на таймлайн.
а если хочется программно + использовать временные переменные, как для анимации, то для звука придется аналогично заводить аналогичную временную переменную.
__________________
сайт, vk

Старый 23.01.2015, 13:22
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 8  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
Хорошо, как завести переменную для звука, чтобы запускать звук из функции?..

Например, есть два звука
devochkaPrivet с названием класса devPrivet
и malchikPrivet с названием класса malPrivet

Код AS3:
import flash.media.Sound;
 
var devochkaPrivet:Sound = new devPrivet;
var malchikPrivet:Sound = new malPrivet;
 
currentPersone = девочка;
 
... .play();
В зависимости от значения currentPersone звучит привет голосом девочки или мальчика

Старый 23.01.2015, 14:36
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Пытаюсь понять логику построения кода.
Хотите научиться кодить - забудьте про таймлайн до того момента, пока вы сами не поймёте, как сделать было бы проще всего. Учите язык.
Скачайте FlashDevelop, он бесплатный. (При установке поставьте галочку на загрузке и установке Flex SDK)
И книжку по AS3, например, Колина Мука.

А ещё советую обратить внимание на то, как вы называете переменные и методы, классы, константы.
Между программистами существуют общие моральные устои правила оформления кода. Т.е. конвенции об названии переменных и функций, классов, пакетов.

Например, принято использовать английский язык для всех имён переменных/классов, никаких девочек. Только girl/boy.
Никаких devochka, вас самих не раздражает подобное написание?
girl/boy.

Имена классов принято начинать с upper-case буквы, и каждое отдельное слово писать в верхнем регистре.
Имена методов принято начинать с lower-case буквы, и каждое последующее слово писать в верхнем.
Имена методов должны состоять из глаголов(что сделать) (start/play/remove/add/connect/find и т.д.)
Имена переменных оформляются так же, как и имена методов, за исключением того, что состоять должны из существительного.
(health, girl, boy, chat, dialog и т.д.)
Ещё принято при создании экземпляра оставить скобки.
Код AS3:
var girl:Girl = new Girl();
Приватные переменные принято начинать с андерскора(_health, _girl, _boy)(Если не знаете, что значит приватная переменная - проигнорируйте и читайте книжку Мука).

Подробнее об этих конвенциях можно почитать в некоторых статьях, у меня ссылок нет, но люди кидали на русские версии. Поэтому, если спросите где, думаю, вам найдут ссылок.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 23.01.2015 в 15:08.
Старый 23.01.2015, 17:36
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 10  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
Спасибо за ценные советы. Однако интерес должен подогреваться результатами, в процессе обучения внедряю полученные знания, но возникают вопросы на которые не получается найти ответы в инете. В общем, интерес пропадает если обучаться только на предложенных преподавателем примерах...

ответа на вопрос о переменных звука пока так и не нашёл... Хотелось бы такое же простое решение как в предыдущем посте от Wolsh

Цитата:
Не надо шаманизма.

Код AS3:
currentPersone = девочка;

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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