0

もう一度、私が所属しているクラスのプロジェクトに取り組んでおり、ボタンを押したときにスティックマン (ムービークリップ) を左または右に移動させる方法を理解するのに苦労しています。現在、私が持っているものは、矢印キーが押されたときに棒人間が「歩く」アニメーションを再生するようにしますが、彼も同様に動かしたいです! これが私が持っているものです。

ボタンが押されたときにトリガーするタイマーイベントを使用し、その機能を使用して彼を置き換えることをお勧めしますが、それをコーディングするのに問題があります。

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.utils.Timer;
import flash.events.TimerEvent;

stop();

var isReady:Boolean=new Boolean();

isReady = true;

var timerWalkLeft:Timer = new Timer(100);

function walkLeft(e:TimerEvent)
{
stickMan.x ++;
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyIsDown);

function keyIsDown(event:KeyboardEvent)
{

if (isReady==false)
{
    return;
}
else
{
    var key:uint = event.keyCode;
    switch (key)
    {
        case Keyboard.LEFT :
            stickMan.gotoAndStop("left");
            walkLeft();
            break;
        case Keyboard.RIGHT :
            stickMan.gotoAndStop("right");
            break;
        case Keyboard.UP :
            stickMan.gotoAndStop("jump")
            break;
        case Keyboard.DOWN :
            stickMan.gotoAndStop("crouch");
            break;
        }
    }
}
4

2 に答える 2

0

これが私のやり方です:

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.utils.Timer;
import flash.events.TimerEvent;

stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyIsDown);
var isReady:Boolean = true;// learn shortcuts like that, I don't know your useless teacher but "= new Boolean();" is the same thing as "= false;" or even simpler ";" (false being the default value for boolean type)

var timerWalk:Timer = new Timer(100);
timerWalk.addEventListener(TimerEvent.TIMER, movementLoop);
timerWalk.start();

function movementLoop(e:TimerEvent = null)
{
    var mc:* = stickMan;
    if(dir == "left")
       mc.x--;
    else if(dir == "right")
       mc.x++;
}


function keyIsDown(event:KeyboardEvent)
{
    if(!isReady)// literally "if not isReady"
       return;

    var key:uint = event.keyCode;
    switch (key)
    {
        case Keyboard.LEFT :
            stickMan.gotoAndStop("left");
            dir = "left";
            break;
        case Keyboard.RIGHT :
            stickMan.gotoAndStop("right");
            dir = "right";
            break;
    }
}
于 2013-11-13T22:58:35.667 に答える
0

タイマーを扱う代わりに、いくつかのアニメーション ライブラリを使用してください。より簡単です。こちらをご覧ください: http://www.greensock.com/tweenlite/

于 2013-11-13T21:03:05.193 に答える