Nano Hash - криптовалюты, майнинг, программирование

Flash CS4/AS3: попытка сделать часть фрагмента мувиклипа только при нажатии кнопки на клавиатуре

Я работаю над проектом, в котором персонаж ходит вперед или назад по экрану или стреляет из винтовки в зависимости от того, нажимает ли пользователь одну из следующих клавиш клавиатуры: стрелку вперед (клавиша 39), стрелку назад (клавиша 37) или пробел (клавиша 32).

Моя проблема заключается в том, что когда пользователь нажимает и удерживает клавишу со стрелкой вперед, мувиклип персонажа воспроизводит один экземпляр анимации движения вперед, а затем движется вперед. Я хочу, чтобы анимация ходьбы вперед воспроизводилась все время, пока персонаж движется.

Вот мой код:

import fl.transitions.Tween;
import fl.transitions.easing.*;

stage.addEventListener(KeyboardEvent.KEY_DOWN, moveCharacter);
stage.addEventListener(KeyboardEvent.KEY_UP, stopCharacter);

var muzzlePosition:Number = new Number();
var bullet:Bullet = new Bullet();

function moveCharacter(e:KeyboardEvent):void {
switch (e.keyCode) {
    case 39 :
        if (sprite_Cicada.x<stage.stageWidth-150) {
            sprite_Cicada.gotoAndPlay("walk-fwd");
            sprite_Cicada.x+=5;
        } else {
            sprite_Cicada.x+=0;
            sprite_Cicada.gotoAndPlay("push");
        }
        break;

    case 37 :
        if (sprite_Cicada.x>225) {
            sprite_Cicada.x-=3;
            sprite_Cicada.gotoAndPlay("walk-bkwds");
        } else {
            sprite_Cicada.x-=0;
            sprite_Cicada.gotoAndPlay("standing");
        }
        break;

    case 32 :
        muzzlePosition=sprite_Cicada.x+sprite_Cicada.AK47.x+28;
        addChild(bullet);
        bullet.gotoAndStop("lead");
        bullet.x=muzzlePosition;
        bullet.y=328;
        sprite_Cicada.gotoAndPlay("fireAK");
        var shootBullet:Tween=new Tween(bullet,"x",None.easeOut,muzzlePosition,stage.stageWidth*2,.5,true);
        if (bullet.x>stage.stageWidth+50) {
            removeChild(bullet);
        }
        break;
    }
}

function stopCharacter(e:KeyboardEvent):void {
sprite_Cicada.gotoAndPlay("standing");
}

Ответы:


1

Возможно, вы можете сделать

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown );
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
addEventListener(Event.ENTER_FRAME, movePerson);
function keydown(e:KeyboardEvent) {
        if (e.keyCode == Keyboard.LEFT || e.keyCode == Keyboard.RIGHT) { per_mc.gotoAndStop(2) }
        if (e.keyCode == Keyboard.LEFT) {leftkeyStatus = true; rightkeyStatus = false;}
        if (e.keyCode == Keyboard.RIGHT) {leftkeyStatus = false; rightkeyStatus = true;}
    }
function keyup(e:KeyboardEvent) { 
        if (e.keyCode == Keyboard.LEFT || e.keyCode == Keyboard.RIGHT) { per_mc.gotoAndStop(1) }
        if (e.keyCode == (Keyboard.LEFT)) {leftkeyStatus = false;}
        if (e.keyCode == (Keyboard.RIGHT)) {rightkeyStatus = false;}
    }

    function movePerson(e:Event) {
        if (rightkeyStatus) {
    sprite_Cicada.x-=3;
        }           
    }
13.11.2013
  • Я попробовал ваш код, но несколько раз получал следующую ошибку в нескольких строках кода: 1120: Access of undefined property leftkeyStatus. и 1120: Access of undefined property rightkeyStatus. 19.11.2013
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..