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

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

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

Регистрация: Nov 2008
Адрес: Украина
Сообщений: 37
Отправить сообщение для st0rk с помощью ICQ
По умолчанию Строгая последовательность

Добрый день.
Я уже задавал в одной из тем этот вопрос но тогда мне толком не рассказали как решить, а очень нужно, подскажите пожалуйста в таком вопросе...
у меня 5 кнопок и они должны нажиматься строго в последовательности (например 1,3,5,4,2,3,5,1,4 -это правильно иначе неправильно!)
как такое реализовать? с массивами не работал, в AS нуб, но хочу разобраться. на Вас только одна надежда.

Добавлено через 1 час 17 минут
может вот так:
Код AS3:
var massiv = new Array("1", "2", "3", "4","2", "5","5", "4","3", "1","6");
oborot_btn.onPress = function () {
	var ok = "1";
	if (ok <> massiv[1]) {
		trace("error")
		}
}
создали массив и потом при нажатии кнопки присваиваем какой-то переменной число, которое мы и будем проверять на валидность в массиве?
и так для каждой кнопки в той последовательности что нам нужно???


Последний раз редактировалось st0rk; 08.01.2009 в 15:04.
Старый 08.01.2009, 16:11
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Вам нужно знать какую кнопку Вы нажали
Для этого все здесь
далее нужно сравнить номер (id) кнопки с элементом массива

то есть для каждой кнопки вот такой код:
Пусть есть переменная (ОДНА для всех кнопок!)
Код AS1/AS2:
var numberOfElem:Number=0;
При нажатии на любую кнопку происходит увеличение значения переменной на 1
Код AS1/AS2:
++numberOfElem;// Здесь нужно именно так! это не то же что и numberOfElem++
После этого проверяется значение элемента массива под номером numberOfElem
Код AS1/AS2:
if(massiv[numberOfElement] == button.id){/// про button.id написано по ссылке
...Ваши пожелания и предложения
}
__________________
...вселенская грусть

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

Регистрация: Nov 2008
Адрес: Украина
Сообщений: 37
Отправить сообщение для st0rk с помощью ICQ
тоесть что-то наподобие этого?
Код AS3:
var massiv = new Array("1", "2", "3", "4","2", "5","5", "4","3", "1","6");
for (var z:Number = 1; z<=5; z++) {
        button.id = z;
var numberOfElem:Number=0;
++numberOfElem;
if(massiv[numberOfElement] <> button.id){
trace("error")
}
}
Вы написали что этот цикл фор должен цепляться на каждую кнопку?
или же может в отдельный слой AS?

Старый 09.01.2009, 13:18
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 4  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
Код AS1/AS2:
var massiv = new Array("1", "2", "3", "4", "2", "5", "5", "4", "3", "1", "6");
// подсказка
var hint = this.createTextField('hint', 1, 50, 10, 200, 20);
hint.text = massiv;
hint.border = true;
//
// создаём копки 
// кол-во кнопок = максимальное значение в массиве
var max = massiv[ massiv.sortOn(null, 8|16).pop() ];
for(var i = 0; i < max; i++){
	var btn = this.createTextField('hint', i+5, 50 + i * 40, 50, 20, 20);
	btn.border = true;
	btn.html = true;
	btn.htmlText = '<a href="asfunction:push_the_button, '+(i+1)+ '">' +(i+1)+ '</a>';
	// для обычных кнопок
	//btn.i = i+1;
	//btn.onPress = push_the_button;
}
//
//
// функция проверки
var counting = 0;
function push_the_button(){
	var index = Number(arguments[0]);
	// для обычной кнопки
	//var index = this.i 
	if( massiv[counting] == index){
		trace('правильно! продолжайте...')
		counting++;
	}else{
		trace('***' + newline + 'неправльно! Давай сначала.' + newline + '***');
		counting = 0;
	}
}

Старый 09.01.2009, 13:28
st0rk вне форума Посмотреть профиль Отправить личное сообщение для st0rk Найти все сообщения от st0rk
  № 5  
Ответить с цитированием
st0rk

Регистрация: Nov 2008
Адрес: Украина
Сообщений: 37
Отправить сообщение для st0rk с помощью ICQ
Mnilionic, у меня кнопки уже есть и они мувиклипы, как мне их нужно назвать или что сделать,чтобы Ваш пример сработал? просто они не должны находиться в одну линию как у Вас, а разбросаны по всей сцене - под элементами графическими...

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
если хотите сделать через имена - то почитайте по ссылочке в моём посте выше
__________________
...вселенская грусть

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
st0rk
Код AS1/AS2:
btn1.i = 1;
btn1.onPress = push_the_button;
btn2.i = 2;
btn2.onPress = push_the_button;
...

Старый 10.01.2009, 03:24
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 8  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Код AS1/AS2:
var massiv = new Array("1", "2", "3", "4", "2", "5", "5", "4", "3", "1", "6");
massiv.i=0;
 
btn_1.onPress=function()
{
	Recover(this._name);
}
 
btn_2.onPress=function()
{
	Recover(this._name);
}
 
Recover=function(s:String)
{
	if (massiv[massiv.i]==s.substring(4,s.length)) massiv.i++;
// else massiv.i=0;
}
Переменная massiv.i будет хратить текущею позицию последовательности, если нужен сброс когда нарушенна последовательность нажатий то раскомментить код

UPD: Либо же так
Код AS1/AS2:
var massiv = new Array("1", "2", "3", "4", "2", "5", "5", "4", "3", "1", "6");
massiv.i=0;
 
btn_1.onPress=function()
{
	if (Recover(this._name)==true) Brain(this._name);
}
 
btn_2.onPress=function()
{
	if (Recover(this._name)==true) Brain(this._name);
}
 
Recover=function(s:String)
{
	if (massiv[massiv.i]==s.substring(4,s.length)) 
	{
		massiv.i++; 
		return true;
	} else 
	{
		//massiv.i=0;
		return false;
	}
}
 
Brain=function(s:String)
{
	if ( s== 'btn_1') trace('Действие первой кнопки');
	if ( s== 'btn_2') trace('Действие второй кнопки');
}
UPD2: Можно и так
Код AS1/AS2:
var massiv = new Array("1", "2", "3", "4", "2", "5", "5", "4", "3", "1", "6");
massiv.i=0;
 
btn_1.onPress=function()
{
	Recover(this._name);
}
 
btn_2.onPress=function()
{
	Recover(this._name);
}
 
Recover=function(s:String)
{
	if (massiv[massiv.i]==s.substring(4,s.length)) 
	{
		massiv.i++;
		Brain(massiv.i);
	}
	//	else trace('Бабах!!!! Вы нарушили последовательность');
}
 
Brain=function(step:Number)
{
	if ( step==1) trace('Запуск левого двигателя');
	if ( step==2) trace('Запуск правого двигателя');
	if ( step==3) trace('Включение взлёточных прожекторов');
	if ( step==4) trace('Тяга 60%');
	if ( step==5) trace('Тяга 80%');
	if ( step==6) trace('Высунуть закрылки');
	if ( step==7) trace('Отпустить ручной тормоз');
	if ( step==8) trace('Штурвал на себя');
	if ( step==9) trace('Тяга 100%');
	if ( step==10)trace('Спрятать шасси');
}
Добавлено через 30 минут
UPD III:
Первый "UPD" для того случая когда действия кнопки не меняеться
Второй "UPD" когда каждое действие уникальное по функционалу.
__________________
return this...


Последний раз редактировалось AlexCooper; 10.01.2009 в 03:47.
Старый 16.01.2009, 15:06
st0rk вне форума Посмотреть профиль Отправить личное сообщение для st0rk Найти все сообщения от st0rk
  № 9  
Ответить с цитированием
st0rk

Регистрация: Nov 2008
Адрес: Украина
Сообщений: 37
Отправить сообщение для st0rk с помощью ICQ
Mnilionic, все нравится встрочку, пусть так и будет, только вот чтобы кнопки-ссылки эти назывались не 1,2,3,4,5,6, а например ВВ, ОТК, УД и т.д. как такое сделать?

Старый 16.01.2009, 15:21
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 10  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
А чем вам мой пример не понравился?
Если нужно под Ваши не стандартизированные имена кнопок.
Меняем в массиве
Код AS1/AS2:
var massiv = new Array("имя_1", "имя_2", "имя_3", "имя_1", "имя_3");
и в функции Recover уберем отработку строки, то-есть
Код AS1/AS2:
if (massiv[massiv.i]==s)
__________________
return this...

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

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

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


 


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


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