これは大きな疑問に思うかもしれません。私はコーディングの初心者ですが、誰かがこのコードの何が間違っているのか教えてください。 (かなり短いです。) このコードの目的は、あらかじめ定義されたオブジェクトヒーローを加速して移動させ、時間の経過と共にゆっくりと減速させることです。二つの文がありますコードの問題
var vTimer:Timer; new Timer(10)
:
import flash.utils.Timer;
import flash.events.KeyboardEvent;
var vMove:Number = 0
var vMoveMaxL = -15
var vMoveMaxR = 15
var vLeft:Boolean = false
var vRight:Boolean = false
var vAccel:Number = 0.5
var vDeccel:Number = 1
var vDeccelFactor:Number = 0.1
var vTimer:Timer; new Timer(10)
vTimer.addEventListener(TimerEvent.TIMER, MovementTimer);
vTimer.start();
function MovementTimer(event:TimerEvent):void
{
//Acceleration
{
//Initiation
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, Acceleration);
function Acceleration(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
{
if (vMove > vMoveMaxL)
{
vMove = vMoveMaxL;
vLeft = true;
}
else
{
vMove -= vAccel;
vLeft = true;
}
}
case Keyboard.RIGHT:
{
if (vMove < vMoveMaxR)
{
vMove = vMoveMaxR;
vRight = true;
}
else
{
vMove += vMoveMaxR;
vRight = true;
}
}
}
}
}
//Blank
{
stage.addEventListener(KeyboardEvent.KEY_UP, Conditioner);
function Conditioner(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
{
vLeft = false;
}
case Keyboard.RIGHT:
{
vRight = false;
}
}
}
}
}
//Decceleration
{
if (vMove == 0)
{
vMove = 0;
}
else
{
if (vLeft==false && vRight==false)
{
vDeccel -= vDeccelFactor;
{
vMove *= vDeccel;
}
}
else
{
vMove = vMove;
}
}
}
//Blank
{
hero.x += vMove;
}
//Blank
}
ありがとうございます - 動作が可能ですが、何らかの理由でvAccelを0.000000000000000001などに設定しても、オブジェクトが非常に高速に移動します。 – Tom
タイマーの更新間隔を増やすことができます。現在のもの(10msごとに更新)が速すぎる可能性があります。 – erkmene