[ActionScript 3.0] 幻灯片效果实例
package com.fylibs.components.effects
{
import com.fylibs.utils.LoaderQueues;
import com.tweener.transitions.Tweener;
import com.views.LoadingView; import flash.display.Bitmap;
import flash.display.Sprite;
import flash.utils.clearTimeout;
import flash.utils.setTimeout; /**
* @author: Frost.Yen
* @E-mail: 871979853@qq.com
* @create: 2016-4-4 下午10:47:20
* 幻灯片播放
*/
public class SlideShow extends Sprite
{
private var _container:Sprite;
private var _slideWidth:Number;
private var _slideHeight:Number;
private var _timeoutFade:uint;//控制切换图片的setTimeout
private var _intervalFade:Number = 1000 * 5;//5s切换一次
private var _duration:Number = 3;//切换过渡时长
private var _dotBar:Sprite;
private var _hasDot:Boolean;
private var _page:int;
private var _loadingView:LoadingView;
public function SlideShow(w:Number,h:Number,hasDot:Boolean=false)
{
_slideWidth = w;
_slideHeight = h;
_hasDot = hasDot;
initViews();
}
private function initViews():void
{
_dotBar = new Sprite();
_container = new Sprite();
_loadingView = new LoadingView();
this.addChild(_container);
this.addChild(_dotBar); }
public function setSlide(url:Array):void
{
_page = url.length;
_loadingView.addLoading(this,1920,770,0,74);
for(var i:int=0;i<_page;i++){
LoaderQueues.getInstance().addRes(url[i],onSlideLoaded);
}
if(_hasDot){
initDot();
}
} private function onSlideLoaded(bmp:Bitmap):void
{
var sp:Sprite = new Sprite();
bmp.width = _slideWidth;
bmp.height = _slideHeight;
sp.addChild(bmp);
sp.name = "sp_"+_container.numChildren;
_container.addChildAt(sp,0);
if(_container.numChildren == _page){
_loadingView.removeLoading();
control(_container.numChildren - 1);
}
}
/**
* 控制播放内容的渐变轮换
*/
private function fadeControl():void
{
if (_container.numChildren > 1) {
setDotState(int(_container.getChildAt(_container.numChildren - 2).name.split("_")[1]));
Tweener.addTween(_container.getChildAt(_container.numChildren - 1), { alpha:0, time:_duration} );
Tweener.addTween(_container.getChildAt(_container.numChildren - 2), { alpha:1, time:_duration ,onComplete:fadeComplete} );
}
}
/**
* 播放内容轮换渐变结束,设置内容的层次
*/
private function fadeComplete():void
{
control(_container.numChildren - 2); _container.setChildIndex(_container.getChildAt(_container.numChildren - 1), 0); }
/**
* 根据索引去处理图片轮换
* @param id
*/
private function control(id:int):void
{
var obj:Sprite = _container.getChildAt(id) as Sprite;
_timeoutFade = setTimeout(fadeControl, _intervalFade);
}
/**
* 初始化表示页面的小圆点
*/
private function initDot():void
{
disposeDot();
for(var i:int=0;i<_page;i++){
var dot:Sprite = createDot();
dot.x = i*(dot.width+8);
if(i==0){
dot.alpha = 1;
}else{
dot.alpha = 0.5;
}
_dotBar.addChild(dot);
}
_dotBar.x = (_slideWidth-_dotBar.width)*0.5;
_dotBar.y = _slideHeight - 20;
}
/**
* 创建表示页面的小圆点
*/
private function createDot():Sprite
{
var dot:Sprite = new Sprite();
dot.graphics.beginFill(0xffffff,1);
dot.graphics.drawCircle(0,0,5);
dot.graphics.endFill();
return dot;
}
/**
* 移除表示页面的小圆点
*/
private function disposeDot():void
{
while(_dotBar.numChildren){
(_dotBar.getChildAt(0) as Sprite).graphics.clear();
_dotBar.removeChildAt(0);
}
}
/**
* 设置表示页码的小圆点状态
* @param id 小圆点的id
*/
private function setDotState(id:int):void
{
for(var i:int = 0;i<_dotBar.numChildren;i++){
if(id == i){
_dotBar.getChildAt(i).alpha = 1;
}else{
_dotBar.getChildAt(i).alpha = 0.5;
}
}
}
public function stop():void
{
clearTimeout(_timeoutFade);
}
public function play():void
{
_timeoutFade = setTimeout(fadeControl, _intervalFade);
}
}
}
[ActionScript 3.0] 幻灯片效果实例的更多相关文章
- [ActionScript 3.0] 如何获得实例对象的类名及类
package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.S ...
- [ActionScript 3.0] 喷泉效果
pall为水珠影片剪辑 var count:int = 500; var zl:Number = 0.5; var balls:Array; balls = new Array(); for (var ...
- [ActionScript 3.0] 翻牌效果,运用语法rotationY,PerspectiveProjection
package { import com.tweener.transitions.Tweener; import flash.display.Bitmap; import flash.display. ...
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...
- Flash 开发环境搭建和文字滚动效果实例
Flash 开发环境搭建和文字滚动效果实例 一.Flash 开发环境搭建 Flash发布的时候可以将资源(即将库中的元件)集成到swf运行文件中.Flash没有代码自动输入补全功能,因此需要一个英文一 ...
- [ActionScript 3.0] 正则表达式
正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到 ...
- 【jquery】幻灯片效果
闲着无聊,用Jquery写了一个幻灯片效果. 我这人喜欢造轮子,除了jquery这种有强大开发团队的框架级别JS,其实的一些小程序都是尽量自己写. 一是因为怕出问题了没人问,二是自己写的改起来也方便. ...
- [ActionScript 3.0] AS3.0 动态加载显示内容
可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...
随机推荐
- Android开发之通过包管理器获取安装应用信息
最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...
- Vue SPA应用中使用Layer的iframe 弹出层,并且传值
问题来源: BOOS 竟然说喜欢有可移动可最大化的弹出层,这!!! SPA 模式下就是这种引入Vue.js的写法 layer.open({ type: , area: ['840px', '550px ...
- 使用C#进行基于PI的开发
首先欲基于PI-SDK开发PI数据库,必须先安装PI-SDK,然后再VS中新建了一个aspnet网站,添加引用:PI-SDK 1.2 Type Library 和 PISDKCommon 1.2 Ty ...
- 学习C++的50条忠告
1. 把C++当成一门新的语言学习: 2. 看<Thinking In C++>,不要看<C++变成死相>: 3. 看<The C++ Programming Langu ...
- C++中static修饰的静态成员函数、静态数据成员
1.静态成员函数.静态数据成员 在类中,用static修饰的成员函数被称为静态成员函数,而用static修饰的数据成员就称为静态数据成员:与普通的成员函数和数据成员不同, 静态成员函数和静态数据成员有 ...
- python使用git进行版本控制1
首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit pwd命令用于显示当前目录. 如果 ...
- Ian Goodfellow——对抗神经网络之父
争议.流派,有关GAN的一切:Ian Goodfellow Q&A:https://baijiahao.baidu.com/s?id=1595081179447191755&wfr=s ...
- 企业搜索引擎开发之连接器connector(二十)
连接器里面衔接数据源与数据推送对象的是QueryTraverser类对象,该类实现了Traverser接口 /** * Interface presented by a Traverser. Used ...
- 软件项目第一个Sprint评分
第一组 跑男 跑男组他们设计的是极速蜗牛小游戏,他们的界面背景图片做的挺漂亮,现在为止也实现了大部分功能, 但是我没有太听懂他们的游戏规则. 因为蜗牛出发后,每次碰到屏幕边缘后都会有确定的反弹结果,也 ...
- 注解Annotation补充介绍
摘抄http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 什么是注解(Annotation): Annotation(注解)就是Ja ...