package
{
/*
*@ ClassName : package::backGround
*@ INTRO : the continuously scroll background
*@ Author : feiruo
*@ LanguageVersion : 3.0
*@ SDKVersion : Flash Player 9.0
*@ Date : 2015.09.09
*/ import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent; dynamic public class backGround extends MovieClip //dynamic表示可以向该类进行动态的添加属性
{
public var myAcc:Number=20; //缓动系数
public var mouseAcc:Number=10; //鼠标缓动系数
public var autoPlay_speed:Number=3; //自动滚动速度初始值
public var mouseOverPlay_speed:Number=-3; //鼠标经过时背景播放的速度,正数向右,负数向左
private var autoPlay:Boolean=false;
private var mouseF:Number=0;
private var mouseover:Boolean=false;
private var isDrag:Boolean;
private var speed:Number=0;
private var startX2:Number=0;
private var startX:Number=0;
private var memory_x:Number=0;
private var _width:Number; public function backGround()
{
addFrameScript(0, frame1); //在影片剪辑backGround元件中时间轴第一帧添加代码
this._width=this.width/3;
return; }
public function frame1():void
{
isDrag=false;
speed=5; //设定初始滚动速度
addEventListener(Event.ENTER_FRAME, update);//添加帧事件
this.addEventListener(MouseEvent.MOUSE_OVER,function(e:MouseEvent):void{mouseover=true;});
this.addEventListener(MouseEvent.MOUSE_OUT,function(e:MouseEvent):void{mouseover=false;});
if (autoPlay == false) //如果没有自动滚动,添加鼠标事件
{
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseHandler);
}
return;
}//end function
private function mouseUpdate()
{
startX2 = startX2 + (mouseX - startX - startX2) / 3;
//计算鼠标位置差值
bg_mc.x = memory_x + startX2;
//计算当前背景图应该所在的新位置
if (bg_mc.x > 0)
{
bg_mc.x = bg_mc.x - this._width;
//返回到第一张图或第二张图之间,所显示画面与当前的位置其实一样
}
if (bg_mc.x <= -this._width)
{
bg_mc.x = bg_mc.x + this._width;
//返回到第二张图或第三张图之间
}
return;
}//end function private function mouseHandler(e:MouseEvent):void
{
if (e.type == MouseEvent.MOUSE_DOWN)
{
memory_x = bg_mc.x; //临时存储当前背景图的x坐标
startX = mouseX; //鼠标按下,临时存储鼠标x坐标
startX2 = mouseX - startX; //按下移动后,计算移动距离
mouseF = mouseX; //记录当前鼠标位置
isDrag = true; //拖动属性设置为true,可以拖动
mouseUpdate();
}
else if (e.type == MouseEvent.MOUSE_UP)
{
if (isDrag)
{
speed = (-(mouseF - mouseX)) / mouseAcc; //计算鼠标弹起是背景图应该滚动的速度
isDrag = false; //拖动为false
}
}
return; }//end function private function update(e:Event):void
{
mouseover ? bg_mc.x+=mouseOverPlay_speed : bg_mc.x+=0; if (autoPlay == false) //如果背景图没有自己滚动,并且速度不为0,计算当前位置
{
if (Math.abs(speed) >= 0)
{
bg_mc.x = bg_mc.x + speed;
}
}
else
{
bg_mc.x = bg_mc.x + autoPlay_speed; //否则自动滚动
}
if (bg_mc.x > 0)
{
bg_mc.x = -this._width + speed;
}
if (bg_mc.x <= -this._width)
{
bg_mc.x = speed;
} mouseF = mouseF + (mouseX - mouseF) / mouseAcc;
//计算非拖动与拖动情况下的速度 if (!isDrag)
{
speed = speed + (-speed) / myAcc;
}
else
{
speed = speed + (-speed) / myAcc;
mouseUpdate();
}
if (Math.abs(speed) < 0.5)
//如果速度绝对值小于0.5,可以默认为0
{
speed = 0;
}
return;
}
} }

the background download link

最新文章

  1. Java设计模式 -- 基本原则
  2. springboot 使用c3p0数据库连接池的方法
  3. HDU 5802 Windows 10
  4. JAVA 十六进制与字符串的转换
  5. Scala 深入浅出实战经典 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析
  6. 转载:有关SQL server connection Keep Alive 的FAQ(2)
  7. mysql高可用之PXC(Percona XtraDB Cluster)
  8. vmware在非正常关机后无法启动虚拟机
  9. Hadoop概述
  10. hdu 5430 Reflect (数学推导题)
  11. winform正在使用dsoframer迅速&amp;quot;Unable to display the inactive document.Click here to reacitive the document.&amp;quot;
  12. Centos6.6安装Nginx
  13. ASP.NET Core:CMD命令行+记事本 创建Console程序和Web Application
  14. 探索C++多态和实现机理
  15. Memcached在Linux环境下的使用详解
  16. 无效类字符串:ProgID: Excel.Application
  17. 利用java反射机制实现读取excel表格中的数据
  18. JavaScript 版本的 RSA加密库文件
  19. IntellIJ IDEA 启动 参数 配置
  20. centos7 添加第三方源

热门文章

  1. 【Codeforces 1114A】Got Any Grapes?
  2. App的登陆注册接口安全设计
  3. nyoj_38_布线问题_201403121753
  4. POJ 3252 Round Numbers 组合数学
  5. Android:让Link始终保持在程序的WebView中跳转
  6. MVC.Net 5:允许保存和输出Html内容
  7. Androd自己定义控件(三)飞翔的小火箭
  8. ajax——dom基础
  9. 605B. Lazy Student(codeforces Round 335)
  10. Windowns 无法启动 Office Software Protection Platform 服务,系统找不到指定的文件