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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Взаимодействие классов

В общем надо организовать управление персонажем. Для этого я создал класс player

Код AS3:
package AS  {
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.display.Sprite;
 
 
	public class player extends Sprite
 {
   var left_press:Boolean;
   var up_press:Boolean;
   var right_press:Boolean;
   var down_press:Boolean;
   var _speed:uint;
 
		public function player() 
		{
		addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
        addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
        addEventListener(Event.ENTER_FRAME, go);
		_speed = 3;
		}
public function keyDownListener (e:KeyboardEvent):void 
{
if (e.keyCode==65) left_press = true;
if (e.keyCode==87) up_press = true;
if (e.keyCode==68) right_press = true;
if (e.keyCode==83) down_press = true;
}
public function keyUpListener(e:KeyboardEvent):void 
{
if (e.keyCode==65) left_press = false;
if (e.keyCode==87) up_press = false;
if (e.keyCode==68) right_press = false;
if (e.keyCode==83) down_press = false;
}
public function go(e:Event):void 
{
if (left_press) igrok.x -=_speed;
if (up_press) igrok.y -=_speed;
if (right_press) igrok.x +=_speed;
if (down_press) igrok.y +=_speed;
 
}
		}
 
	}
То есть нажимаем на кнопки и igrok движется. Основной класс Main, где создается этот самый игрок

Код AS3:
package AS 
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
	public class Main extends MovieClip
	{
		private var igrok:player;
    public function Main() 
   {
   createigrok();
 
   clicki();
 
   }
 
public function createigrok()
{
  {
       igrok = new player;
       igrok.x = 50;
       igrok.y = 50;
       igrok.name = "ssss";
	   trace('Стопудово новый игрок');
   }
   addChild(igrok);
   trace('Чего-то добавили, типа...');
}
 
public function clicki()
{
   rembut.addEventListener(MouseEvent.CLICK, onClicks);
}
 
function onClicks(event:MouseEvent):void
{
 
 
   removeChild(igrok);
   trace("Удаляем игрока");
 
 
	}
	}
}
Также есть спрайт, с синим кружочком, который создается на сцене называется player и связывание AS3 player. Когда я компилирую флешку, вроде никаких ошибок не выдаёт, но и объект не двигается по нажатию кнопок. Что мне надо сделать, чтобы это всё работало?)

Старый 13.02.2014, 09:42
RonEXI вне форума Посмотреть профиль Отправить личное сообщение для RonEXI Найти все сообщения от RonEXI
  № 2  
Ответить с цитированием
RonEXI

Регистрация: Sep 2005
Сообщений: 85
Adobe Flash перехватывает нажатия кнопок иногда, для своего интерфейса. Попробуйте запустить флэшку отдельно из папки через Flash Player, или через браузер, и проверить.
__________________
www.MegaLuckyPlay.com

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Надо стейдж подписать на события клавиатуры.

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

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от mikhailk Посмотреть сообщение
Надо стейдж подписать на события клавиатуры.
Неа. Не помогло

Старый 13.02.2014, 16:21
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 5  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Я может чего-то не понял, а igrok в классе player, это что? Которому Вы хотите поменять позицию.

Старый 13.02.2014, 16:22
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 6  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
А нарисованный круг не является классом? И Вы опять в кадрах пишите?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
У вас всё должно работать. Я проверил у себя, и конечно подписал на клавиатуру stage (как подсказал mikhailk), и всё двигалось. Но так как stage в конструкторе игрока может быть не доступна, подпишитесь на
Код AS3:
public function player()
		{
			addEventListener(Event.ADDED_TO_STAGE, addedToStage);
		}
 
		private function addedToStage(e:Event):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
 
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
			stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
			addEventListener(Event.ENTER_FRAME, go);
			_speed = 3;
		}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну конечно недоступен stage в КОНСТРУКТОРЕ игрока. Он же еще не на сцене...
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 13.02.2014 в 19:55.
Старый 13.02.2014, 18:37
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 9  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Фиг его знает, не получается
Вложения
Тип файла: rar Proba.rar (913.7 Кб, 12 просмотров)

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А что же это за чудеса в классе игрока?
Код AS3:
public function go(e:Event):void 
{
if (left_press) ssss.x -=_speed;
if (up_press) ssss.y -=_speed;
if (right_press) ssss.x +=_speed;
if (down_press) ssss.y +=_speed;
}
Ведь вам надо перемещать экземпляр класса player. А ssss - не существует. Это просто строка для имени. Замените все ssss на this (в классе player) )
p.s. странно что это скомпилировалось, ведь свойства ssss не существует...

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

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

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


 


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


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