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] 幻灯片效果实例的更多相关文章

  1. [ActionScript 3.0] 如何获得实例对象的类名及类

    package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.S ...

  2. [ActionScript 3.0] 喷泉效果

    pall为水珠影片剪辑 var count:int = 500; var zl:Number = 0.5; var balls:Array; balls = new Array(); for (var ...

  3. [ActionScript 3.0] 翻牌效果,运用语法rotationY,PerspectiveProjection

    package { import com.tweener.transitions.Tweener; import flash.display.Bitmap; import flash.display. ...

  4. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  5. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

  6. Flash 开发环境搭建和文字滚动效果实例

    Flash 开发环境搭建和文字滚动效果实例 一.Flash 开发环境搭建 Flash发布的时候可以将资源(即将库中的元件)集成到swf运行文件中.Flash没有代码自动输入补全功能,因此需要一个英文一 ...

  7. [ActionScript 3.0] 正则表达式

    正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到 ...

  8. 【jquery】幻灯片效果

    闲着无聊,用Jquery写了一个幻灯片效果. 我这人喜欢造轮子,除了jquery这种有强大开发团队的框架级别JS,其实的一些小程序都是尽量自己写. 一是因为怕出问题了没人问,二是自己写的改起来也方便. ...

  9. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

随机推荐

  1. HDFS设计理念

    [HDFS设计理念] 1. 读取整个数据集的时间延迟比读取第一条记录的延迟更重要. 2. HDFS以高延迟为代价,要求低时间延迟数据访问的应用,不适合在HDFS上运行. 3. namenode决定了集 ...

  2. Oracle的服务端_默认_启动的服务

  3. How To Check Member In Window VS With CplusPlus?

    实例说明 下面这个实例代码, 快速举例了在Win32应用程序下,对于内存的泄漏检查. 其中的原理,目前本人还是不太的理解. 只是记录了使用方法. 以后,看情况,会更新的. #ifdef _WIN32 ...

  4. py学习之FTP

    1.FTP之参数解析与命令分发 a) 层级目录如下 b) 配置文件如下 #!/usr/bin/env python # -*- coding:utf8 -*- import socket sk=soc ...

  5. 前端传递对象列表到WebApi

    public Int64 objectPOC(JObject jsonWrapper) { dynamic jsonValues = jsonWrapper; JArray jsonInput = j ...

  6. Word2007发布博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  7. Java: FreeMarker的配置和使用

    初学什么都不可以忽略的地方就是这个东西的官方网站:http://freemarker.org/.下载或者API都可以参考这里. FreeMarker是什么 非常的简单明了.FreeMarker是一个j ...

  8. 使用Nmap攻击靶机和使用Wireshark进行嗅探、分析

    使用Nmap攻击靶机和使用Wireshark进行嗅探.分析 在上一次课中已经对Nmap的使用.原理已经做了很多学习,这次的课更多地针对Wireshark进行学习和使用. 使用192.168.200.1 ...

  9. Codeforces 766C Mahmoud and a Message 2017-02-21 13:57 62人阅读 评论(0) 收藏

    C. Mahmoud and a Message time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  10. 咏南中间件更新日志--将数据库配置独立成DBCONFIG.EXE

    咏南中间件更新日志--将数据库配置独立成DBCONFIG.EXE.