AS3.0纯代码编写的两款loading效果

效果一

效果二

代码很简单,实现的原理一样,只不过矩形用到了Matrix类,对注册点进行了调整,效果可用于视频播放器缓冲时的loading效果,下面看代码吧!

使用Javascript格式贴出来(里面没有Actionscript)。

效果一源码:

package 
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.Shape;
    import flash.events.Event;

public class Main extends Sprite
    {
        private var nums:Number = 12;
        private var segAngle:Number;
        private var seg:Number;
        private var arr:Array = new Array  ;
        private var sprite:Sprite = new Sprite  ;
        private var j:Number = 1;
        public function Main():void
        {
            init();
        }
        private function init():void
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            seg = 1 / this.nums;
            segAngle = Math.PI * 2 / this.nums;
            addChild(sprite);
            sprite.x = this.stage.stageWidth / 2;
            sprite.y = this.stage.stageHeight / 2;
            for (var i:int = 0; i < this.nums; i++)
            {
                var shape:Shape = new Shape  ;
                shape.graphics.beginFill(0x000000);
                shape.graphics.drawCircle(0,0,10);
                shape.graphics.endFill();
                sprite.addChild(shape);

shape.alpha = seg * i;
                shape.x = 60 * Math.cos((i * segAngle));
                shape.y = 60 * Math.sin((i * segAngle));
                arr[i] = shape;

}
            stage.addEventListener(Event.ENTER_FRAME,alphaHalder);
        }
        private function alphaHalder(evt:Event):void
        {
            for (var i:int = 0; i < nums; i++)
            {
                var shape:Shape = arr[i] as Shape;
                shape.alpha = j;
                j -=  seg;
                if ((j == 0.08333333333333325))
                {
                    j = 1;
                }
            }

}
    }
}

效果二源码:

package 
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.geom.Matrix;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

public class Bar extends Sprite
    {
        private var nums:int = 12;
        private var m2:Matrix = new Matrix();
        private var m:Matrix =  new Matrix();
        private var Abar:Array = new Array();
        private var segAngle:Number;
        private var seg:Number;
        private var j:Number = 0;
        private var timer:Timer =  new Timer(50);
        public function Bar()
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            initBar();
        }

private function initBar():void
        {
            segAngle = 2 * Math.PI / this.nums;
            seg = 1 / this.nums;
            for (var i:int = 0; i < this.nums; i++)
            {
                var bar:Shape=new Shape();
                Abar[i] = bar;
                bar.graphics.beginFill(0xffffff);
                bar.graphics.drawRoundRect(0,0,10,3,4,4);
                bar.graphics.endFill();
                this.addChild(bar);
                //bar.alpha = seg * i;
                bar.x = bar.y = 100;
                m.identity();
                m.translate(7,-1);
                m.rotate(segAngle*i);
                m.translate(-7,1);
                m2.identity();
                m2.translate(100,100);
                m.concat(m2);
                bar.transform.matrix = m;
            }
            timer.addEventListener(TimerEvent.TIMER,alphaHalder);
            timer.start();
        }

private function alphaHalder(evt:TimerEvent):void
        {
            for (var i:int = 0; i < this.nums; i++)
            {
                var bar:Shape = Abar[i] as Shape;
                bar.alpha = j;
                if(j == 1.0833333333333333)
                {
                    j = 0;
                }
                j += seg;
            }
        }
    }
}

与你分享更多的东西...

AS3.0纯代码编写的两款loading效果的更多相关文章

  1. 纯代码编写qt登录界面(转)

    1. 新建Qt Widgets Application,项目名称为login1,在类信息页面保持类名和基类为MainWindow和QMainWindow不变,取消选择创建界面选项,如下图所示.     ...

  2. 纯代码编写的vc跳转SB

    今天遇到个问题,我整个项目都是纯代码,突然有个引用的VC用了storyboard,导航的跳转不知道如何操作,最后试了很多方法总算可以了 首先,找到要跳转的sb. UIStoryboard *story ...

  3. vue axios拦截器 + 自编写插件 实现全局 loading 效果;

    项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...

  4. 史上比较用心的纯代码实现 AutoLayout

    入职有两三个月了吧,都是使用 Objective-C 纯代码(虽然有时候偷偷参杂一些 Swift 开源库)来编写公司APP,写布局的时候几乎都是要么在初始化的时候用 initWithFrame,要么就 ...

  5. 如何优雅的代码编写 AutoLayout

    概述 使用 Objective-C 纯代码编写 AutoLayout,看 AutoLayout 的字面理解就是自动布局,听起来好像蛮屌的样子.说白了就是适配:适应.兼容各种不同的情况,包括不同版本的操 ...

  6. C# GDI绘制仪表盘(纯代码实现)

    纯代码实现GDI绘制仪表盘,效果在代码下面. public partial class HalfDashboardUc : UserControl { /// <summary> /// ...

  7. iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能

    storyboard是一个很强大的编写代码的辅助工具,可以帮助布局多个视图之间的联系,既直观又能减少代码量:但是,作为一个程序员,在不使用storyboard的情况下,纯代码编写是必须的技能. 下面就 ...

  8. 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

    Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...

  9. 纯javascript代码编写计算器程序

    今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前 ...

随机推荐

  1. CSS原生布局方式

    前言 网页原生布局的方法其实网上有很多,大概为Flow(流动布局模型).Float(浮动布局模型).Layer(层级布局模型).<!--more--> Flow布局 流动布局模型其实就是默 ...

  2. vue的data用到this问题

    问题:在vue中用vue-awesome-swiper,在data中初始化,用到swiper一个方法onTap,然后再调vue的一个函数,用到this,可是... data() { return { ...

  3. 关于Sphinx中使用 RealTime Index的问题

    我们有了完整索引和增量索引,为什么还需要研究实时索引? 1.完整索引每个晚上空闲时执行一次,时间较长,但问题不大,因为IO慢,CPU累,但那个时间段基本没有人使用平台,比如凌晨2点. 2.增量索引:目 ...

  4. SEO页面标题Title的优化

    我在一个月前改过页面标题(Title),随后表现是:百度网页快照4天不更新,Google正常.而我仅仅是改了两个词组而已.在建博初期,修改Title的最频繁的时期,下面卢松松就我经历的修改Title过 ...

  5. vConsole ~ 移动开发调试工具

    在开发移动端项目时,有时候在PC端好好的,但是到了手机上出bug,很难调试,这时候可以用vConsole调试工具 使用方式 1.直接引入 <script src="vconsole.m ...

  6. Git----创建远程分支,并将文件上传到创建的远程分支上

    1.首先创建一个远程仓库 2.将远程仓库克隆到本地 (1)本地新建文件夹,命令行进入文件夹,执行clone操作 (2) git clone git@github.com:Lucky-Syw/lucky ...

  7. Mvc全局过滤器与Action排除

    http://blog.csdn.net/shuaihj/article/details/53020428 如何一次性给所有action做登录验证过滤,如何排除不需要做登录验证的action? 1. ...

  8. BZOJ 3261: 最大异或和位置-贪心+可持久化01Trie树

    3261: 最大异或和 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3519  Solved: 1493[Submit][Status][Discu ...

  9. ZOJ 3781 Paint the Grid Reloaded

    枚举,$BFS$,连通块缩点. 可以枚举一开始染哪个位置,然后逐层往外染色,看最多需要多少操作次数,也就是算最短距离.连通块缩点之后可以保证是一个黑白相间的图,且每条边的费用均为$1$,$BFS$即可 ...

  10. JavaScript函数的防抖和节流

    防抖 触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间 思路: 每次触发事件时都取消之前的延时调用方法 function debounce(fn) { let tim ...