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 ...
随机推荐
- codeforces 665A Buses Between Cities
简单题 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #inc ...
- Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
Eclipse ADT Unexpected exception 'Cannot run program' up vote 8 down vote favorite 4 I have installe ...
- Codeforces Round #367 (Div. 2)D. Vasiliy's Multiset (字典树)
D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input standa ...
- 合并BIN文件的两种方法(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一 ...
- 重启OpenStack服务步骤
[重启neutron服务] 控制节点:service openstack-nova-api restartservice openstack-nova-scheduler restartservice ...
- 浏览器兼容问题 chrome iframe location href
报了个错 var dt2=new Date(d2Arr[0],d2Arr[1],d2Arr[2]); if(dt1>dt2){//比较日期 alert("开始日期不能晚于结束日期!&q ...
- Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- CentOS 7 x64 docker 使用点滴
CentOS 7 安装 docker yum search docker 查看是否 有docker包 yum info docker 版本为1.3.2 yum -y install docker ...
- windows下egret环境搭建
作者:zccst 2,下载安装WebStorm(经了解是西欧捷克开发的,欧洲人对审美不够,所以界面不太好看,但是功能很强大) (1)遇到的问题是注册码问题,不过也很容易在网上找到. (2)如何打开已创 ...
- HttpServletRequest.getServletContext()一直提示找不到,而引出的问题
开发j2ee项目的时候,需要用到servlet-api,如果使用了maven,web项目可以在pom.xml中手动加入所需jar包,达到与依赖j2ee libarary同样的功能.可问题来了: 1. ...