主题:  帮忙看看这段代码!请高手详细解释一下。

yushilei

职务:普通成员
等级:1
金币:0.0
发贴:96
#12003/3/12 7:51:25
onClipEvent (load) {
    mouse = this._xmouse;
    mouseDrag = this._xmouse;
    dragging = false;
    movieWidth = this._width;
    movieCenter = 0;
    noOfFrames = this._totalFrames;
    currentFrame = this._currentFrame;
    gotoAndStop (1);
}
onClipEvent (enterFrame) {
    frameToGoto = currentFrame-Math.round(((mouseDrag-mouse)/10));
    if (hitTest(_root._xmouse, _root._ymouse, false)) {
        mouseDrag = this._xmouse;
        if (dragging) {
            if (frameToGoto>=1 && frameToGoto<=noOfFrames) {
                this.gotoAndStop(frameToGoto);
            }
            if (frameToGoto<1) {
                frameToGoto += noOfFrames;
                this.gotoAndStop(frameToGoto);
            }
            if (frameToGoto>noOfFrames) {
                frameToGoto -= noOfFrames;
                this.gotoAndStop(frameToGoto);
            }
        }
    }
}
onClipEvent (mouseDown) {
    mouse = this._xmouse;
    if (hitTest(_root._xmouse, _root._ymouse, false)) {
        dragging = true;
    }
}
onClipEvent (mouseUp) {
    dragging = false;
    currentFrame = this._currentFrame;
}
onClipEvent (keyDown) {
    if (Key.isDown(109)) {
        this._xscale--;
        this._yscale--;
    }
    if (Key.isDown(107)) {
        this._xscale++;
        this._yscale++;
    }
    // updateAfterEvent();
}



Mozier

职务:管理员
等级:5
金币:11.0
发贴:2994
#22003/3/12 8:46:40
转flashdev



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#32003/3/12 14:35:51
是一段鼠标键盘控制的效果,基本思路是这样的:把鼠标移动过程中两次取样点的水平距离换算成一段动画对应的帧值,如果该值落在有效范围内,就跳转到该帧上;否则跳转这样处理:如果小于1,则从尾部倒数个这值,大于总帧数,则从头部顺数。

鼠标按下时判断是否点中按钮,如果点中则将dragging置为真(表示正在拖放这个状态);鼠标松开则将dragging置为假(无需判断是否按下按钮),并记录当前帧。

键盘的处理就相对很简单了,不用多说了吧

p.s. 个人认为程序对帧的往复处理不够严谨,如果数值超出总帧数的两倍,则最后得到的帧也是非法的,跳转将不被执行。我认为是最好能在重新计算帧值前对总帧数求模以取得余数,根据余数再来计算目标帧。当然,这个错误也可以在第一次计算frameToGoto时设置合理的参数来防止出现太大或太小的结果

看得不深,还请各位斧正