PDA

Просмотр полной версии : Как прекратить движения клипа управляемого с клавиатуры?


Franches
11.06.2010, 13:31
Короч вот делаю обьект которым буду управлять с клавиатуры стрелочками.
Вот рисую обьект преобразовываю его в клип называю его "Hero"и пишу на нём

onClipEvent (load) {
h = 1;
}
onClipEvent (enterFrame) {
if (h) {
if (Key.isDown(Key.DOWN)) {
_y += 5;
} else if (Key.isDown(Key.UP)) {
_y -= 5;
} else if (Key.isDown(Key.RIGHT)) {
_x += 5;
} else if (Key.isDown(Key.LEFT)) {
_x -= 5;
}
}
}


Работает! Но как сделать препятствия что он не двигался дальше?
Пожалуйта помогите !!!

Хемуль
11.06.2010, 13:40
2 Franches:
Вы уж очень широкий вопрос задали. Я так понимаю, вы делаете игрушку... Так вот в играх препятствия по-разному героев могут тормозить. Такое не делается во флеше само по себе.

Franches
11.06.2010, 13:55
Ну есть же всякие флешки с препятствиями!

Хемуль
11.06.2010, 14:13
2 Franches:
Так это понятно. Есть и флешки с препятствиями, есть и серьёзные мультипользовательские онлайн-игры. Всё делается, не вопрос. Вопрос в том, как делается. Я просто хочу вам сказать, что нет во Флеше такой функции, которая говорит, мол, это будет препятствием для твоего героя. Нужно код писать, математику использовать. Да всё что угодно может быть в разных случаях. Какой именно алгоритм использовать в вашем случае, я не знаю, потому что не знаю точно, что нужно получить. На сайте gotoAndPlay (http://www.gotoandplay.it/) когда-то были всякие прототипы движков для игр-платформеров.

KiL33
11.06.2010, 19:40
В объектах код писать не стоит и вообще писать на ас2, не стоит))
изучайте уже третий

вот пример на ас2, как это могло бы выглядеть:

var SPEED_MC:Number = 10;

var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
switch (Key.getCode()) {

case Key.LEFT :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;

case Key.UP :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;

case Key.RIGHT :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;

case Key.DOWN :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;
}
};

keyListener_obj.onKeyUp = function() {
delete _root.onEnterFrame;
};

Key.addListener(keyListener_obj);

function position():Void {

if (wall.hitTest(_root.mc._x, _root.mc._y+14, true)) {

} else {
if (cCode == 40) {
mc._y += SPEED_MC;
}

}
if (wall.hitTest(_root.mc._x+14, _root.mc._y, true)) {
} else {
if (cCode == 39) {
mc._x += SPEED_MC;
}

}
if (wall.hitTest(_root.mc._x, _root.mc._y-14, true)) {
} else {
if (cCode == 38) {
mc._y -= SPEED_MC;
}

}
if (wall.hitTest(_root.mc._x-14, _root.mc._y, true)) {
} else {
if (cCode == 37) {
mc._x -= SPEED_MC;
}

}
}


собственно wall - это мувик в котором вы рисуете все препятствия.

mc - это персонаж

Тута полу-дохлый пример на ас три.
http://www.flasher.ru/forum/showthread.php?t=138682&page=2

пост №15

Franches
12.06.2010, 17:28
Спасибо! :)

Franches
23.06.2010, 20:35
Работает!!!
А как сделать чтоб можно было передвигать какиенибудь вещи (коробки например) ?