FLASH CC 2015 CANVAS (五)loading的制作
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新
AS3的loading一般我们都写在时间轴第一帧,但是FLASH CC CANVAS的导出项目的loading好像有点不一样。
我们来看看导出的文件,其中有个叫 test.js的文件(test名是你fla 的名字,或者你在FLASH IDE中修改过这个导出名字)

我们打开这个test.js 一下就能看到,类似如下的代码:

相信你已经看到了 manifest 这个参数。没错就是他管理着所以需要预加载的内容。这些内容在FLASH CC 发布的时候,会自动写入。
如果manifest没有内容怎么办?那么你肯定没有导入音乐,视频,图片的任意一样。
因为FLASH CC中直接画的矢量图形是以代码的形式存在test.js中,所以他并不会出现在manifest中。(那我怎么做加载?继续往下看)
在第二节 文章末尾,我提到了导出的HTML文件中有handleFileLoad 、handleComplete。也基本明白了 loading 应该在这里制作。
loader._numItems //需要加载的总数量
loader._numItemsLoaded //当前加载到的数量
这里的_numItems就是 manifest 数组的 length
function handleFileLoad(evt) {
if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
//下面,其实就是api了,自己查阅api即可,如果不知道怎么查,还有一个快捷办法就是在flash CC 里面打代码 会有代码提示
console.log(loader._numItems,loader._numItemsLoaded)
}
=========================希望你看到这里没有疲惫,请打起精神下面是重点========================
loading的问题似乎是解决了,但是这个handleFileLoad和handleComplete 都在html的JS中
问题来了:加载进度可以监测了,但是怎么显示呢?
前端开发者可能很容易就想到了解决办法,我自己在HTML里面加一个层 显示这个加载进度就行了,加载完毕移除这个层。so easy!是的,这是一种非常简单实用又靠谱的解决办法。
那么怎么在FLASH 里面显示呢?
我们先看下面的解决办法
step1: 第一帧留空帧, 写代码this.stop(); 场景上再放一个 文件框 命名为 txt
step2: 打开导出的HTML,我们看到加载完成函数如下
function handleComplete(evt) {
exportRoot = new lib.test();
stage = new createjs.Stage(canvas);
stage.addChild(exportRoot);
stage.update();
createjs.Ticker.setFPS(lib.properties.fps);
createjs.Ticker.addEventListener("tick", stage);
}
很显然FLASH CC CANVAS的动画是在加载完毕后 才开始进行初始化的。
所以我们就把这段初始化移动到,function inIt(){/*移动到这里*/}。
修改后如下
function init() {
canvas = document.getElementById("canvas");
images = images||{};
//移动到这里了
exportRoot = new lib.test();
stage = new createjs.Stage(canvas);
stage.addChild(exportRoot);
stage.update();
createjs.Ticker.setFPS(lib.properties.fps);
createjs.Ticker.addEventListener("tick", stage);
loader = new createjs.LoadQueue(false);//注意loader 我声明到全局去了。
loader.installPlugin(createjs.Sound);
loader.addEventListener("fileload", handleFileLoad);
loader.addEventListener("complete", handleComplete);
loader.loadManifest(lib.properties.manifest);
}
然后我们再修改一下 handleFileLoad ,handleComplete
function handleFileLoad(evt) {
exportRoot.txt.text=Math.floor((loader._numItemsLoaded/loader._numItems)*100)+"%";//在flash CC中的txt 文本中显示进度
if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
}
function handleComplete(evt) {
stage.removeChild(exportRoot);//移出我们init时赋值的exporRoot
exportRoot = new lib.test();//加载完毕后重新声明expotRoot
stage.addChild(exportRoot);
exportRoot.gotoAndPlay(1);//跳转到FLASH中的第二帧
}
这样我们就成功的完成了在FLASH CC CANVAS中显示加载进度显示。
这和直接在HTML页面加一个DIV显示文字进度有何区别呢,还要改来改去。
是的,没有区别反而麻烦,但是想你明白了FLASH CC CANVAS导出动画 初始化的逻辑,这为我们后面的学习打下基础。
有的朋友可能已经在边看边自己做的过程中发现,如果这样在FLASH CC CANVAS里做loading 会有两个问题。
1:如果我的动画都是矢量的,导出的 manifest 中没有内容做不了loading。
因为FLASH CC CANVAS中所画(或导入)的矢量图,文本在发布后都是以代码的形式纯在与你的 项目JS(本教程为test.js)中。所以要做loading,就要监听这个JS的加载(具体的我后面讲解)。
2: 如果我的loading 是一段 非矢量 动画,却无法显示。
例如我在FLASH CC 根时间轴第一帧 写this.stop();同时我在第一帧放一个100帧影片剪辑(这个100影片剪辑是由位图制作的动画)。
那么按上面说的办法做加载。发现没有内容显示出来。
原因也很简单,因为我们在inIt()里就立刻对exportRoot进行了赋值。而这个时候这100帧剪辑里面所用的位图,还没有被我们加载,所以就看不到。
所以如果心急的朋友可以先暂时用矢量的动画来制作loading剪辑。位图的loading剪辑,我会在后面讲解。
好了这篇内容 较多,也比较绕,所以就不再写更多内容。后面会对loading 以及FLASH CC 中 LoadQueue 做进一步讲解
FLASH CC 2015 CANVAS (五)loading的制作的更多相关文章
- FLASH CC 2015 CANVAS (四)制作响应式设计(自适应)的项目
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误(如果发现我会更新文章)! 正式教程会在后续开始更新 相信你在看了(第二节)(第三节)之后已经能够满足绝大多数的互动需求了.那么也 ...
- FLASH CC 2015 CANVAS (七)总结
FLASH CC 2015 CANVAS (一至七)确切来说是自己在摸索学习过程中而写.所以定为“开荒教程”. 去年年底转战H5,半年中一直非常忙也不敢用CC来做项目,担心有BUG或者无法实现需求,所 ...
- 《FLASH CC 2015 CANVAS 中文教程》——1、导出canvas动画,文件结构浅析
注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...
- 《FLASH CC 2015 CANVAS 中文教程》——3、this关键字 入门
注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...
- 《FLASH CC 2015 CANVAS 中文教程》——2、基本的交互(点击、触摸)事件
注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...
- FLASH CC 2015 CANVAS (六)如何像FLASH那样实现场景(多canvas)
注意 此系列贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新. swf 项目中,我们可以很容易在一个fla文档里创建多场景.也可以通过多个fla文件发布多个s ...
- FLASH CC 2015 CANVAS (二)html中写JS调用flash中的元件、函数、变量
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 当你导出第一个canvas后,你会在保存fla的文件夹里 (每个项目默认位置)看到 如下文件,(请先 ...
- FLASH CC 2015 CANVAS (三) flash中写JS调用html中JS的函数,变量
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 首先我们在HTML里的JS里面添加几行代码 我们在FLASH中新建一个元件,并拖入到舞台,在属性面板 ...
- FLASH CC 2015 CANVAS 导出音频问题
1,导入音频无法成功发布(软件假死) 解决办法:先用个格式工厂重新压缩 在导入软件 发布 2, 音频 长度小于1秒(左右)的时候,导出后音频会变成 “哧”的一声, 估计和FLASH软件内部的音频编 ...
随机推荐
- scala抽象类抽象字段
package com.test.scala.test /** * 抽象类学习,定义abstact关键字 */ abstract class AbstractClass { val id:Int;// ...
- Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具
每个MVC程序员的军火库中,都有这三个工具:一个依赖注入(DI)容器,一个单元测试框架,一个模拟工具. 1.准备一个示例项目 创建一个ASP.NET MVC Web Application的Empty ...
- linux的lsof命令
删除文件,用命令df -h看磁盘空间,但发现没有变化. 这种情况,需要使用命令查看是不是文件被某个进程占用了: /usr/sbin/lsof |grep deleted
- wordpress网站被挂马以及防御方法
wordpress本身的安全性是非常的高的,一般不会被轻易的破解,被挂马,但是我们也不能够过度迷信wordpress的安全性,凡是连接上互联网的服务器和电脑,都存在被破解的风险性.所以我们在日常维护自 ...
- jquery easyui常见问题:
1.jquery easyui1.4.2 demo在ie10 上加载json的时候没有效果 从官网上下载了jquery easyui1.4.2 里面有个demo文件夹,但是发现底下的demo在IE.3 ...
- cat > 命令也可以创建文档
今天看<Linux/Unix系统编程手册>,发现用cat > 命令也可以直接创建文本文档: cat > testcatcreate.txttesttest [2]+ Stopp ...
- 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 C语言
本程序用C语言编写~~~ 1.计算:本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30 1 v ...
- CRB and String
CRB and String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- Out of Hay
Out of Hay Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13094 Accepted: 5078 Descripti ...
- EasyUI-标签(Tabs)用法
用法示例 创建tabs 1. 经由标记创建Tabs 从标记创建Tabs更容易,我们不需要写任何JavaScript代码.记住把 'easyui-tabs' 类添加到<div/>标记,每个t ...