我的编程空间,编程开发者的网络收藏夹
学习永远不晚

AS3关于飘金币的特效

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

AS3关于飘金币的特效

package com.upupgame.utils
{
    import com.greensock.*;
    import com.greensock.easing.Quint;
    import com.upupgame.baccarat.audio.SoundBiz;
    import com.upupgame.baccarat.player2.assets.MainAssets;
                                                                                                                                                       
    import flash.display.MovieClip;
    import flash.geom.Matrix;
    import flash.geom.Point;
                                                                                                                                                       
    import hs.framework.utils.delay;
                                                                                                                                                       
    
    public class CoinsEmitter
    {
//      private static var X:Number;
//      private static var Y:Number;
        private static var startLocation : Point;
        private static var nodeLocation : Point;
        private static var endLocation : Point;
        private static var num : Number;
        private static var count : uint = 0;
                                                                                                                                                           
        public function CoinsEmitter()
        {
                                                                                                                                                           
        }
                                                                                                                                                           
//      public static function StartShoot(num:Number,start : Point,node:Point,end:Point = null):void{
        
        public static function StartShoot(num:Number,start : Point,end:Point = null,postion : uint = 2):void{
            count = 0;
            CoinsEmitter.startLocation = start;
//          CoinsEmitter.nodeLocation = node;
            if(end != null ){
                CoinsEmitter.endLocation = end;
            }else{
                CoinsEmitter.endLocation = new Point(50,20);
            }
            var $node : Point = new Point();
            var $maxX : int = 0;
            var $maxY : int = 0;
            var $minX : int = 0;
            var $minY : int = 0;
            if(start.x < CoinsEmitter.endLocation.x ){
                $maxX = CoinsEmitter.endLocation.x;
                $minX = start.x;
            }else{
                $minX = CoinsEmitter.endLocation.x;
                $maxX = start.x;
            }
            if(start.y < CoinsEmitter.endLocation.y){
                $maxY = CoinsEmitter.endLocation.y;
                $minY = start.y;
            }else{
                $minY = CoinsEmitter.endLocation.y;
                $maxY = start.y;
            }
            switch(postion){
                case 0:
                    $node.x = $maxX;
                    $node.y = $maxY - ($maxX - $minX)/4;
                    break;
                case 1:
                    $node.x = $minX;
                    $node.y = ($maxX - $minX)/4 + $minY;
                    break;
                case 2:
                    $node.x = $minX;
//                  $node.y = (5*$maxY + $minY)/4;
                    $node.y = (15*$maxY + 16*$minY)/16;
                    break;
                case 3:
                    $node.x = $maxX;
//                  $node.y = (3*$minY - $maxY)/4;
                    $node.y = ($maxY + 15*$minY)/16;
                    break;
                default:
                    $node.x = $minX;
                    $node.y = (15*$maxY + 16*$minY)/16;
                    break;
            }
            CoinsEmitter.nodeLocation = $node;
            CoinsEmitter.num = num;
//          var len:int = num / 500;
            if (num < 20){
                num = 20;
            }else if (num > 50){
                num = 50;
            }
            GameMain.soundManager.play(SoundBiz.FLY_CHIP);
            for (var i:int = 0; i < num; i+=1){
                delay((_getRandom(0, 1) * 1000), delayShoot);
            }
            function delayShoot():void
            {
                var mDot:MovieClip;
                if(_getRandom(0,num) <= num/7){
                    mDot = getFlash();
                }else{
                    mDot = _getNewDot();
                }
                GameMain.instance.layers.chat.addChild(mDot);
                _tweenDot(mDot, 0);
            }
        }
                                                                                                                                                           
        private static function _tweenDot(dot:MovieClip, dt:Number):void{
            var $note : Point = new Point();
            $note.x = CoinsEmitter.nodeLocation.x + _getRandom(-CoinsEmitter.num*2.5,CoinsEmitter.num*2.5);
            $note.y = CoinsEmitter.nodeLocation.y + _getRandom(-CoinsEmitter.num*2.5,CoinsEmitter.num*2.5);
            TweenLite.to(dot, 2, {bezier:[{x:$note.x, y:$note.y}, {x:CoinsEmitter.endLocation.x, y:CoinsEmitter.endLocation.y}], scaleX : dot.scaleX*0.8,
                scaleY : dot.scaleY*0.8
                ,orientToBezier:true,
                ease:Quint.easeInOut,delay: dt,onComplete: firstTweenComplete, onCompleteParams: [dot]});
            function firstTweenComplete(dot:MovieClip):void{
                if (dot)
                {
                    if (dot.parent)
                    {
                        dot.parent.removeChild(dot);
                    }
                    dot = null;
                }
                if( ++ count >= num){
                    if(startLocation != null)startLocation = null;
                    if(nodeLocation != null)nodeLocation = null;
                    if(endLocation != null )endLocation = null;
                    count = 0;
                }
            }
        }
                                                                                                                                                           
        private static function _getNewDot():MovieClip{
            var num:int = int(_getRandom(1,4));
            var mCoin:MovieClip = new (com.upupgame.baccarat.player2.assets.MainAssets["Coins" + num])() as MovieClip;
            var $scale : Number = _getRandom(0.2,0.5);
            var $myMatrix : Matrix = new Matrix($scale,_getRandom(-Math.PI/9,Math.PI/9),_getRandom(-Math.PI/10,Math.PI/10),$scale,
                CoinsEmitter.startLocation.x + _getRandom(-50,50)
                ,CoinsEmitter.startLocation.y + _getRandom(-50,50)
            );
            mCoin.transform.matrix = $myMatrix;
            mCoin.alpha = _getRandom(5,10)/10;
            mCoin.gotoAndPlay(_getRandom(3,9));
            return mCoin;
        }
        private static function getFlash() : MovieClip{
            var $myFlash : MovieClip = new (com.upupgame.baccarat.player2.assets.MainAssets["CoinFlash"]) as MovieClip;
            var $scale : Number = _getRandom(0.3,0.6);
            var $myMatrix : Matrix = new Matrix($scale,_getRandom(-Math.PI/8,Math.PI/8),_getRandom(-Math.PI/8,Math.PI/8),$scale,
                CoinsEmitter.startLocation.x + _getRandom(-50,50)
                ,CoinsEmitter.startLocation.y + _getRandom(-50,50)
            );
            $myFlash.transform.matrix = $myMatrix;
            $myFlash.alpha = _getRandom(5,10)/10;
            $myFlash.gotoAndPlay(_getRandom(1,50));
            return $myFlash;
        }
                                                                                                                                                           
        private static function _getRandom(min:Number, max:Number):Number{
            return min + (Math.random() * (max - min));
        }
                                                                                                                                                       
    }
}

做一个解释:

①:此瓢金币的效果使用的是贝塞尔曲线.

    ②:为了得到贝塞尔曲线的效果,至少需要3个点(你懂得),中间的曲线点是由此类(上)来自动计算的.并且,每个中间点都做了一个随机的偏移.

    ③:此类(上)对金币由"_getNewDot()"获得,对星星由"getFlash()"获得,都做了矩阵的变形,类外其透明度也做了一个渐变的处理(越来越透明)

    ④:对于瓢金币(包括星星)的起始位置也做了偏移

    ⑤:加了一个瓢金币的音乐,当然读者要测试的话,还需知己写一个音乐管理器.当然,也可以去掉音乐.

    ⑥:效果很不错哦.j_0020.gif




免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

AS3关于飘金币的特效

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

AS3关于飘金币的特效

package com.upupgame.utils{ import com.greensock.*; import com.greensock.easing.Quint; import com.upupgame.bacc
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录