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

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

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

Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
Question Как описать перемещение клипа в классе?

Как описать в классе перемещение клипа при нажатии кнопки?
Возможно ли это?
Код:
class MainHero {
	//Клип в котором будут располагаться все ресурсы MainHero
	private var container_mc:MovieClip;
	/**
	   * MainHero Конструктор
	   *
	   * @param   target   Клип к которому будет прикреплён MainHero              
	   * @param   depth    Глубина на которой прикрепляется клип                  
	   *                   
	   */
	public function MainHero(target:MovieClip, depth:Number) {
		container_mc = target.createEmptyMovieClip("container_mc" + depth, depth);
		var bottonHero = new Object();
		bottonHero.onKeyDown = controlHero;
		Key.addListener(bottonHero);
	}
	private function controlHero() {
		if (Key.isDown(Key.DOWN)) {
			goDOWN();
		}
	}
	private function goDOWN() {
		container_mc._y += 5;
	}
//изображение загружаемое в пустой клип
	public function loadHero(URL:String):Void {
		container_mc.loadMovie(URL);
	}
}
К сожалению, выше приведённый код не работает.
Необходимо что-бы созданный экземпляр MainHero отслеживал нажатие кнопки, в этом примере кнопки Down. А также, после нажатия, выполнял с этим экземпляром определённые действия, в этом примере перемещение вниз.
Буду признателен если объясните в чём проблема и как от неё избавиться?


Последний раз редактировалось bjd; 08.09.2007 в 02:35.
Старый 08.09.2007, 03:21
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 2  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Нафиг вам этот bottonHero?
Пускай onKeyDown будет в самом классе, и подписывайте на прослушивание не этот мифический bottonHero, а сам экземпляр класса, т.е. this
И trace задействуйте. В данном случае controlHero вызывается от имени вашего локального объекта, а в нем такой функции нет.
Можно было заюзать Delegate (поиск), чтобы вызывать controlHero от имени класса, но не вижу в этом нужды.

Старый 08.09.2007, 03:42
bjd вне форума Посмотреть профиль Отправить личное сообщение для bjd Найти все сообщения от bjd
  № 3  
Ответить с цитированием
bjd

Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
Цитата:
Сообщение от Kikasso
Нафиг вам этот bottonHero?
Пускай onKeyDown будет в самом классе, и подписывайте на прослушивание не этот мифический bottonHero, а сам экземпляр класса, т.е. this
И trace задействуйте. В данном случае controlHero вызывается от имени вашего локального объекта, а в нем такой функции нет.
Можно было заюзать Delegate (поиск), чтобы вызывать controlHero от имени класса, но не вижу в этом нужды.
Если я правильно понял необходимо сделать так:
Код:
class MainHero {
	//Клип в котором будут располагаться все ресурсы MainHero
	private var container_mc:MovieClip;
//????????????????????????????????????????????
              var onKeyDown
//????????????????????????????????????????????
	/**
	   * MainHero Конструктор
	   *
	   * @param   target   Клип к которому будет прикреплён MainHero              
	   * @param   depth    Глубина на которой прикрепляется клип                  
	   *                   
	   */
	public function MainHero(target:MovieClip, depth:Number) {
		container_mc = target.createEmptyMovieClip("container_mc" + depth, depth);
//******************************************
		this.onKeyDown = controlHero;
		Key.addListener(this);
//******************************************
	}
	private function controlHero() {
		if (Key.isDown(Key.DOWN)) {
			goDOWN();
                           trace("yes_1");
		}
	}
	private function goDOWN() {
		container_mc._y += 5;
                           trace("yes_2");
	}
//изображение загружаемое в пустой клип
	public function loadHero(URL:String):Void {
		container_mc.loadMovie(URL);
	}
}
Спасибо за помощ.

Код:
//????????????????????????????????????????????
              var onKeyDown
//????????????????????????????????????????????
Как правильно это написать? Хотя и так работает.


Последний раз редактировалось bjd; 08.09.2007 в 03:53.
Старый 08.09.2007, 03:50
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 4  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Добавьте ))
Код:
public var onKeyDown:Function;
public function MainHero(target:MovieClip, depth:Number) {
//...
 onKeyDown = controlHero;
 Key.addListener(this);
}
Или добавьте метод в класс:
Код:
public function MainHero(target:MovieClip, depth:Number) {
//...
 Key.addListener(this);
}
public function onKeyDown():Void{
 trace( Key.getCode() + ' pressed' );
};


Последний раз редактировалось Kikasso; 08.09.2007 в 04:04.
Старый 08.09.2007, 05:18
bjd вне форума Посмотреть профиль Отправить личное сообщение для bjd Найти все сообщения от bjd
  № 5  
Ответить с цитированием
bjd

Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
Question Клип начал двигаться, но не очень хорошо.

Клип начал двигаться, но не очень хорошо.
При нажатии на любую кнопку курсора клип делает рывок, потом останавливается на мгновение, и только после этого начинает равномерное движение в заданном направлении.
Всем, кто подскажет, как от этого избавиться, заранее спасибо!
Материал для размышлений прилагается.
Вложения
Тип файла: rar Proba.rar (6.3 Кб, 53 просмотров)

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Ну а что же вы хотели? У вас герой двигается по нажатию клавиши. Откройте блокнот, нажмите любую букву и подержите.
Вам надо по нажатию начинать двигаться, по отпусканию прекращать. Расставляйте флажки..

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код:
class Class extends MovieClip {
	//
	public function Class() {
		Key.addListener(this);
		onKeyDown = __onKeyDown;
	}
	//
	private function __moving() {
		_x++;
	}
	private function __onKeyDown() {
		onEnterFrame = __moving;
		onKeyUp = __onKeyUp;
		onKeyDown = null;
	}
	private function __onKeyUp() {
		onEnterFrame = null;
		onKeyDown = __onKeyDown;
		onKeyUp = null;
	}
}

Старый 08.09.2007, 14:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
ZOOM:

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

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

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


 


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


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