拖动,缓动,加投影效果

在此谢谢我师兄,昨晚的相助,呵呵~~  (webstudio 里的一个特效制作),  有兴趣的,可以一起把它做得更好~哈哈... 占用一下地方上传文件,也分享一下,呵呵~  转载请注明~

import flash.filters.DropShadowFilter;
var filterropShadowFilter = new DropShadowFilter(10, 45, 0x666666, .6, 18, 18, 1, 3, false, false, false);
var filterArray:Array = new Array();
filterArray.push(filter);
var loop:Number;
var grav:Number;
function move() {
this._x += grav*(_root._xmouse-this._x)/loop;
this._y += grav*(_root._ymouse-this._y)/loop;
if (this._x+15 == _root._xmouse+15 || this._y+15 == _root._ymouse+15) {
  //drag = false
  group_mc.filters = null;
} else {
  this.filters = filterArray;
}
//trace(grav)
//trace(loop)
}
var drag:Boolean = false;
group_mc.onPress = function() {
drag = true;
grav = .6;
loop = 1;
};
group_mc.onMouseMove = function() {
if (drag) {
  grav = .1;
  //loop = 10;
  move.call(this);
}
};
group_mc.onRelease = group_mc.onReleaseOutside=function () {
drag = false;
//delete onEnterFrame;
};
group_mc.onEnterFrame = function() {
if (drag) {
  move.call(this);
} else {
  group_mc.filters = null;
}
};

半夜又完善了一下效果,再加一个动态投影下去,效果就完全出来了~ 可以参考这里的教程: /tutorial/show.php?id=65

filter.blurY=filter.blurX = Math.abs((this._x-_root._xmouse)/3);
                
filter.distance=(this._x-_root._xmouse)/5;
                
this.filters = filterArray;

用3.0写了一遍,3.0里没有 events as onReleaseOutside, onDragOut, onDragOver and so on.所以得自己写events类,呵呵~~下次研究一下,再一起讨论共享.

/**
* ...
* @author lby
* @version 0.1
*/

package lbynet{

        import flash.display.Sprite;
        import flash.display.InteractiveObject;
        import flash.events.MouseEvent;
        import flash.events.Event;

        import flash.filters.DropShadowFilter;

        public class Drop {

                private var loop:int;
                private var grav:Number;
                private var can:Boolean = false;

                private var target:InteractiveObject;
                private var stage:Sprite;

                private var blurX:Number;
                private var blurY:Number;

                public function Drop(target:InteractiveObject,stage:Sprite) {

                        this.target = target;
                        this.stage = stage;

                        target.addEventListener(MouseEvent.MOUSE_DOWN,downHander);
                        target.addEventListener(MouseEvent.MOUSE_UP,upHander);
                        target.addEventListener(MouseEvent.MOUSE_MOVE,MoveHander);
                        //target.addEventListener(MouseEvent.MOUSE_OUT,OutHander);
                        target.addEventListener(Event.ENTER_FRAME,EnterFrameHander);
                }
                private function downHander(event:MouseEvent):void {

                        can = true;
                        grav = .6;
                        loop = 1;

                        trace("down");
                }
                private function upHander(event:MouseEvent):void {

                        can = false;
                        trace("UP");
                }
                private function MoveHander(event:MouseEvent):void {
                        if (can) {
                                grav = .1;

                                move();
                        }
                }
                private function OutHander(event:MouseEvent):void {

                        can = false;

                }
                private function EnterFrameHander(event:Event):void {
                        if (can) {
                                move();
                        } else {
                                target.filters = null;
                        }
                }
                private function move():void {
                        trace("move");

                        target.x += grav*(stage.mouseX - target.x)/loop;
                        target.y += grav*(stage.mouseY - target.y)/loop;

                        var filter:DropShadowFilter = new DropShadowFilter(10,45,0x666666,.6,blurX,blurY,1,3,false,false,false);
                        filter.blurX = filter.blurY = Math.abs((target.x-stage.mouseX)/3);
                        filter.distance = (target.x - stage.mouseX)/5;
                        target.filters = [filter];

                }
        }
}
进入论坛和作者讨论学习

时间: 2024-09-10 12:21:58

拖动,缓动,加投影效果的相关文章

Flash基础理论课 第八章 缓动与弹性运动Ⅱ

返回"Flash基础理论课 - 目录" 弹性运动 一直以来,我都认为弹性运动将是ActionScript 动画中最强大和最有用的物理学概念.几乎所有的物体都可以使用弹性运动.下面就来看看什么是弹性运动以及在Flash 编程中的应用. 如同本章开始时所提到的,弹性的加速度与物体到目标点的距离成正比例.想象一下现实中弹簧的性质.把一个小球拴在橡皮圈一头,再将另一头系在一个固定的地方.当小球悬在半空时,在没有施加外力的情况下,小球就处在目标点的位置上.再将小球微微拉动,松手后橡皮圈会对其施加

Flash基础理论课 第八章 缓动与弹性运动Ⅰ

返回"Flash基础理论课 - 目录" 很难相信我们居然用了七章才把基础的内容介绍完,现在进入第八章,这里是高级内容的起点.从这里开始内容也开始变得越来越有趣了,前面的章节都是些常用的概念与技术.从今天开始,每章只着重介绍一两种特殊的运动. 本章将介绍缓动运动(成比例速度)与弹性运动(成比例加速度),不用担心它们只是两个名词术语,这章可以快速地略读.我会给出很多例子程序,可以使大家充分了解这项技术的强大. 成比例运动 缓动(ease)与弹性(spring)联系紧密.这两种方法都是将对象

Flash/Flex学习笔记(38):缓动动画

缓动 与 匀变速 看上去很类似,但其实有区别: 匀变速的公式为 V = V0 + at --速度v与时间t是线性(正比)关系,而且这种运动不需要确定目标点,速度可以按照这种规律一直变下去 而缓动指的是物体越接近目标时速度越慢,速度跟距离成反比关系,用公式描述为 V = k S  (0<k<1),这种运动需要先确定一个目标点,比如车辆定点停车:先指定一个位置,然后汽车从远处开过来,快到停车点时,逐渐慢下来,直到准确停在指定位置. 先看个演示: 代码: package { import flash

WPF界面设计技巧(7)—模拟电梯升降的缓动动画

原文:WPF界面设计技巧(7)-模拟电梯升降的缓动动画     如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置.目标位置,所产生的动画仍会非常生硬,这种动画忽略了移动开始时的加速过程与移动结束时的减速过程.   WPF在关键帧动画中提供了样条内插(Spline)型的关键帧,用以控制变化的速率曲线,但这东西实在有些复杂,且不够形象化,我研究很久也没明白如何实现"缓入--缓出"的效果,随后我从一本经典牛X却鲜有人知的过时的Flash

Flash CS4文字颜色缓动特效

核心提示:Flash CS4文字颜色缓动特效教程. 代码详解: [SWF(backgroundColor=0x000000,width=550,height=400)]//设置场景背景色.大小 var r:uint=0,g:uint=0,b:uint=0;//声明无符号整数型变量r.g.b,初始值都是0 var color:uint,targetR:uint,targetG:uint,targetB:uint;//声明无符号整数型变量color.targetR.targetG.targetB v

flash缓动效果

今天在做一个简单的flash动画时,发现了flash的一个比较好的特性.都怪自己很久没接触flash了,新的flash出了这么好的特性我竟然不知道. 一直以来希望flash能像3dMax一样编辑动画曲线,而不是简单的补间,没想到flash竟然实现了这个功能. 先看看面板吧,用过3dMax的朋友应该很熟悉吧? 这就是缓冲开始的地方 像不像3dmax的动画控制面板啊,注意选项--颜色?滤镜? 和photoshop的曲线差不多,alt删除一个节点,节点的调节和用钢笔差不多. 以前做缓动时都是通过act

Flash制作一个不错的缓动导航实例

导航   今天整理电脑看到这个效果,再重新练习了一遍. 先看效果: 新建一个flash名字随便了,大小588*350  : 1,把你要放的图片导到库里面 .2,新建一个mc名字为mc1, 把刚才的图片拖进来,上对齐,左对齐 .3,新建一个mc名字为color 用矩形工具拖个色条宽20 高350,然后再回到mc1新建一层,把color拖进来也是左对齐,上对齐 .4,新建一层在mc1上写上要显示的文字 .5,再在mc1上新建一层,加入一个20*350的按钮,实例名为btn .6,重复以上步骤把建5个

Flash AS中很实用的缓动函数

函数 //-------缓动函数----------- function MoveTo(mcName, mcX, mcY, a) {  mcName.onEnterFrame = function() {   mcName._x += (mcX-mcName._x)/a;   mcName._y += (mcY-mcName._y)/a;   if (mcX == mcName._x && mcY == mcName._y) {    delete (mcName.onEnterFrame

WPF与缓动(四) 弧形缓动

弧形缓动就是其缓动曲线为一段圆弧, 如何我们假设圆弧上的点的斜率为速度的话,那么可以想像其速度的变化多么具有戏剧性, 其加速或减速来得很突然, 与5次缓动差不多. 参考以下代码: //圆形缓动 protected override double GetCurrentValueCore(double defaultOriginValue, double defaultDestinationValue, AnimationClock animationClock) { double from = (