Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   упрвление movie clip клавиатурой и касание объектов (http://www.flasher.ru/forum/showthread.php?t=123279)

alex001 29.03.2009 13:17

упрвление movie clip клавиатурой и касание объектов
 
Вложений: 1
в программировании я не особо силен однако придумал игру.
для осуществления знаю все кроме двух вещей.

в игре надо будет на лыжах спускаться с склона.
для передвижения вправо влево я использовал такой код:
Код:

onClipEvent (keyDown) {
if (Key.isDown( key.LEFT)) {
_x-=5;
}
}
onClipEvent (keyDown) {
if (Key.isDown( key.RIGHT)) {
_x+=5;
}
}

он работает, однако сильно дергаеться а тагже в начале движения подвисает.

и второе, это припятствие. необходимо обнаружение касаний.
вообщем в игре земля под лыжником будет идти анимацией motion tween'ом. припятствия с землей ехать должны.
когда лыжник тронет припятствие он должен переходить в определенный кадр где будет анимация вризания.
код использавал такой:
Код:

if (lishnik.hitTest(board1)) {
        gotoAndPlay("crash")
    }
 
 
if (lishnik.hitTest(board2)) {
        gotoAndPlay("crash")
    }

lishnik это муви клип лыжника а board1/board2 это припятствия.
проблема в том что hitTest работает нармально только с квадратами. т.к. он границы у всех обьектов он рассматривает как квадраты.
а если использовать тот код передвижения что я использовал то hitTest вообще не работает.
может другие коды использовать? необходимо чтобы хитТест работал с кодом передвижения.
высылаю исходник. очень прошу помоч. буду очень благодарен.

etc 29.03.2009 13:31

alex001, отредактируйте свой пост и оформите код тегами [as][/as].

VVall 29.03.2009 16:57

Цитата:

Сообщение от alex001 (Сообщение 809297)
он работает, однако сильно дергаеться а тагже в начале движения подвисает.

Это результат работы автоповтора клавиш. Вам нужно сделать флаги нажатия нужных клавиш, которые будут устанавливаться по событию нажатия и сбрасываться по событию отпускания.

alex001 29.03.2009 17:21

я неособо силен в экшнскрипт :rolleyes:
можеш поподробнее расписать?

ГЛАВАК 29.03.2009 18:41

Код AS1/AS2:

onClipEvent (keyDown) { 
if (Key.isDown( key.LEFT)) {
_x-=5;
}
}
onClipEvent (keyDown) {
if (Key.isDown( key.RIGHT)) {
_x+=5;
}
}

а мож лучше
Код AS1/AS2:

on (keyPress "<Right>") {
        _x += 5;
}
on (keyPress "<Left>") {
        _x -= 5;
}

так вроде нормально
P.S. а насчёт HitTest мне тоже интересно:rolleyes:

alex001 29.03.2009 18:47

спасибо большое,ГЛАВАК!
хоть в начале и тормозит однако все плавно!
но проблема все таже...
код смотрит касание только в загрузке игры а потом если зайдеш на это движением клавишами он не видит касания...

KiL33 30.03.2009 09:24

Цитата:

проблема в том что hitTest работает нармально только с квадратами. т.к. он границы у всех обьектов он рассматривает как квадраты.
Для нестандартных объектов можно использовать нестандартные решенияgetPixel.

Рисуешь объекты столкновения, какой хочешь формы, подложка этих объектов должна быть одного цвета желательно черного. И собственно с помощью getPixel определяешь цвет подложки, если цвет пикселя черный, значит препятствие.

И ещё необходимо будет перевести зону проходимости в пиксельный вид, примерно так
Код:

var myBitmapData = new BitmapData(mypath._width, mypath._height, false, 0x000000);
myBitmapData.draw(mypath);

Цитата:

код смотрит касание только в загрузке игры а потом если зайдеш на это движением клавишами он не видит касания...
Код:

onEnterFrame


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

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