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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.04.2009, 12:18
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 1  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
По умолчанию Проблема при создании кнопок с использованием условий

Не знаю, насколько правильно назвал тему, другое название в голову не лезет, но есть такая проблема:
есть, к примеру 2 кнопки на 2-х разных слоях. И надо сделать так, чтобы при нажатии на:
- ПЕРВУЮ кнопку игрались кадры, которые следуют сразу за ней (допустим со 2 по 5-й) и потом дальше игрались кадры, идущие после этой кнопки (допустим с 6-го по 8-й).
- ВТОРУЮ кнопку игрались всё те же кадры сразу после кнопок (2-5), и потом игрались бы кнопки, которые идут с 9-го по 10-й кадры, минуя кадры 6-8.

По идее условие должно быть такое, что
Если нажата кнопка1, то СледоватьИИграть(2), затем СледоватьИИграть(6)
Если нажата кнопка2, то СледоватьИИграть(2), затем СледоватьИИграть(9)

(на главной сцене над кадром 5, 7 и 10 в AS прописан stop(); )

т.к. я новичёк в AS и флэше в целом, то многого ещё не знаю, в т.ч. как сделать именно такое условие. Делал нечто вроде
Код AS1/AS2:
this.onRelease = function() {
if (this.onRelease) { //у меня просто сам код внутри кнопки написан,
                                  //а точнее внутри MovieClip
		_root.gotoAndPlay(2);
	} else if (this.onRelease) {
		_root.gotoAndPlay(9);
	}
 
};
Я знаю, что это не правильный код, но я совершенно не в курсе, как его подправить под правильный. Пробовал вместо else if писать and if, но and здесь не катит, т.к. не относится похоже к if ... else (Ну сочиняю AS просто на ходу)

В общем очень прошу помощи. Думаю, знающим не составит труда правильный код выставить

Добавлено через 1 минуту
хм, интересно, а если использовать вместо else if слово then)))...

Добавлено через 1 минуту
не, не катит, к сожалению
__________________
ReAlly ExPloOiT


Последний раз редактировалось DizzWebS; 20.04.2009 в 12:34. Причина: ошибся))
Старый 20.04.2009, 12:26
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
О боже...
Аналогия кода: мы пойдем на север, когда мы можем пойти на север, а если мы не можем пойти на север, но можем пойти на север, то мы пойдем на юг.

Следовать и играть - это gotoAndPlay? Я не знаю, кто надоумил переводить это... но лучше ненадо.

Цитата:
- ПЕРВУЮ кнопку игрались кадры, которые следуют сразу за ней (допустим со 2 по 5-й) и потом дальше игрались кадры, идущие после этой кнопки (допустим с 6-го по 8-й).
Сначала надо чтобы пошел со второго на третий, потом после третьего сразу на четвертый, а после четвертого на пятый, а потом надо играть шестой кадр, потом седьмой, а не восьмой, восьмой после седьмого...
Блин, я долго думал что ты имел ввиду написав это. Сказал бы - со 2 по 8, не?
Цитата:
- ВТОРУЮ кнопку игрались всё те же кадры сразу после кнопок (2-5), и потом игрались бы кнопки, которые идут с 8-го по 10-й кадры, минуя кадры 6-8.
Ну тут уже лучше.)
В 6 кадре мувиклипа пишешь нечто вроде
Код AS1/AS2:
if (skip) gotoAndPlay(9);
на кнопке:
Код AS1/AS2:
btn1.onRelease=function(){
mc.skip=false;
mc.play();
}
На другой:
Код AS1/AS2:
btn2.onRelease=function(){
mc.skip=true;
mc.play();
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
onRelease - это не состояние кнопки)) Это функция-обработчик события, какое-то действие, поэтому запись if(onRelease) бессмысленна здесь. Вам надо просто завести "флаг" - переменную, хранящую данные, какая кнопка была нажата последней. И на перекрестке (в 6 кадре) проверять - если нажата одна, то переходим сразу на восьмой (9?), а если другая - то ничего не делаем, играем себе дальше.

Добавлено через 1 минуту
Земляк опередил опять)))
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 20.04.2009 в 12:34.
Старый 20.04.2009, 12:33
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 4  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
Цитата:
Следовать и играть - это gotoAndPlay? Я не знаю, кто надоумил переводить это... но лучше ненадо
ну эт я сам)))) Так, чтоб понятней было. А со skip сейчас попробую.
Цитата:
Сказал бы - со 2 по 8, не?
Не совсем. Над 5-м просто stop(); висит. Он остановится, и потом надо, чтобы он продолжил грубо говоря.

Идея вся в том, чтобы при нажатии на кнопки, они постепенно исчезли, и вместо них появились другие. Тоесть нажимаем на кнопку 1, ОБЕ кнопки исчезают(2-5), и появляется другая пачка кнопок (6-8 кадры). А если нажимаем на конпку 2, то опять исчезают ОБЕ кнопки (2-5), и появляется снова пачка кнопок, но уже с другим содержанием (тоесть эти кнопки располагаются на кадрах 9-10. //КСТАТИ да, не с 8 по 10-й, а с 9-го по 10й кадры, сча первый пост подправлю)

Добавлено через 2 минуты
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Вам надо просто завести "флаг" - переменную, хранящую данные, какая кнопка была нажата последней. И на перекрестке (в 6 кадре) проверять - если нажата одна, то переходим сразу на восьмой (9?), а если другая - то ничего не делаем, играем себе дальше
Хм, а поподробней можно? Как переменную задать, я знаю, а вот проверить, какая кнопка нажата - это труднее

Добавлено через 6 минут
хм, сейчас глянул тут на форуме надпись со skip, которую Psycho Tiger написал, и сразу вопрос - а если кнопок больше будет? не пойдёт, наверное. Просто кнопок у меня больше..
__________________
ReAlly ExPloOiT


Последний раз редактировалось DizzWebS; 20.04.2009 в 12:40.
Старый 20.04.2009, 12:40
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Исчезали, появлялись.. - с помощью кадров? Вы часто в мультиках на кнопки жмете? Вы представляете себе реализацию например Ворда в виде мультипликации - если нажали клавишу с "В" то переходим на кадр где в документе есть буква "В" и т.д...??? Разберитесь в своих желаниях - программа и мультик две совершенно разные вещи. Переход по кадрам и поведение по событиям не совместимы. В большинстве случаев)) Не по основному таймлайну уж точно.
__________________
Reality.getBounds(this);

Старый 20.04.2009, 12:43
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 6  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
Видимо меня не совсем поняли Ну даже если так рассуждать, на флеше же игры различные существуют, там же делают это каким то образом.

Добавлено через 3 минуты
Если рассматривать моё "творчество" без исчезаний и появлений, то тут всё очень просто, я бы даже не спрашивал. Там используется только gotoAndPlay (кадр,_который_нужен);
Но так не красиво и неинтересно, поэтому может всё же возможно как то осуществить такую "прыгалку" по кадрам?
__________________
ReAlly ExPloOiT

Старый 20.04.2009, 13:00
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 7  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
вот скрин, чтобы было понятней.
Изображения
 
__________________
ReAlly ExPloOiT

Старый 20.04.2009, 13:29
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 8  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
ха, всё гениальное просто Не надо никаких не if было, не else)) надо было просто добавить gotoAndPlay (тот_кадр_на_который_хотим_перескочить); ))))

а вы - не реально, не реально

Добавлено через 1 минуту
тоесть код располагается внутри редактирования символа (MovieClip), и код такой:
Код AS1/AS2:
this.onRelease = function() {
		_root.gotoAndPlay(37);
		_root.gotoAndPlay(56);
};
А тормозит засчёт
Код AS1/AS2:
stop ();
на основной линии

Добавлено через 7 минут
забераю свои слова обратно) Не "проканало", что называется)) блин, как же победить то проблему
__________________
ReAlly ExPloOiT

Старый 20.04.2009, 13:42
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 9  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от DizzWebS Посмотреть сообщение
Как переменную задать, я знаю, а вот проверить, какая кнопка нажата - это труднее
Рассуждайте более точно и последовательно - и вы сами сможете находить многие ответы.

Вот, например, "проверить, какая кнопка нажата".
Нажатие кнопки - это мгновение. Поэтому рассуждение нелогично. Или вы предлагаете пользователю держать кнопку нажатой, пока вы не проверите нажатие?

Логично иначе. "Как проверить, какая кнопка была нажата последней". Или, например, "как сделать что-то, когда пользователь нажал на кнопку".

Теперь ответ на цитату:
У вас есть обработчик нажатия кнопки:
Код AS1/AS2:
this.onRelease= function(){
    //тело функции
}
И вы хотите знать, какая кнопка была нажата последней. Просто сделайте это сами:

Код AS1/AS2:
vashaKnopkaNomer1.onRelease= function(){
    _root.bylaNajataKnopka= 1;
};
 
vashaKnopkaNomer2.onRelease= function(){
    _root.bylaNajataKnopka= 2;
}
Когда вам потребуется проверить эту информацию, пишите:
Код AS1/AS2:
if (_root.bylaNajataKnopka == 1){
   // то, что будет выполнено, если нажата первая
};
 
if (_root.bylaNajataKnopka == 2){
   // то, что будет выполнено, если нажата вторая
};
Когда общая идея понятна - дальше уже несложно.


Цитата:
тоесть код располагается внутри редактирования символа (MovieClip), и код такой:
Код AS1/AS2:
this.onRelease = function() {
		_root.gotoAndPlay(37);
		_root.gotoAndPlay(56);
};
Я очень сомневаюсь, что кнопка действительно делает то, что вы хотите. Смотрите сами: куда вы хотите отправить воспроизведение, всё-таки? На 37-й или 56-й кадр? Думаю, что в итоге воспроизведение продолжится с 56-го, а предыдущую строку флеш просто проигнорирует (точнее - не успеет выполнить).


Последний раз редактировалось Stargazer; 20.04.2009 в 13:46.
Старый 20.04.2009, 14:21
DizzWebS вне форума Посмотреть профиль Отправить личное сообщение для DizzWebS Посетить домашнюю страницу DizzWebS Найти все сообщения от DizzWebS
  № 10  
Ответить с цитированием
DizzWebS
 
Аватар для DizzWebS

Регистрация: Apr 2009
Адрес: Новосибирск
Сообщений: 42
Отправить сообщение для DizzWebS с помощью ICQ Отправить сообщение для DizzWebS с помощью Skype™
да, так и есть, игнорит.

Идея понятна, но не совсем
Вот здесь:
Код AS1/AS2:
vashaKnopkaNomer1.onRelease= function(){
    _root.bylaNajataKnopka= 1;
};
как я понимаю это: vashaKnopkaNomer1 можно прописать как this
а вот это: bylaNajataKnopka - не понимаю, что это такое. у меня AS и это, и значение этого (= 1) подсвечивает черным. Если это имя переменной, то не совсем пониамю, где назначить можно его. Я внутри редактирования MovieClip прописал нечто вроде
Код AS1/AS2:
this.onRelease = function() {
		_root.btn_o = 1;
};
а на основной сцене такое:
Код AS1/AS2:
if (_root.btn_o == 1){
	gotoAndPlay (56);
}
Но ничего) Где-то не дописываю что-то. Либо может не там.

Да, ещё момент - когда эти кнопки нажимаются, они должны исчезнуть, и на их место уже другие встают, а не где-то рядом. Т.е. наверное метод с "последней нажатой кнопкой" не совсем тот.
__________________
ReAlly ExPloOiT

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

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

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


 


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


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