![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
|
Как описать в классе перемещение клипа при нажатии кнопки?
Возможно ли это? 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. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Нафиг вам этот bottonHero?
Пускай onKeyDown будет в самом классе, и подписывайте на прослушивание не этот мифический bottonHero, а сам экземпляр класса, т.е. this И trace задействуйте. В данном случае controlHero вызывается от имени вашего локального объекта, а в нем такой функции нет. Можно было заюзать Delegate (поиск), чтобы вызывать controlHero от имени класса, но не вижу в этом нужды. |
|
|||||
|
Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
|
Цитата:
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);
}
}
Как правильно это написать? Хотя и так работает. Последний раз редактировалось bjd; 08.09.2007 в 03:53. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Добавьте ))
public var onKeyDown:Function;
public function MainHero(target:MovieClip, depth:Number) {
//...
onKeyDown = controlHero;
Key.addListener(this);
}
Последний раз редактировалось Kikasso; 08.09.2007 в 04:04. |
|
|||||
|
Регистрация: Mar 2007
Адрес: Киев
Сообщений: 96
|
Клип начал двигаться, но не очень хорошо.
При нажатии на любую кнопку курсора клип делает рывок, потом останавливается на мгновение, и только после этого начинает равномерное движение в заданном направлении. Всем, кто подскажет, как от этого избавиться, заранее спасибо! Материал для размышлений прилагается. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Ну а что же вы хотели? У вас герой двигается по нажатию клавиши. Откройте блокнот, нажмите любую букву и подержите.
Вам надо по нажатию начинать двигаться, по отпусканию прекращать. Расставляйте флажки.. |
|
|||||
|
...
модератор форума
Регистрация: 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;
}
}
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
ZOOM:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|