创建了舞台,创建了一个圆形,然后就想能够通过点击这个圆或是舞台来控制圆的状态,或者定时更新圆的状态来形成动画效果。
createjs的事件和as很像,但是有很大区别。官方没说明白,有没有人告诉,就都是坑啊。幸好有源码,而且js圆满很好看懂,可以自己研究。
作为一个程序员(勉强算得上吧),不善于表达,还是直接上例子:
//创建stage,参数为canvas的id
var stage=new createjs.Stage("gameMain");
//创建一个shape
var circle=new createjs.Shape();
circle.graphics.beginFill("#00ff00");//官网用的"red",颜色设置和html中是一样的
circle.graphics.drawCircle(0,0,40);//可以写成circle.graphics.beginFill("red").drawCircle(0, 0, 40);方法返回对象本身,js里边常用,其他语言不常见,不知道这样好不好。
//设置显示元件的位置
circle.x=circle.y=50;
//添加到显示列表
stage.addChild(circle);
//Update stage will render next frame/需要调用stage的update方法,下一帧刷新时才会更新显示(不知为何要多这个操作,有空研究研究源码)
stage.update();
//circle.addEventListener("click",handlerClick);
function handlerClick(event){
console.log(event);
}
//鼠标事件type类型DisplayObject._MOUSE_EVENTS = ["click","dblclick","mousedown","mouseout","mouseover","pressmove","pressup","rollout","rollover"];
//各种事件的type可以从api的displayObject里边找。和as的api还是有区别的。
circle.addEventListener("pressmove",handlerMove);
console.log(stage);
console.log(circle);
function handlerMove(event){
console.log("====move====");
console.log(event);
}
createjs.Ticker.setFPS(60);//设置频率,相当于帧频。
createjs.Ticker.addEventListener("tick", tick);
var n=0;
function tick(event){
console.log("====tick====");
console.log(event);
stage.update();//需要tick,然后自己update,才能刷新显示。
n++;
if(n>5)createjs.Ticker.removeEventListener("tick", tick);
}
circle.addEventListener("tick",handlerTick);//tick相当于as里边的enterFrame
function handlerTick(event){
console.log("===circle tick====");
console.log(event);
}
需要自己tick,每次tick的时候stage.update(),而且tick就相当于enterFrame。
鼠标事件的type值不太一样,需注意;而且rollover之类的直接侦听是侦听不到的,和as不一样,可以自己试试;具体怎么用,后边会提到。
只试了tick和一些鼠标事件,其他用到再查api吧。没有看到键盘事件。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。