0

最近フラッシュプログラミングを始めましたが、動きが表示されない動き機能に問題があります。

私が使用するコード:

function cardmove(card){
    xDiff=(playerHand+space+card.width)-card._x;
    yDiff=(Stage.height/2+space)-card._y;
        speedx =xDiff/10;
        speedy =yDiff/10; 
    for (frame=0;frame<10;frame++){
         card._x+=speedx;
         card._y+=speedy;}
    playerHand = card._x ;
}

カードは所定の位置にあり、開始時に正しく配置されている必要があり、動きは表示されません。

4

1 に答える 1

1

Flash は、ループ中にレイアウトを更新しません。何かを動かしたい場合は、2 つのステップの間でフラッシュするために手を戻さなければなりません。

これを行う主な方法は 2 つあります。 setInterval です。

// You need to declare this variables to access them in the function "applyMovement"
var _nInterval:Number;
var _nSteps:Number;

// Yout function
function cardmove(card){
    xDiff=(playerHand+space+card.width)-card._x;
    yDiff=(Stage.height/2+space)-card._y;
    speedx =xDiff/10;
    speedy = yDiff / 10; 

    // Set the steps to 10
    _nSteps = 10;
    // Before start the setInterval, you have to stop a previous one
    clearInterval(_nInterval);
    // You call the function each 41 ms (about 24 fps) with the parameters
    setInterval(this, "applyMovement", 41, card, speedx, speedy);
}
// This function apply the new coodinates
function applyMovement(mc:MovieClip, nX:Number, nY:Number) {
    if (_nSteps >= 0) {
        mc._x += nX;
        mc._y += nY;
    }else {
        clearInterval(_nInterval);
    }
    _nSteps --;
}

または onEnterFrame :

// You need to declare this variables to access them in the function "applyMovement"
var _nSteps:Number;
var _mc:MovieClip;
var _nX:Number;
var _nY:Number;

// Yout function
function cardmove(card){
    xDiff=(playerHand+space+card.width)-card._x;
    yDiff=(Stage.height/2+space)-card._y;
    _nX =xDiff/10;
    _nY = yDiff / 10; 

    _mc = card;

    // Set the steps to 10
    _nSteps = 10;
    // You have to use the Delegate function to access to the "good" this in the function
    this.onEnterFrame = mx.utils.Delagate.create(this,applyMovement);
}
// This function apply the new coodinates
function applyMovement() {
    if (_nSteps >= 0) {
        _mc._x += nX;
        _mc._y += nY;
    }else {
        delete this.onEnterFrame;
    }
    _nSteps --;
}
于 2012-07-03T16:06:19.733 に答える