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

An interesting scroll background------ActionScript3.0的更多相关文章

  1. 【ActionScript】ActionScript3.0对舞台组件的增删改查

    以一个样例来说明ActionScript3.0对舞台组件的增删改查 例如以下图: 在Flash执行的时候,通过脚本.斜向下生成text0-text9十个文本节点. 提供两个功能. 1.在右上角,用户输 ...

  2. 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!

            经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...

  3. ActionScript3.0(AS3)中的泛型数组Vector

    Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处. 原作者:菩提树下的杨过出处:ht ...

  4. [ActionScript3.0] 使用FileReferenceList处理多个文件上载

    package { import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; imp ...

  5. [ActionScript3.0] AS3利用ExternalInterface与js通信

    AS3代码,可做文档类; package { import flash.display.Sprite; import flash.events.*; import flash.external.Ext ...

  6. [ActionScript3.0] 运用JPEGEncoderOptions或者PNGEncoderOptions保存图片到本地

    在flash player 11.3和air3.3之前,我们可以借助第三方类(JPEGEncoder)这些,很容易处理.现在,有了encode和JPEGEncoderOptions这些,处理位图数据就 ...

  7. [ActionScript3.0] 逻辑或"||=" ,等于"=="和全等于"==="

    function a(o:Object):void { o||=new Object();  trace(o); } //此上下两个方法作用是一样的 function b(o:Object):void ...

  8. [ActionScript3.0] 传递任意数量的参数

    function setAgument(a:int,...rest):void{ for(var i:int=0;i<rest.length;i++){ trace(rest[i]); }}se ...

  9. [ActionScript3.0] 深表复制

    function clone(obj:Object):Object{ var byteArray:ByteArray = new ByteArray(); byteArray.writeObject( ...

随机推荐

  1. 树屋阶梯(codevs 1741)

    题目描述 Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在 ...

  2. sql server使用杂记(二)

    存储过程CREATE PROCEDURE [dbo].[getprofitandloss]@agentNo varchar(10),@o0 varchar(30),@source varchar(30 ...

  3. 利用DTrace实时检测MySQl

    与我们大多数人想象的不同,DTrace用于MySQL时不需对MySQL做任何更改.DTrace最强大的“提供器”(provider,是一组可观测的探测器)是FBT(Functional Boundar ...

  4. [转]WCF的几种寄宿方式

    转自:WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为 ...

  5. BNU 13259.Story of Tomisu Ghost 分解质因子

    Story of Tomisu Ghost It is now 2150 AD and problem-setters are having a horrified time as the ghost ...

  6. SQL 导出表数据存储过程

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- ...

  7. Find Minimum in Rotated Sorted Array 典型二分查找

    https://oj.leetcode.com/problems/find-minimum-in-rotated-sorted-array/ Suppose a sorted array is rot ...

  8. 关于sublime代码格式化

    就我接触到的,html,css,js,json,php语言来介绍. html,css,json,js这些,我感觉pretty是比较好用的,ctrl+shift+h快捷键,给人不一样的感受,不过这个插件 ...

  9. pdf 转成 一张图片

    1.maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfb ...

  10. doctype声明 过渡transitional 严格strict 框架frameset

    DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本. 其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义 ...