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的更多相关文章

  1. CreateJS第1章 EaselJS基础 (画图)

    这章学学EaselJS的基本常用API首先下载createjs库,在项目文件里新建一个js文件夹放里面http://code.createjs.com/ 各种形状 var sp = new creat ...

  2. 在线生成二叉树(基于EaselJS(canvas))

    学习二叉树的时候,老在本子上画二叉树好麻烦.其实就想看下树结构.最近html5蛮火的,就用canvas和EaselJS.js(开发flash公司开发的插件)插件实现了个.大家随便用吧. 这是个什么东西 ...

  3. easelJS入门、事件、spritesheet

    easelJS入门.事件.spritesheet <%@ page language="java" contentType="text/html; charset= ...

  4. easelJS 初始入门

    easelJS 初始入门 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. Html5游戏框架createJS组件--EaselJS

    CreateJS库是一款HTML5游戏开发的引擎,是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低HTML5项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验. 掌 ...

  6. Html5游戏框架createJs组件--EaselJS(二)绘图类graphics

    有端友问我是否有文档,有确实有,但没有中文的,只有英文的,先提供浏览地址供大家参考学习createJs英文文档.                        EaselJS其实主要就是createJ ...

  7. Html5游戏框架createJs组件--EaselJS(一)

    现在html5小游戏越来越火爆了,由于公司业务的需要,也开发过几款微信小游戏,用canvas写的没有利用什么框架,发现性能一直不怎么好,所以楼主就只能硬着头皮去学习比较火的Adobe公司出的Creat ...

  8. 1、CreateJS介绍-EaselJS

    需要在html5文件中引入的CreateJS库文件是easeljs-0.7.1.min.js HTML5文件如下: <!DOCTYPE html> <html lang=" ...

  9. canvas 动画库 CreateJs 之 EaselJS(下篇)

    本文来自网易云社区 作者:田亚楠 继承 对应原文:Inheritance 我们可以继承已有的「显示对象」,创建新的自定义类.实现方法有很多种,下面介绍其中之一. 举例:实现一个继承于 Containe ...

随机推荐

  1. 填写信息的文章区域text_area

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...

  2. RSA非对称加密Java实现

    原文 加密基础方法类 import java.security.MessageDigest; import sun.misc.BASE64Decoder; import sun.misc.BASE64 ...

  3. input输入框和 pure框架中的 box-sizing 值问题

    在使用pureCSS框架的时候,遇到一个问题. input输入框,我给他们设置了宽度和padding值,我发现,在火狐和谷歌上面发现,增加padding值并不会影响最终的宽度,而在IE6 7下则会影响 ...

  4. HDU 5166 Missing number 简单数论

    Missing number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) [ ...

  5. CodeForces 605A Sorting Railway Cars

    求一下最长数字连续上升的子序列长度,n-长度就是答案 O(n)可以出解,dp[i]=dp[i-1]+1,然后找到dp数组最大的值. #include<cstdio> #include< ...

  6. bi api 软件

    https://www.interactivebrokers.com.hk/cn/index.php?f=5234&ns=T

  7. psql命令

    原文:http://blog.csdn.net/smstong/article/details/17138355 psql# shell 环境下,查看当前所在的数据库的命令是: select  cur ...

  8. iOS 图片拉伸

    UIImage *img = [UIImage imageNamed:@"CGUnwrapRed_2"]; img = [img stretchableImageWithLeftC ...

  9. python redis list操作

    LPUSH list_name value [value ...] Prepend one or multiple values to a list 从左侧插入值,最早插入的值在最右边 LPUSHX ...

  10. ArcEngine部分工作总结

    Arcengine工作总结地物点查询本部分可以在一个窗体中实现,也可以在两个窗体中实现.由于工作要求本人是在两个窗体中实现的:弹出窗体的名称为FormQuery主窗体单机查询时间的代码FormQuer ...