Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Управление движением и раскладка клавы...
Flash Zone Forum > Macromedia Flash > Начинающим
Mayatnik85
У меня возник вопрос.Есть игрушка....есть персонаж(клип)......движение персонажа осуществляется кнопками 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
 ну...никто не поможет?
DJKOT
 все просто.
вместо буквы впишите цифровой ASCII-код клавиши
Mayatnik85
Цитата(DJKOT @ 9.12.2013 - 08:06) *
все просто.
вместо буквы впишите цифровой ASCII-код клавиши

 так не работает...например А это 65.....и сразу ошибка при компиляции
Ben-Gun
Цитата(Mayatnik85 @ 8.12.2013 - 18:12) *
on(keyPress "a")

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



ошибка при такой записи кода..
Ben-Gun
Цитата(Mayatnik85 @ 9.12.2013 - 18:54) *
ошибка при такой записи кода..

а ты сними выделение со всех мувиков и кликни по первому кадру и вставь код в него (на мувик вешается код, который ты привел в первом сообщении, а этот - в кадр).
и, подозреваю, не задал имя персонажу (mc) smile.gif
Mayatnik85
 да,был косяк с мс.....но терь все поправил.....ошибки нет,анимация ног воспроизводится.....но движения мувика нет.....стоит на месте...
Mayatnik85
 все,я допер....переписал весь код.У меня все было на одном клипе....ща разделил,какие то условия на руки....какие то на ноги.....на общий фон движение....все работает)СПАСИБО ВСЕМ!)
Mayatnik85
if (Key.isDown(90)) {
box1.udar.play();
if(this.hitTest(_root.box2))
{мои действия}
}



почему не проверяет столкновение....а запускает все действия сразу при нажатии кнопки?)
Mayatnik85
if(_root.box1.hitTest(this.box2))  понял,где собака порылась)
Mayatnik85
 а как сделать,что бы 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
Если у тебя код находится в кадре внутри мувика (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).
А как должно быть - поподробнее объясни.
И исходник бы скинул, посмотреть что с чем и зачем должно сталкиватьсяsmile.gif
Mayatnik85
 наоборот не пашет....бокс 1 упирается в бокс 2 как в стену,а бокс 2 всегда смещает бокс 1 влево.Бокс 1и 2 это мувик с боксером. Боди соответственно тело боксера...взял за точку соприкосновения тело потому,что если взять весь мувик....то кулаки не достают)))))Мне нужно добиться того....что б они оба могли толкать друг друга за ринг....
Mayatnik85
 выходит,что условия противоречат друг-другу....и выполняется только первое..
Mayatnik85
 надо наверное как-то сделать условие.....если нажата кнопка такая-то и произошло столкновение....то тогда применить
if (box1.hitTest(box2.body2)) {
box1._x = box1._x-10;
}


если нажата др кнопка,то соответственно то же для бокс2....
Mayatnik85
 даааааа,получилось))
Mayatnik85
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
 нащел проблемку......те же 2 боксера.....есть кнопки управления движения для боксера 1 и 2....и есть кнопки для ударов 1 и 2 боксера......и вот заметил...что когда зажаты кнопки движения боксера 1 и 2.....и нажата 3я кнопка удара(У любого боксера)....то при такой ситуации у второго боксера кнопка удар не работает.....если отпустить удар или движение у первого...то у второго снова удар работает.Не много путанно...но такое ощущение ,что обрабатывается только 3 любых команды из 4....почему это может происходить?)
Mayatnik85
 ап rolleyes.gif
chingachgoog
Во-первых, надо протрейсить isDown.
Во-вторых, попробовать другое сочетание клавиш.
В-третьих, попробовать на разных компах.
Ben-Gun
Цитата(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;
    }
};
Русская версия IP.Board © 2001-2017 IPS, Inc.