stagegl的用法介绍和注意事项
1.新建舞台从stage = new createjs.Stage(canvas);改为 stage = new createjs.StageGL(canvas);
2.设置fps从createjs.Ticker.setFPS(60);改为createjs.Ticker.framerate = 60;
3.矢量对象,滤镜,叠加模式需要cache后才能使用比如:
var shape = new createjs.Shape(); shape.graphics.beginFill("#000000").drawRect(0, 0, 200, 70); var txt =new createjs.Text("COUNT:", "30px Arial", "#ffffff"); var container = new createjs.Container(); stage.addChild(container); container.addChild(shape) container.addChild(txt); container.cache(0,0, 200,70);
直接放入舞台无效!(原理实际上就是webgl只能渲染位图不能渲染矢量,cache可以把矢量对象设置为位图)
4.如果矢量对象,滤镜,叠加模式是变化的那在tick里需要一直cache!(一直cache是很耗性能的,如果需要频繁的大范围的使用cache,那还不如不用stagegl,所以遇到这种时候不要一直cache,使用SpriteSheetBuilder可以很好的解决这个问题)
5.animateCC的对象也是可以在stagegl中显示的,但是不用有矢量,滤镜,叠加模式,遮罩(文字也是矢量哦)
6.如果自适应时需要修改canvas的大小,就必须要调用stage.updateViewport(canvas.width,canvas.height)
(我22禁区那个项目之所以可以不调用,是因为我没有修改canvas的大小,我直接用的是css自适应,如果使用博客里那种自适应是需要调用的)
createjs.Ticker.timingMode = createjs.Ticker.RAF_SYNCHED; createjs.Ticker.framerate = 35; createjs.Ticker.addEventListener("tick", stageBreakHandler); function stageBreakHandler(event) { if(stageWidth!=document.documentElement.clientWidth||stageHeight!= document.documentElement.clientHeight) { resize(); } if(container) container.cache(0,0,stageWidth,stageHeight) stage.update(); } function resize() { stageWidth = document.documentElement.clientWidth; stageHeight = document.documentElement.clientHeight; canvas.width = stageWidth ; canvas.height = stageHeight; stageScale = stageWidth/750; container.scaleX = stageScale; container.scaleY = stageScale; stage.updateViewport(canvas.width,canvas.height) }
支雅
再接再厉