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

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

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

Регистрация: Sep 2011
Сообщений: 7
По умолчанию Зажатая кнопка

Всем привет. Вопрос по Actionscript 3.0. Подскажите пожалуйста, как можно заставить объект двигаться по полю, при зажимании виртуальной кнопки(button)? Ну то есть что-бы объект двигался в нужном направлении до тех пор, пока курсор давит на эту кнопку. Я в этом деле новичок, всю голову сломал уже, вот сдался, не выдержал. Вот кусок проекта, где управление реализовано с помощью стрелок на клавиатуре. Как заменить их на виртуальные кнопки

Код AS3:
import flash.events.KeyboardEvent;
 
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey)
stage.addEventListener(KeyboardEvent.KEY_UP, outKey)
 
var upK:Boolean = false;
var downK:Boolean = false;
var leftK:Boolean = false;
var rightK:Boolean = false;
 
var speed = 5;
 
 
function onKey(e:KeyboardEvent)
{
	if (e.keyCode == 38)
	{
		upK=true;
	}
	if (e.keyCode == 39)
	{
		rightK = true;
	}
	if (e.keyCode == 40)
	{
		downK=true;
	}
	if (e.keyCode == 37)
	{
		leftK=true;
	}
 
}
function outKey(e:KeyboardEvent)
{
	if (e.keyCode == 38)
	{
		upK=false;
	}
	if (e.keyCode == 39)
	{
		rightK = false;
	}
	if (e.keyCode == 40)
	{
		downK=false;
	}
	if (e.keyCode == 37)
	{
		leftK=false;
	}
 
}
 
addEventListener(Event.ENTER_FRAME, anim)
 
function anim(e:Event):void
{
	if(upK)
	{
		Dude.gotoAndStop(3);
		Dude.y -=speed;
	} else if(rightK)
	{
		Dude.gotoAndStop(1);
		Dude.x +=speed;
	} else if(downK)
	{
		Dude.gotoAndStop(4);
		Dude.y +=speed;
	} else if(leftK)
	{
		Dude.gotoAndStop(2);
		Dude.x -=speed;
	} else
	{
		Dude.gotoAndStop(4);
	}
 
 
}

Старый 24.09.2011, 15:32
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 2  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
события вешать на каждую кнопку MOUSE_DOWN, MOUSE_UP

Код AS3:
button1.addEventListener(MOUSE_DOWN, mouseDown1);
button1.addEventListener(MOUSE_UP, mouseUp1);

Старый 24.09.2011, 15:51
MrHubris вне форума Посмотреть профиль Отправить личное сообщение для MrHubris Найти все сообщения от MrHubris
  № 3  
Ответить с цитированием
MrHubris

Регистрация: Sep 2011
Сообщений: 7
Когда пишу
Код AS3:
right.addEventListener(MouseEvent.MOUSE_DOWN, right1);
Человечек делает по одному шагу при каждом нажатии

Старый 24.09.2011, 16:02
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 4  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
при нажатии на кнопку в обработчике добавляешь слушатель ентерфрейма
Код AS3:
addEventListener(Event.ENTER_FRAME, anim)
а когда кнопка отпускается отписываешься
Код AS3:
removeEventListener(Event.ENTER_FRAME, anim)
как вариант
__________________
мира и гармонии

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
private function right1(event:MouseEvent):void
{
    _pers.addEventListener(Event.ENTER_FRAME, walkRight);
}
private function walkRight(event:Event):void
{
    _pers.x += 1;
}
3p.station - ))
__________________
Reality.getBounds(this);

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

Регистрация: Sep 2011
Сообщений: 7
Не понимаю. Кто-нибудь может написать пример. Есть шарик с именем "ball". Есть кнопка. Как сделать так, что-бы шарик перемещался вправо, пока зажата эта кнопка.

Старый 24.09.2011, 16:34
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 7  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
Код AS3:
right.addEventListener(MouseEvent.MOUSE_DOWN, onRightDown);
right.addEventListener(MouseEvent.MOUSE_UP, onRightUp);
 
private function onRightDown(event:MouseEvent):void
{
        _goRight = true;
        addEventListener(Event.ENTER_FRAME, moveBall);
}
 
private function onRightUp(event:MouseEvent):void
{
         _goRight = false;
         removeEventListener(Event.ENTER_FRAME, moveBall);
}
 
private function moveBall(event:Event):void
{
	if(_goRight)
	{
		_ball.x += _speed;
	} 
}
__________________
мира и гармонии


Последний раз редактировалось 3p.station; 24.09.2011 в 16:38.
Старый 24.09.2011, 16:35
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 8  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
Код AS3:
buttonRight.addEventListener(MOUSE_DOWN, mouseDown1);
buttonRight.addEventListener(MOUSE_UP, mouseUp1);
 
private function mouseDown1(e: MouseEvent):void
{
    ball.addEventListener(Event.ENTER_FRAME, toRight);
}
private function mouseUp1(e: MouseEvent):void
{
    ball.removeEventListener(Event.ENTER_FRAME, toRight);
}
private function toRight(e: Event):void
{
    ball.x ++;
}
а вообще я написал бы класс для ball с public переменной direction: String от английского направление
если direction == 'Up' то двигать ball вверх, если direction == Down двигать вниз, если direction == '' то не двигать и т.д.

затем написать класс к 4 кнопкам, которые выдают значение при нажатии на одну из них (Up, Down, Right, Left)
затем передовать значение в класс ball. Так мне кажется будет удобнее


Последний раз редактировалось ЗлОй ПрОграММер; 24.09.2011 в 16:45.
Старый 24.09.2011, 17:09
MrHubris вне форума Посмотреть профиль Отправить личное сообщение для MrHubris Найти все сообщения от MrHubris
  № 9  
Ответить с цитированием
MrHubris

Регистрация: Sep 2011
Сообщений: 7
Наверно я совсем тупой. Ниче не получается) Кнопка должна быть MovieClip или Button?

Старый 24.09.2011, 17:36
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 10  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
что именно не получается ?

не тупой а ленивый разбираться, это у многих бывает
__________________
мира и гармонии

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

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

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


 


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


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