1,新建一个Flash文件,在库中新建一个MC,把事先准备好的图片序列导入到该MC中,一张图片占一帧;
2,把这个MC拖放到场景中,可以先发布预览一下,看看图片序列播放起来是否流畅;
3,新建一个ActionScript文件,文件名保存为DragCtrlPlay.as(文件名必须跟里面的类名相同),里面的代码如下:
- class DragCtrlPlay extends MovieClip {
- //被拖拽MC的总帧数:
- private var total_frames:Number;
- //被拖拽MC的当前帧数:
- private var current_frame:Number;
- //鼠标点击图片时的x坐标:
- var start_x:Number;
- //拖拽控制灵敏度:
- var drag_dx:Number;
- //响应拖拽的开关:
- var is_ctrl:Boolean;
- //构造函数:
- function DragCtrlPlay() {
- init();
- }
- //各项初始化:
- private function init() {
- total_frames = this._totalframes;
- current_frame = 1;
- drag_dx = 10;
- is_ctrl = false;
- this.gotoAndStop(1);
- this.onRollOver = mcOnRollOver;
- this.onPress = mcOnPress;
- this.onRelease = this.onReleaseOutside=mcOnRelease;
- this.onMouseMove = mcOnMouseMove;
- }
- //鼠标onRollOver事件:
- private function mcOnRollOver() {
- //不显示鼠标手势:
- //this.useHandCursor = false;
- }
- //鼠标onPress事件:
- private function mcOnPress() {
- //记录鼠标点击图片时的x坐标:
- start_x = _xmouse;
- //打开响应开关:
- is_ctrl = true;
- }
- //鼠标onRelease事件:
- private function mcOnRelease() {
- //关闭响应开关:
- is_ctrl = false;
- //更新当前帧数:
- current_frame = this._currentframe;
- }
- //鼠标onMouseMove事件:
- private function mcOnMouseMove() {
- if (is_ctrl) {
- //实时获取鼠标当前x坐标:
- var current_x:Number = _xmouse;
- //播放的帧数差:
- var frame_d:Number = Math.ceil((current_x-start_x)/drag_dx);
- //影片播放到当前帧数差的位置:
- mcGotoAndStop(frame_d);
- //更新画面显示,使拖拽效果不受影片帧速影响:
- updateAfterEvent();
- }
- }
- //影片播放到当前帧数差的位置:
- private function mcGotoAndStop(__d) {
- //影片最终播放并停止到的帧数:
- var frame_final:Number = current_frame+__d;
- //超出帧数范围会循环播放:
- while (frame_final>total_frames) {
- frame_final -= total_frames;
- }
- while (frame_final<1) {
- frame_final += total_frames;
- }
- this.gotoAndStop(frame_final);
- }
4,在库中右键单击这个MC,选择“链接...”(Linkage...);
5,在弹出的窗口中勾选“为ActionScript导出“(Exprot for ActionScript),在“类”(Class)那一栏中填入要绑定的类名:DragCtrlPlay;
6,把类文件DragCtrlPlay.as跟FLASH源文件在同一目录下,发布即可看到效果;
转载于:https://blog.51cto.com/cnming/902489