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

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

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

Регистрация: Sep 2008
Сообщений: 158
По умолчанию при нажатии кнопки на клавиатуре передвигается объект

Приветствую!

У меня следующая проблема.
На сцене есть объект. При нажатии кнопки "ф" на клавиатуре он передвигается.
Должно быть так: при первом нажатии он должен передвинуться на 20, при втором на 25. А в моём коде он почему то передвигается сразу на 45. Как это можно исправить?
Код AS1/AS2:
var fff:Number;
var can1:Boolean=true;
 
onEnterFrame = function(){
if (can1) {
if (fff == 1) {
kursor._x +=20;
can1=false;
can2=true;
} else {
	kursor._x +=0;
}
}
if (can2) {
if (fff == 1) {
kursor._x +=25;
can2=false;
} else {
	kursor._x +=0;
}
}
 
}
 
key65.onKeyDown = function() {
	 if (Key.getCode() == 65) {
     fff=1;
	 	 }
	};
key65.onKeyUp = function() {
	 if (Key.getCode() == 65) {
		 fff=0;
	 }
		};
Key.addListener(key65);

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Попробуй так
Код AS1/AS2:
step = 20;
Key.addListener(clip);
clip.onKeyDown = function() {
	if (Key.isDown(65)) {
		clip._x += step;
	}
 
};
clip.onKeyUp = function() {
	if (step == 20) {
		step = 45;
	} else {
		step = 20;
	}
 
};

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

Регистрация: Sep 2008
Сообщений: 158
samana, так мне не подходит, мне не нужно перемещаться на 45 сразу.
Мне нужно конкретно по моему коду, потому что в дальнейшем клавиши будут добавляться и при нажатии предыдущих будет защитываться ошибка, а при нажатии следующих бал.

Объясню проще.
Есть ряд букв по которым должен пройти курсор. И нужно нажимать на ту кнопку клавиатуры перед какой стоит курсор. У меня всё получается кроме одного - если одинаковые буквы рядом то курсор сразу перепрыгивает на последнюю. Вот это и нужно исправить.


Последний раз редактировалось veles2008; 31.01.2010 в 00:01.
Старый 31.01.2010, 00:39
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от veles2008 Посмотреть сообщение
Объясню проще.
Есть ряд букв по которым должен пройти курсор. И нужно нажимать на ту кнопку клавиатуры перед какой стоит курсор. У меня всё получается кроме одного - если одинаковые буквы рядом то курсор сразу перепрыгивает на последнюю. Вот это и нужно исправить.
Вы странным образом пытаетесь эту задачу решить.
Ряд букв – это строка. У каждого символа в строке есть индекс. Пользователь вводит символ, вы проверяете совпал ли он с текущим символом, определяемый каким-нибудь счетчиком. Если да, то переводите курсор на следующий. Счетчик увеличиваете на единицу.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Ой ё, число 45 я случайно вместо 25 вставил, забыл исправить после тестирования. Но это уже не важно.


Последний раз редактировалось samana; 31.01.2010 в 00:44.
Старый 31.01.2010, 11:07
veles2008 вне форума Посмотреть профиль Отправить личное сообщение для veles2008 Найти все сообщения от veles2008
  № 6  
Ответить с цитированием
veles2008
 
Аватар для veles2008

Регистрация: Sep 2008
Сообщений: 158
Цитата:
Сообщение от udaaff Посмотреть сообщение
Вы странным образом пытаетесь эту задачу решить.
Ряд букв – это строка. У каждого символа в строке есть индекс. Пользователь вводит символ, вы проверяете совпал ли он с текущим символом, определяемый каким-нибудь счетчиком. Если да, то переводите курсор на следующий. Счетчик увеличиваете на единицу.
Если я правильно понял то каждую букву нужно преобразовывать в символ. А если букв 50 и больше, то будет возрастать объём файла, а мне нужно экономить объём.

А если вы имели в виду другое, то можно увидеть пример?

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от veles2008 Посмотреть сообщение
Если я правильно понял то каждую букву нужно преобразовывать в символ. А если букв 50 и больше, то будет возрастать объём файла, а мне нужно экономить объём.

А если вы имели в виду другое, то можно увидеть пример?
Код AS1/AS2:
var str:String = "asdf";
var c:Number = 0;
 
Key.addListener(this);
 
function onKeyDown():Void
{
	if (Key.getAscii() == str.charCodeAt(c))
	{
		if (c++ < str.length)
		{
			// переводим курсор на следующий символ.
		}
		else
		{
			// the end.
		}
	}
}

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

Регистрация: Sep 2008
Сообщений: 158
udaaff, Огромное спасибо!!!

Старый 31.01.2010, 18:59
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Раз вас такой вариант устроил, то на заметку: метод Key.getAscii() возвращает только английские аски в независимости от раскладки. Для того, чтобы узнать соответствующий русский символ, необходимо будет в зависимости от того, нажат ли капслок, шифт, и кода клавиши, вычислять символ через соответствующие массивы, содержащие русские символы на позициях (индексах) равных соответствующим кодам клавиш.

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

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

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


 


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


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