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. 【LeetCode Weekly Contest 26 Q3】Friend Circles

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...

  2. Industrial Nim

    http://codeforces.com/contest/15/problem/C 题意: 现有n个采石场,第i个采石场有mi堆石子 各堆分别有xi,xi+1……,xi+m-1颗石子 两名选手使用最 ...

  3. HDU 5442 Favorite Donut

    Favorite Donut Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  4. EasyUI 在textbox里面输入数据敲回车后查询和普通在textbox输入数据敲回车的区别

    EasyUI实现回车键触发事件 $('#id').textbox('textbox').keydown(function (e) { if (e.keyCode == 13) { alert('ent ...

  5. caffe源代码分析--softmax_layer.cpp

    caffe源代码分析--softmax_layer.cpp // Copyright 2013 Yangqing Jia // #include <algorithm> #include ...

  6. 【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”

    讲座时间: 美西时间6月5日18:30-20:00(周五) 北京时间6月6日09:30-11:00(周六a.m) 讲座安排: 免费在线直播讲座 报名网址: http://t.cn/R2XgMSH,或猛 ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. NS3网络仿真(2):first.py

    1    安装基本模块 11  安装Python 12  安装PTVS 13  加入对python-279的支持 2    在vs2013下编译NS3 3    编译NetAnim 4    在vs2 ...

  9. LeetCode 234 Palindrome Linked List(回文链表)(*)(?)

    翻译 给定一个单链表,确定它是否是回文的. 跟进: 你能够在O(n)时间和O(1)空间下完毕它吗? 原文 Given a singly linked list, determine if it is ...

  10. Linux C语言头文件搜索路径

    本文介绍在linux中头文件的搜索路径,也就是说你通过include指定的头文件,linux下的gcc编译器它是怎么找到它的呢.在此之前,先了解一个基本概念. 头文件是一种文本文件,使用文本编辑器将代 ...