Mayatnik85
8.12.2013 - 18:12
У меня возник вопрос.Есть игрушка....есть персонаж(клип)......движение персонажа осуществляется кнопками A и D ,
on(keyPress "a")
{
this._x=this._x-10;
this.nogi.play();
}
on(keyPress "d")
{
this._x=this._x+10;
this.nogi.play();
но увы этот код критичен к раскладке клавиатуры....как сделать так,что бы отслеживалось нажатие клавиши не зависимо от раскладки?)
Mayatnik85
8.12.2013 - 19:53
ну...никто не поможет?
все просто.
вместо буквы впишите цифровой ASCII-код клавиши
Mayatnik85
9.12.2013 - 09:32
Цитата(DJKOT @ 9.12.2013 - 08:06)

все просто.
вместо буквы впишите цифровой ASCII-код клавиши
так не работает...например А это 65.....и сразу ошибка при компиляции
Ben-Gun
9.12.2013 - 10:26
Цитата(Mayatnik85 @ 8.12.2013 - 18:12)

on(keyPress "a")
У тебя в этой строчке "а" записано как кириллический символ, замени его на латинский и ошибки вылетать не будет.
Или как советовали, запиши в первый кадр:
Код
onEnterFrame = function () {
if (Key.isDown(65)) {
mc._x = mc._x-10;
mc.nogi.play();
}
};
Mayatnik85
9.12.2013 - 18:54
Цитата(Ben-Gun @ 9.12.2013 - 11:26)

У тебя в этой строчке "а" записано как кириллический символ, замени его на латинский и ошибки вылетать не будет.
Или как советовали, запиши в первый кадр:
Код
onEnterFrame = function () {
if (Key.isDown(65)) {
mc._x = mc._x-10;
mc.nogi.play();
}
};
ошибка при такой записи кода..
Ben-Gun
10.12.2013 - 08:34
Цитата(Mayatnik85 @ 9.12.2013 - 18:54)

ошибка при такой записи кода..
а ты сними выделение со всех мувиков и кликни по первому кадру и вставь код в него (на мувик вешается код, который ты привел в первом сообщении, а этот - в кадр).
и, подозреваю, не задал имя персонажу (mc)
Mayatnik85
10.12.2013 - 19:29
да,был косяк с мс.....но терь все поправил.....ошибки нет,анимация ног воспроизводится.....но движения мувика нет.....стоит на месте...
Mayatnik85
10.12.2013 - 20:42
все,я допер....переписал весь код.У меня все было на одном клипе....ща разделил,какие то условия на руки....какие то на ноги.....на общий фон движение....все работает)СПАСИБО ВСЕМ!)
Mayatnik85
11.12.2013 - 13:32
if (Key.isDown(90)) {
box1.udar.play();
if(this.hitTest(_root.box2))
{мои действия}
}
почему не проверяет столкновение....а запускает все действия сразу при нажатии кнопки?)
Mayatnik85
11.12.2013 - 14:30
if(_root.box1.hitTest(this.box2)) понял,где собака порылась)
Mayatnik85
11.12.2013 - 16:19
а как сделать,что бы 2 муви клипа не могли пройти сквозь друг-друга....пробовал так,но это реально только для 1 мувика....
if (_root.box1.hitTest(this.box2.body2))
{box1._x = box1._x-10;}
if (_root.box2.hitTest(this.box1.body1))
{box2._x = box2._x+10;}
2 мувик тоже не проходит,но он толкает первый.....в то время как 1 просто упирается,как в стену...
Ben-Gun
12.12.2013 - 11:33
Если у тебя код находится в кадре внутри мувика (this), то, может быть, правильнее так записать:
Код
if (box1.hitTest(box2.body2)) {
box1._x = box1._x-10;
}
if (box2.hitTest(box1.body1)) {
box2._x = box2._x+10;
}
Столкновение происходит и мувики не проходят сквозь друг друга, но
- при движении box1 и столкновении с box2.body2 мувик box1 будет делать шаг назад, а box2 оставаться на месте,
- при движении box1 и столкновении box1.body1 с box2 оба мувика будут смещаться вправо,
и наоборот (для box2).
А как должно быть - поподробнее объясни.
И исходник бы скинул, посмотреть что с чем и зачем должно сталкиваться
Mayatnik85
12.12.2013 - 18:35
наоборот не пашет....бокс 1 упирается в бокс 2 как в стену,а бокс 2 всегда смещает бокс 1 влево.Бокс 1и 2 это мувик с боксером. Боди соответственно тело боксера...взял за точку соприкосновения тело потому,что если взять весь мувик....то кулаки не достают)))))Мне нужно добиться того....что б они оба могли толкать друг друга за ринг....
Mayatnik85
12.12.2013 - 18:54
выходит,что условия противоречат друг-другу....и выполняется только первое..
Mayatnik85
12.12.2013 - 20:03
надо наверное как-то сделать условие.....если нажата кнопка такая-то и произошло столкновение....то тогда применить
if (box1.hitTest(box2.body2)) {
box1._x = box1._x-10;
}
если нажата др кнопка,то соответственно то же для бокс2....
Mayatnik85
12.12.2013 - 20:10
даааааа,получилось))
Mayatnik85
12.12.2013 - 21:13
if (Key.isDown(68))
{
box1._x = box1._x+10;
box1.nogi.play();
if (_root.box1.hitTest(this.box2.body2))
{
{box2._x = box2._x+10;}
box2.nogi2.play();
}
}
такая вот фигня вышла)......толкают терь друг-друга по нажатию кнопок....если обе нажаты,то стоят уперевшись лбами)
Mayatnik85
14.12.2013 - 18:44
нащел проблемку......те же 2 боксера.....есть кнопки управления движения для боксера 1 и 2....и есть кнопки для ударов 1 и 2 боксера......и вот заметил...что когда зажаты кнопки движения боксера 1 и 2.....и нажата 3я кнопка удара(У любого боксера)....то при такой ситуации у второго боксера кнопка удар не работает.....если отпустить удар или движение у первого...то у второго снова удар работает.Не много путанно...но такое ощущение ,что обрабатывается только 3 любых команды из 4....почему это может происходить?)
Mayatnik85
16.12.2013 - 18:28
ап
chingachgoog
17.12.2013 - 09:29
Во-первых, надо протрейсить isDown.
Во-вторых, попробовать другое сочетание клавиш.
В-третьих, попробовать на разных компах.
Ben-Gun
17.12.2013 - 11:50
Цитата(chingachgoog @ 17.12.2013 - 09:29)

Во-вторых, попробовать другое сочетание клавиш.
Скорее всего в этом загвоздка.
Маятник, в новом документе создай символ, скопируй, чтобы получилось восемь штук, задай имена, вставь в первый кадр код, затем, тестируя зажми одновременно W, A, D и стрелки влево и вверх. Пять мувиков начнут движение. Но если зажать одновременно W, A, S, D двигаться будут только три мувика.
Код
onEnterFrame = function () {
if (Key.isDown(Key.SPACE)) {
hero._y += 5;
}
if (Key.isDown(Key.LEFT)) {
hero2._x -= 5;
}
if (Key.isDown(Key.RIGHT)) {
hero3._x += 5;
}
if (Key.isDown(Key.UP)) {
hero4._y -= 5;
}
if (Key.isDown(83)) {
hero5._y += 5;
}
if (Key.isDown(65)) {
hero6._x -= 5;
}
if (Key.isDown(68)) {
hero7._x += 5;
}
if (Key.isDown(87)) {
hero8._y -= 5;
}
};