需要将代码从AS2转换为AS3

时间:2013-07-19 12:05:21

标签: flash flash-cs5

stop();
speed = 10;
initial_width = 75;
target_width = 450;
sp = rect1._x;
this.createEmptyMovieClip("emptymc", 0);
emptymc.onEnterFrame = function() { 
for (i=1; i<=6; i++) {
    if (_root.hit.hitTest(_root._xmouse, _root._ymouse, true)) {
        if (_root["rect"+i].hitTest(_root._xmouse, _root._ymouse, true)) {
            new_x = (_root.sp-(75*(i-1)))-rect1._x;
            rect1._x += new_x/speed;
            n_width = target_width-_root["rect"+i]._width;
            _root["rect"+i]._width += n_width/speed;
        } else {
            n_width2 = initial_width-_root["rect"+i]._width;
            _root["rect"+i]._width += n_width2/speed;
        }
    } else {
        new_x = _root.sp-rect1._x;
        rect1._x += new_x/(speed+50);
        n_width2 = initial_width-_root["rect"+i]._width;
        _root["rect"+i]._width += n_width2/(speed-1);
    }
    _root["rect"+(i+1)]._x = _root["rect"+i]._x+_root["rect"+i]._width;
    _root["movie"+i]._x = _root["rect"+i]._x-1;
    }
};

谢谢大家,我明白了!我尝试翻译成AS3,似乎一切都很好。还有一些小错误,但我会尽力找到并抱歉给您带来不便。 :(

再次,谢谢大家。 :)

1 个答案:

答案 0 :(得分:1)

我的代码不完整,但可以帮助您。 你需要在名为“rects”的数组中放入名为“rect”的影片剪辑,在名为movies的数组中放入名为movie的影片剪辑。

前缀为“_root”的变量和影片剪辑必须声明为全局。

stop();
speed = 10;
initial_width = 75;
target_width = 450;
sp = rect1._x;

emptymc = new MovieClip();
emptymc.addEventListener (Event.ENTER_FRAME , onEnterFrame);

function onEnterFrame (e:Event):void{

    for (var i:int=1; i<=6; i++) {
        if (hit.hitTestPoint(stage.mouseX, stage.mouseY,true)) {

            if (rect.hitTestPoint(stage.mouseX, stage.mouseY, true)) {
                new_x = (sp-(75*(i-1)))-rect1._x;
                rect1.x += new_x/speed;
                n_width = target_width-rects[i].width;
                rects[i]._width += n_width/speed;
            } else {
                n_width2 = initial_width-rects[i].width;
                rects[i].width += n_width2/speed;
            }

        } else {

            new_x =sp-rect1.x;
            rect1._x += new_x/(speed+50);
            n_width2 = initial_width-rects[i].width;
            rects[i].width += n_width2/(speed-1);
        }

        rects[(i+1)].x = rects[i].x+rects[i].width;
        movies[i].x = rects[i].x-1;
    }

}