easelJS - Cache_vday
easelJS - Cache_vday
$(function() {
init();
});
// Cache_vday var canvas;
var stage;
var container;
var captureContainers;
var captureIndex; function init(e) { canvas = document.getElementById('demo1');
stage = new createjs.Stage(canvas); var w = canvas.width;
var h = canvas.height; container = new createjs.Container();
stage.addChild(container);
container.name = "cname"; captureContainers = [];
captureIndex = 0; for(var i=0;i<1;i++){ // i<1就看一个的轨迹;但是还是会有多个显示出来;
var heart = new createjs.Shape();
heart.graphics.beginFill(createjs.Graphics.getHSL(Math.random()*30-45,100,50+Math.random()*30));
heart.graphics.moveTo(0,-9).curveTo(0,-20,8,-20).curveTo(16,-20,16,-10).curveTo(16,0,0,12);
heart.graphics.curveTo(-16,0,-16,-10).curveTo(-16,-20,-8,-20).curveTo(0,-20,0,-9);
heart.y = -100; container.addChild(heart);
} var text = new createjs.Text("the longer I'm with you\nthe more I love you","bold 24px Arial","#312");
text.textAlign = "center";
text.x = w/2;
text.y = h/2;
stage.addChild(text); for(i=0;i<100;i++){ // 这个如果i<10,就会看到其轨迹;
var captureContainer = new createjs.Container();
captureContainer.name = "cname"+i; // ADD 设置一个名字;
captureContainer.cache(0,0,w,h); // 缓存的内容是什么东西?
captureContainers.push(captureContainer);
} createjs.Ticker.addEventListener("tick",tick);
createjs.Ticker.setFPS(30);
} function tick(event) {
var w = canvas.width;
var h = canvas.height;
var l = container.getNumChildren();
console.log("container.getNumChildren() is : "+container.getNumChildren());
if(l>1){
console.log("l > 1"); // l始终等于1;为什么界面上面会有两个以上的心形标记?而且心的速度也是一样的;
} // 为什么会有两个以上? 表面上看着是心在动,实际是不停的播放不同的图片container,当heart.y<-50的时候,会重新设置一下heart;
// 每一个heart经过屏幕的时候,被100个container依次给cache了; captureIndex = (captureIndex+1)%captureContainers.length;
console.log("stage.getChildAt(0) is : "+stage.getChildAt(0)); // ADD 看看是什么东西,是Container;
console.log("stage.getNumChildren() is : "+stage.getNumChildren()); // ADD 看看有多少个孩子? 始终是2个孩子;
stage.removeChildAt(0); // 移除了谁?移除了container
var captureContainer = captureContainers[captureIndex];
stage.addChildAt(captureContainer, 0); // 每次都往0位置上面添加?是的;
captureContainer.addChild(container); // 再把container作为孩子加了进来; for(var i=0;i<l;i++){
var heart = container.getChildAt(i);
if(heart.y < -50){ // 第一次重新处理一下坐标;不仅仅执行一次;当y坐标逐渐递减小于-50的时候,就需要重新执行一下;
console.log("this is reset y");
heart._x = Math.random()*w;
heart.y = h*(1+Math.random())+50; // 重新修正y坐标;
heart.perX = (1+Math.random())*h;
heart.offX = Math.random()*h;
heart.ampX = heart.perX*0.1*(0.2+Math.random());
heart.velY = -Math.random()*2-2;
heart.scaleX = heart.scaleY = Math.random()+1;
heart.rotation = Math.random()*40-20;
heart.alpha = Math.random();
}
heart.y += heart.velY; // 每次减少一下y坐标;
heart.x = heart._x+Math.cos((heart.offX+heart.y)/heart.perX*Math.PI*2)*heart.ampX;
} captureContainer.updateCache("source-over"); stage.update(event);
}
easelJS - Cache_vday的更多相关文章
- CreateJS第1章 EaselJS基础 (画图)
这章学学EaselJS的基本常用API首先下载createjs库,在项目文件里新建一个js文件夹放里面http://code.createjs.com/ 各种形状 var sp = new creat ...
- 在线生成二叉树(基于EaselJS(canvas))
学习二叉树的时候,老在本子上画二叉树好麻烦.其实就想看下树结构.最近html5蛮火的,就用canvas和EaselJS.js(开发flash公司开发的插件)插件实现了个.大家随便用吧. 这是个什么东西 ...
- easelJS入门、事件、spritesheet
easelJS入门.事件.spritesheet <%@ page language="java" contentType="text/html; charset= ...
- easelJS 初始入门
easelJS 初始入门 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- Html5游戏框架createJS组件--EaselJS
CreateJS库是一款HTML5游戏开发的引擎,是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低HTML5项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验. 掌 ...
- Html5游戏框架createJs组件--EaselJS(二)绘图类graphics
有端友问我是否有文档,有确实有,但没有中文的,只有英文的,先提供浏览地址供大家参考学习createJs英文文档. EaselJS其实主要就是createJ ...
- Html5游戏框架createJs组件--EaselJS(一)
现在html5小游戏越来越火爆了,由于公司业务的需要,也开发过几款微信小游戏,用canvas写的没有利用什么框架,发现性能一直不怎么好,所以楼主就只能硬着头皮去学习比较火的Adobe公司出的Creat ...
- 1、CreateJS介绍-EaselJS
需要在html5文件中引入的CreateJS库文件是easeljs-0.7.1.min.js HTML5文件如下: <!DOCTYPE html> <html lang=" ...
- canvas 动画库 CreateJs 之 EaselJS(下篇)
本文来自网易云社区 作者:田亚楠 继承 对应原文:Inheritance 我们可以继承已有的「显示对象」,创建新的自定义类.实现方法有很多种,下面介绍其中之一. 举例:实现一个继承于 Containe ...
随机推荐
- FZU 2168 防守阵地 I(前n项和的前n项和)
这是一道很容易超时的题,我超了n次了,后来队友提示我才想到,bigsum ! ! ! !就是前n项和的前n项和 #include<iostream> #include<cstdio& ...
- Java笔记(三)
12. 字符串 String s1 = "abc"; String s2 = new String("abc"); s1在内存中有一个对象:s2在内存中有两个对 ...
- PAT1009
多项式乘法 和多项式加法类似,参考之前多项式加法的代码改改就出来了. 主要是注意一下.最大次数应该会有1000000,然后按照乘法规则来,分配率就没有问题 #include<cstdio> ...
- 给ThinkPHP5增加验证码功能
就在这几天,TP5进行的RC3的大规模更新,虽然我们都狠狠地骂了一百遍,但是我的内心是无比的激动,TP终于走上了"上流社会"的模式:composer! 为什么说composer是上 ...
- ural1553 Caves and Tunnels
Caves and Tunnels Time limit: 3.0 secondMemory limit: 64 MB After landing on Mars surface, scientist ...
- jQuery学习笔记—— .html(),.text()和.val()的使用
本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...
- go get 代理设置
前提: 假设安装好git 我的FQ方式(也可以使用别的方式): 使用 ishadowsocks方式FQ 临时设置Windows下代理: 在控制台执行如下命令,后面的的代理值根据你具体的代理进行设置 s ...
- HttpClient 教程 (二)
第二章 连接管理 HttpClient有一个对连接初始化和终止,还有在活动连接上I/O操作的完整控制.而连接操作的很多方面可以使用一些参数来控制. 2.1 连接参数 这些参数可以影响连接操作: 'ht ...
- EF 报【序列包含一个以上的元素】解决办法
1.检查模型是否存在重复的字段,eg: public class AggregateRoot { public System.Guid Guid { get; set; } } public part ...
- windows矢量字体点阵数据的提取(转)
源:windows矢量字体点阵数据的提取 问题参考:windows api 获取字库点阵的问题 1.提取原理 在windows系统当中提取矢量字体的字模有很多方法,下面介绍一种利用GetGlyphOu ...