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)
}

评论

0条评论

发表评论

电子邮件地址不会被公开。